streaming.mdx 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. ---
  2. title: "流式响应:逐字呈现"
  3. description: "为什么 Claude Code 的回答是'打字机效果'而不是一整块弹出"
  4. ---
  5. {/* 本章目标:解释流式通信的意义和它如何与工具执行交织 */}
  6. ## 为什么需要流式
  7. 想象 AI 需要 30 秒才能生成完整回答——如果等 30 秒后才一次性显示,用户体验是灾难性的。
  8. 流式响应让用户**实时看到 AI 的思考过程**:
  9. - 文字逐字出现,用户能提前判断方向是否正确
  10. - 工具调用的参数在生成过程中就能预览
  11. - 长时间任务不会让用户觉得"卡死了"
  12. ## 流式与工具调用的交织
  13. 一次 AI 响应中可能同时包含文字和工具调用。流式系统需要处理这种交织:
  14. <Frame caption="流式输出与工具调用的交织时间线">
  15. <img src="/docs/images/streaming-timeline.png" alt="流式响应时间线" />
  16. </Frame>
  17. ## 流式工具执行
  18. 更进阶的是,**工具本身的执行也可以是流式的**:
  19. - 运行一个长命令(比如 `npm install`),输出逐行显示
  20. - 搜索大型项目时,匹配结果逐条呈现
  21. - AI 在等待工具结果的同时,已经开始规划下一步
  22. ## 多 Provider 适配
  23. Claude Code 支持多个 AI 服务提供商,每个提供商的流式协议略有不同:
  24. | Provider | 特点 |
  25. |----------|------|
  26. | Anthropic Direct | 原生 SSE 流,延迟最低 |
  27. | AWS Bedrock | 通过 AWS SDK 包装的流式接口 |
  28. | Google Vertex | gRPC 流转换为事件流 |
  29. 系统通过统一的事件抽象层屏蔽这些差异——上层代码不需要关心底层用的是哪个 Provider。