claude-code/docs/conversation/streaming.mdx
2026-04-01 11:14:20 +08:00

44 lines
1.6 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
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。