claude-code/docs/conversation/streaming.mdx
2026-04-01 09:16:41 +08:00

51 lines
1.8 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 响应中可能同时包含文字和工具调用。流式系统需要处理这种交织:
```
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 Vertex | gRPC 流转换为事件流 |
系统通过统一的事件抽象层屏蔽这些差异——上层代码不需要关心底层用的是哪个 Provider。