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