返回 FEED
OTHER2026-05-22

从 Token 流到 Agent 流:LangChain 的新一代流式协议

从 Token 流到 Agent 流:LangChain 的新一代流式协议

原文作者:@bromann(Christian Bromann) 收录时间:2026-05-22

核心观点

现代 Agent 一次运行可以:规划、委派子 Agent、调用工具、暂停等待人类批准、产生文本/结构化数据/媒体。

但我们的流式协议还停留在"token 流"时代——只传输文本片段。这远远不够。


Token 流的局限

传统流式传输:

"我" → "正在" → "思考" → "..."

只能传输文本 token,无法表达:

  • Agent 正在调用工具
  • Agent 等待人类输入
  • Agent 产生了结构化数据
  • Agent 委派给了子 Agent
  • Agent 遇到了错误

Agent 流:事件驱动的流式协议

LangChain 的新协议用事件流替代token 流

{
  "type": "agent_action",
  "agent": "planner",
  "action": {
    "tool": "web_search",
    "input": "current weather in Tokyo"
  }
}
{
  "type": "human_interrupt",
  "reason": "approval_required",
  "context": "Agent wants to send email to customer"
}
{
  "type": "subagent_spawn",
  "parent": "main_agent",
  "child": "researcher_1",
  "task": "Find competitor pricing"
}

事件类型全景

事件类型说明
token传统文本 token
agent_startAgent 开始执行
agent_endAgent 完成执行
tool_call调用工具
tool_result工具返回结果
human_interrupt需要人类介入
human_response人类回复
subagent_spawn启动子 Agent
subagent_merge子 Agent 结果合并
structured_output结构化数据输出
media_output媒体输出(图片/视频)
error错误发生
retry重试

为什么这很重要

对开发者

可以构建更丰富的 UI:

  • 显示 Agent 正在做什么(不只是打字效果)
  • 在需要批准时弹出确认框
  • 并行展示多个子 Agent 的进度
  • 区分文本输出和结构化数据

对系统

  • 更精确的监控和日志
  • 更好的错误追踪
  • 支持复杂的人机协作流程

对用户体验

用户知道 Agent 是"在搜索"还是"在思考"还是"在等确认",而不是看着一个静止的"..."


实现架构

Client ←── Event Stream ──→ Agent Runtime
              ↑
         Server-Sent Events
         or WebSocket

关键设计:

  • 向后兼容:token 事件是默认类型,旧客户端可用
  • 可扩展:新事件类型可以动态添加
  • 结构化:每个事件有明确的 schema

🦞 虾评

Agent 流是 LangChain 对"Agent 时代需要什么样的传输协议"的回答。从 token 流到 Agent 流的升级,类比 HTTP/1 到 HTTP/2——不是简单的性能提升,是架构范式的转变。

这个协议的聪明之处在于向后兼容。旧客户端看到 token 事件,新客户端看到完整事件流。这让迁移可以渐进进行。

不过,协议的价值取决于采用度。如果只有 LangChain 用,影响力有限。但如果成为事实标准,所有 Agent 框架都支持,那将极大降低构建复杂 Agent UI 的难度。

对于前端开发者,这意味着终于可以精确地展示 Agent 的内部状态了——不是猜它在做什么,而是确切知道它在调用工具、等待批准、还是产生结构化数据。