本文内容
切换到 Claude Fable 5.2 后,智能体还能接着上次的会话工作吗?
对账智能体查询发票 DEMO-17,财务系统返回 47.50 欧元。答复还没发给用户,新版本部署就重启了工作进程。数据库里有聊天记录,监控也显示查询成功。接手的进程能直接报出金额,省去再查一次发票吗?
对于使用 Claude Messages API 的应用,要看数据库究竟存了什么。助手有时只调用工具,不输出可见文字。如果应用只保存界面上显示的内容,就会漏掉整个助手轮次。新版本若用今天的系统提示词还原昨天的会话,也会改写模型收到的历史。每次演示都新建对话,这两个问题就很难暴露。
资料核对日期为 2026 年 11 月 14 日。我们用模拟数据实际运行了下文的六项本地存储测试。模型行为依据 Anthropic 文档,线上升级与回滚部分则是供你在自己的部署环境中执行的验收方案。若你使用的是命令行编程工具,模型选择和启动参数见 Claude Code 的 Fable 5.2 使用指南。
进程重启后的第一个 API 请求,哪里容易出错?
恢复后的第一个请求会用到两份数据:应用上次保存的会话状态,以及新进程加载的配置。通过 Claude API 同步调用 Fable 5.2 时,如果某个已保留思考块之前的输入变了,API 可能返回 HTTP 400。用全新会话试跑第一轮,不会触发对旧思考块的这项校验。Anthropic 的 Fable 5.2 迁移指南
比如,旧版工具描述是“读取一张已登记发票的总额”,新版在末尾加上“和币种”。即使两个版本返回的数据完全一样,用新的工具定义恢复旧对话,思考块之前的输入也已经不同。原样重试三次,就会把同一处不匹配再提交三次。
前缀校验比较 JSON 解析后的值。空白和对象的键顺序可以变化,数组顺序、历史消息和工具定义会影响校验。仅修改 max_tokens 或 effort 不会导致这种错误。一次编辑可能使编辑位置之后生成的块失效,更早的块有各自的历史。Message Batches 对前缀不匹配另有默认处理方式。Claude API 前缀校验检查哪些输入
恢复会话前,工作进程需要保存哪些数据?
按“下一个请求需要什么”来保存数据。即使界面上没有新文字,也要保存上次成功请求实际使用的系统指令、按原顺序排列的工具定义与消息历史、助手返回的完整内容块数组,以及应用已经拿到的工具结果。Anthropic 关于保存和恢复会话的说明
| 已保存的数据 | 接手进程能确定的事实 |
|---|---|
| 原请求的输入 | 用户查询了 DEMO-17,请求使用了特定的系统指令和工具定义。新进程可以按版本取回它们,或直接加载保存的值。 |
| 助手返回的完整轮次 | 先是一个可见摘要为空的不透明思考块,随后是 ID 为 toolu_demo_17 的查询调用。只导出文字会把两者都丢掉。 |
| 工具结果与回执 | 应用记录了该次调用返回的 47.50 欧元。它可以把原结果交给模型,再用单独保存的回执核对最终答案。 |
| 任务状态 | 发票已查到,答复尚未送达。接手进程可以确定还剩哪一步。 |
模型返回的思考块对应用是不透明的。把它的字段原样存进助手轮次即可,无需提取推理内容或将其写入日志。若工具在客户端执行,紧接着的用户消息应带上对应 tool_use.id 的 tool_result。工具结果应排在该消息最前面,两轮之间不要插入聊天消息。并行调用的每个工具都需要各自匹配的结果。Claude API 返回工具结果的规则
怎样离线测试自己的会话存储?
切换模型前可以先运行可下载的 Python 会话回放检查脚本。脚本只用 Python 3 标准库,无需 API 密钥。发票、工具 ID 和签名字段都是模拟数据,检查的是应用保存和重新加载的值。示例签名只在这份测试数据中充当占位符。
python3 check_replay.py
python3 check_replay.py --emit-fixture > original.json
# 让应用保存 original.json,重启工作进程,
# 再将重新加载的记录导出为 restored.json。
python3 check_replay.py --check-restored restored.json默认运行结果为 6/6 expected outcomes:一条完整记录通过,五条故意改坏的记录均返回预期的错误标签。如果检查器对所有记录都放行,它就过不了这五项反例。把 original.json 直接传回脚本,只能验证示例文件本身。做发布验收时,让这条数据经过真实用户会话所用的数据库、消息队列、SDK 格式转换和重载流程。
| 改动 | 脚本输出 | 应用中应排查的位置 |
|---|---|---|
| 原样恢复,助手没有可见文字 | intact | 即使前端隐藏了空的聊天气泡,存储层也必须保留这个轮次。 |
| 改写系统指令 | changed prefix: system | 工作进程可能用同一个别名取到了新版提示词。 |
| 修改工具描述 | changed prefix: tools | 生成工具定义的代码可能给旧会话载入了当前部署的版本。 |
| 重写早先的请求 | changed prefix: messages | 生成界面摘要时,展示用的文本可能覆盖了原始消息。 |
| 颠倒助手内容块的顺序 | changed assistant turn | 读取数据库记录时未按序号排序,重新组装的数组就可能乱序。 |
| 结果关联了错误的调用 ID | unmatched tool result | 金额本身可能正确,却被挂到了另一笔查询上。 |
脚本会统一 JSON 对象的键顺序,保留数组顺序,比对归档值,并检查调用 ID 与结果的对应关系。这是针对存储完整性的严格比较。它无法鉴别 Anthropic 签名的真伪、复现服务端报错或判断模型能否读取某个块。可按自己的数据结构补充用例,例如并行调用以不同顺序结束,以及工具已返回、回执尚未写入时重启。
同一会话从 5.1 升到 5.2 再回滚,会发生什么?
在 Anthropic 直连 API 上,前面的输入仍然有效时,Fable 5.2 可以读取 Fable 5.1 已保留的思考块。反过来,Fable 5.1 无法读取 5.2 生成的块。回滚时可能返回 HTTP 200,但旧模型继续任务时已无法使用先前的部分推理。应用数据库里仍可存有完整历史。服务端在一次请求中略过某个块,不会改写数据库。切换模型时,保留的思考块如何处理
分开决定新流量和在途会话走哪个模型。新发票可以在创建会话时切换。对于已开始的工作,在会话里记录模型,只要原来的路线仍可用,就让这批任务沿用原模型完成。必须中途切换时,单独记录这个事件,便于追踪。模型路由指南介绍了可以在哪一层作出这个决定。
若旧会话已经无法通过前缀校验,先用最近一次成功请求核对恢复后的系统指令、工具定义和历史消息。能找到完整版本就从该版本恢复。如果原始输入已丢失,把已核实的业务事实交给一个明确标记的新会话。对于 DEMO-17,这些事实包括发票编号、47.50 欧元的查询结果、对应回执,以及答复尚未送达。Anthropic 关于思考块绑定到其他会话的排错指南
上线前该用真实 API 验证哪些场景?
用非生产账号测试,服务商接入方式、SDK 和存储适配器应与待发布的版本一致。每个用例都使用该账号实际获得的助手内容块。为只读工具准备一张金额已知的发票,记录每次调用,再用独立保存的金额与币种核对答案。下面五项是待执行的验收方案。
| 场景 | 操作 | 保留哪些证据 |
|---|---|---|
| 5.2 新会话基线 | 用 claude-fable-5-2 完成一次查询,中途不重启。 | 模型 ID、请求 ID、工具调用次数、最终答复中的 47.50 欧元,以及 token 用量和耗时。 |
| 重启并沿用同一模型 | 保存查询结果后停止进程,由新进程加载记录,继续使用 5.2。 | 答复应与回执一致,工具调用总数应为一次。出现额外查询就单独记录。 |
| 从 5.1 升到 5.2 | 保存 5.1 实际返回的工具调用轮次,带着原始前缀在 5.2 上继续。 | 记录状态码、响应中标明的模型,以及业务结果是否通过核对。若失败,逐项对比存储值和发出的请求。 |
| 从 5.2 回到 5.1 | 用 5.2 实际生成的会话历史,反向切换到 5.1。 | 记录结果、额外调用、token 用量和延迟。单凭答对金额,无法判断旧模型能否读取先前的思考块。 |
| 故意改动前缀 | 复制一份 5.2 实际返回的轮次,在直连同步 API 上只改之前的系统指令,保留受影响的思考块。 | 观察默认前缀错误及进程如何恢复。只记被改动的字段名和请求 ID,无需把整段对话写入日志。 |
可以为该流程设一条验收线:每个通过的用例都须答对金额和币种,只查询一次,不执行写操作。查错发票或重复执行外部操作时,先查清原因再扩大流量。延迟与成本的阈值沿用现有服务目标。监控上应将新建会话和恢复会话分组,否则成千上万个成功的新会话足以掩盖每次重启的失败。发布前的其他核对项见上线前 QA 检查清单。
若流程还能退款,提交后超时意味着账务状态待核实。用这笔退款固定的业务操作 ID 查询下游系统。只有确定原请求已不可能再提交成功,或下游接口明确保证用同一业务操作 ID 重试具有幂等性,才可以再次提交。Claude 的工具调用 ID 能帮你关联会话消息,防止重复退款还需要实际执行退款的系统能够识别同一笔操作。AWS 关于 API 幂等重试的说明 · 发送结果不确定时如何恢复的实例
重试多少次会抵消 Fable 5.2 的 token 价格优势?
按直连 API 标准价,25,000 个未缓存输入 token 加 2,000 个输出 token,5.1 收费 0.35 美元,5.2 收费 0.28 美元。每百万输入/输出 token 单价依次为 10/50 美元和 8/40 美元。算例假设各次用量相同,排除缓存、批处理、工具、基础设施和人工复核费用。Fable 5.2 的规格与价格 · Fable 5.1 的规格与价格
假设 5.1 用 20 次尝试得到 20 个验收通过的答案,模型费用为 7.00 美元。换成 5.2,如果重启和重试使同样的 20 个答案用了 25 次尝试,费用也是 7.00 美元。第 26 次就会推高到 7.28 美元,每个通过的答案平均为 0.364 美元。这是算例。试点时,用所有尝试的实际总成本除以独立核验通过的结果数,失败任务已经发生的支出也应计入分子。
决定是否迁移时,可一起查看三项结果:存下来的轮次能否经受重启?真实模型能否只查一次就答对?每个验收通过的答案花了多少钱?如果团队要为自己的流程建立可反复运行的验收测试,可了解我们的 AI 评估与 LLMOps 服务,或讨论智能体验收方案。
要了解原型进入企业试点时还要准备哪些工作,可以参考Twinsoft AI 项目案例。
