Skip to main content

为什么需要流式

想象 AI 需要 30 秒才能生成完整回答——如果等 30 秒后才一次性显示,用户体验是灾难性的。 流式响应让用户实时看到 AI 的思考过程
  • 文字逐字出现,用户能提前判断方向是否正确
  • 工具调用的参数在生成过程中就能预览
  • 长时间任务不会让用户觉得”卡死了”

流式与工具调用的交织

一次 AI 响应中可能同时包含文字和工具调用。流式系统需要处理这种交织:
AI 开始输出文字 → "我来看看这个文件的内容..."
AI 发出工具调用 → [FileRead: src/main.ts]
           ↓ 暂停流式输出
     工具执行中... 
     结果返回给 AI
           ↓ 恢复流式输出
AI 继续输出 → "这个文件里有一个 bug,第 42 行..."
AI 发出下一个工具调用 → [FileEdit: src/main.ts]

流式工具执行

更进阶的是,工具本身的执行也可以是流式的
  • 运行一个长命令(比如 npm install),输出逐行显示
  • 搜索大型项目时,匹配结果逐条呈现
  • AI 在等待工具结果的同时,已经开始规划下一步

多 Provider 适配

Claude Code 支持多个 AI 服务提供商,每个提供商的流式协议略有不同:
Provider特点
Anthropic Direct原生 SSE 流,延迟最低
AWS Bedrock通过 AWS SDK 包装的流式接口
Google VertexgRPC 流转换为事件流
系统通过统一的事件抽象层屏蔽这些差异——上层代码不需要关心底层用的是哪个 Provider。