44 lines
1.6 KiB
Plaintext
44 lines
1.6 KiB
Plaintext
---
|
||
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。
|