Claude API 上线消息线程:长对话不用每轮重传历史,首字等待中位数缩短约 35%
先说效果。官方的数字是:Claude Code 现在对大多数用户默认开启这个功能,在 50 万到 100 万 token 的请求里,从发出请求到 Claude 吐出第一个字的等待时间(TTFT,首字时间),中位数缩短约 35%。这个数字是 Anthropic 自己给的,针对的是超长对话,几千 token 的普通聊天不会有这么大差别。
01改动其实只有一处:历史放在服务器上
以前的 Messages API 是“无状态”的,服务器不留任何记录。一个编程 Agent 一次会话可能发几百个请求,每个请求都带着此前所有消息和工具结果。对话越长,每次要传的东西越多,服务器也要把整段内容重新检查、重新切成 token。
消息线程让服务器把对话暂存在内存里。你只要在请求里加一个 thread 参数:
- 第一轮照常发完整对话、系统提示词和工具定义,同时标记“新建线程”(thread 的 type 为 create)。
- 之后每轮只发新消息,并带上上一条回复的 ID(type 为 continue,填 previous_message_id)。这时不要再传 system 和 tools,线程会沿用第一轮的。
- 每次用最新那条回复的 ID 接着往下发。同一个回复 ID 只能接一次,不能从中间分叉。
测试期需要在请求头里加 beta 标记 message-threads-2026-08-12。官方 SDK 里有一个现成的 thread 辅助对象,会替你处理这些参数,也会在线程失效时自动重发完整对话。
02省的是上传,不是钱
官方写得很直白:每个请求变小了,但 Claude 每一轮仍然要读完整段对话,所以 token 用量和以前一样,按标准价格计费,速率限制也不变。想省钱要靠提示词缓存(prompt caching),那是另一个功能,线程不会替你自动打缓存。官方示例里两者是一起用的,在请求顶层加 cache_control 即可。
03线程只活 5 分钟,本地那份记录不能丢
这是用起来最容易踩的一点。线程在最后一次请求后 5 分钟过期,服务器最迟在最后一次使用后 1 小时删除。过期后再发 continue 请求会收到 404,你得拿自己保存的完整对话重新建一个线程。所以官方明确说:你的应用仍然是对话的唯一可靠来源,本地要留一份完整记录。
另外几条限制,写代码前最好先看一遍:
- 线程中途不能改系统提示词和工具;模型、思考设置等也得和第一轮一致,否则返回 400 错误,想改就开新线程。
- 遇到模型拒答(stop_reason 为 refusal)后不要接着用这个线程,要新建一个,并去掉引发拒答的那一轮。
- 不支持批处理(Message Batches)、token 计数接口和按需压缩(compaction),上下文编辑也只支持个别设置。
- 不符合零数据保留(ZDR)和 HIPAA 要求;开了 HIPAA 就绪或推理钩子(Inference hooks)的组织无法使用。
- 没有列出、读取或删除线程的接口。
04谁最该先试
官方点名三类场景:长时间运行的编程 Agent(每次改文件、跑工具都让对话变长)、电脑操作 Agent(截图留在线程里,不用每轮重新上传)、以及文档和图片很多的流程。如果你的应用每次对话只有几轮、历史很短,收益有限,还要多处理线程过期的逻辑,我会先不动它。
这项功能在 Claude API 之外,也已经在 Claude Platform on AWS、Microsoft Foundry 和 Google Cloud 上由 Anthropic 托管的 Claude 模型里开放,目前都是公测状态。


Claude Code
Hy-Memory
Octop