← 返回全部文章
Field guide · 2026年6月10日 · 6 分钟阅读

Claude Fable 5 回退处理实操:怎么发现静默切到 Opus 4.8,并让代理代码处理拒绝

一个 900 分的 Hacker News 讨论把问题说得很直:如果 Fable 5 不再帮你,你也不会知道。默认确实如此,但不是完全无迹可查。下面逐项说明每个渠道会发生什么、代理循环该加哪条分支、哪些地方不能用 `fallbacks`,以及何时不该为 Fable 付钱。

Claude Fable 5 带着安全分类器上线,会检查攻击性网络安全、危险生物/化学、以及能力提取类请求。分类器一触发,你拿到的不是错误。在 Claude Code 这类客户端应用里,请求会被静默改到 Opus 4.8 上重跑。直接调用 API 时,你会收到一个成功的 HTTP 200 响应,但里面是拒绝。Anthropic 说,平均来看这影响不到 5% 的会话;但它自己的评测运行里,20.9% 的尝试触发了这件事。发布后那场讨论把真正的问题说清了:默认情况下,没有任何提示告诉你它发生过。

本文是 Fable 5 判决的配套实操指南:每个行为、每个检测入口、每条决策规则都放在这里。来源在文末。

每个渠道实际发生什么

渠道分类器触发后能看出来吗?
Claude Code(以及客户端应用)请求会自动在 Opus 4.8 上重跑;会话继续截至 6 月 10 日,没有文档说明内置提示
直接调用 Messages API请求被 阻断:HTTP 200,带 stop_reason: "refusal"可以,看下面这些响应字段
直接调用 API 并启用 fallbacks 参数(测试版)自动用你列出的模型重试可以,响应会说明哪个模型回答了

坑在这个不对称上。API 用户可以识别每一次拒绝;应用用户拿到的是静默换模型。如果你为 Fable 5 支付 2× 价格,而且这份工作确实在意模型差异,那么客户端默认行为会让你没法确认最后是谁回答的。

在自己的代理代码里识别拒绝

被阻断的请求是正常响应,不是异常。关键看三个字段:

  • stop_reason 会返回 "refusal",而不是 end_turntool_use
  • stop_details.category 会说明触发了哪个分类器:"cyber""bio""reasoning_extraction"
  • 响应状态是 HTTP 200;只按状态码重试的逻辑永远看不到它。

所有绑定 Fable 5 的代理循环都需要这条分支:

response = client.messages.create(model="claude-fable-5", ...)

if response.stop_reason == "refusal":
    category = response.stop_details.category if response.stop_details else None
    log_fallback(task_id, category)          # count these — see below
    response = client.messages.create(model="claude-opus-4-8", ...)  # your own fallback

如果循环只处理 end_turntool_use,遇到拒绝时通常不会崩溃,而是没有明显错误地停住,常常停在流程中间。先加这条分支,再谈切换模型;不要等第一次静默卡住之后再补。

统计你的回退率。 公开数字从 5%(Anthropic 的平均会话数据)到 20.9%(它自己的 Terminal-Bench 尝试)再到 2%(Artificial Analysis 的独立任务测量)都有。你的代码库会有自己的数字,而这个数字决定这类工作值不值得为 Fable 5 付钱。每次拒绝打一条日志,一周内就能看出趋势。

可选启用的 fallbacks 参数

API 可以替你重试:可选启用的 fallbacks 参数(测试版)列出分类器触发后要切到的模型,响应会报告实际由哪个模型回答。它既自动,也能追踪;这点和客户端应用的行为不同。

按迁移指南,它不支持这些渠道:Message Batches APIAmazon BedrockVertex AIMicrosoft Foundry。在这些渠道里,上面的手动分支是唯一选择。(它支持 Claude APIClaude Platform on AWS。)

计费规则也算清楚了:输出前就被拒绝的请求不计费;如果分类器在流式输出中途触发,只为已经生成的内容付费;同时会有“回退抵扣”(原文: “fallback credit”)退还切换模型时产生的提示词缓存成本。

Claude Code

  • 官方文档很直接地说明了哪些人会遇到它:渗透测试、CTF 练习、生物相关代码库会触发回退,而且常常第一条请求就触发(原文: “often on the first request”)。在 Fable 5 上做安全工作,本质上经常是在用 Fable 5 的价格跑 Opus 4.8
  • 回退目标可以配置:ANTHROPIC_DEFAULT_FABLE_MODEL 会改变 Claude Code 重跑时使用的模型(默认值:Anthropic API 上的 Opus 4.8)。DISABLE_PROMPT_CACHING_FABLE 用于缓存相关调试。
  • 截至 2026 年 6 月 10 日,没有文档说明完成回退后会有提示。如果你的工作必须知道到底由哪个模型回答,目前唯一能追踪的路径是直接调用 API,并处理拒绝分支。

什么时候别再纠缠,直接固定用 Opus

  • 安全或生物相关工作:文档说第一条请求就触发很常见。运行 /model opus,或者在你的测试框架里固定用 claude-opus-4-8,直接省下一半钱。
  • 不能接受运行中途换模型的流水线(评测、对可复现性敏感的运行):要么用拒绝分支让问题明显暴露,要么别用 Fable 5
  • 批量工作负载:没有 fallbacks 支持;但也没有价格溢价,因为通过 Batch API 使用 Fable 5 的价格等于交互式 Opus 4.8。离线工作里,拒绝分支加 50% 批量折扣,是最好的组合。
  • 其他情况:继续用 Fable 5,加分支,记录回退率,让你自己的数字决定。

什么情况会让本文更新

Claude Code 出现有文档说明的回退提示(这是发布讨论里被要求最多的修复);fallbacks 参数正式可用,或者覆盖目前缺失的渠道;5%/20.9%/2% 之外,出现按领域公布的触发率;或者分类器类别发生变化。

配套阅读

来源

  1. Anthropic 文档 —— 介绍 Fable 5Mythos 5(回退设计、分类)
  2. Anthropic 文档 —— 迁移指南(拒绝字段、fallbacks 参数、计费、渠道支持)
  3. Anthropic —— Fable 5 & Mythos 5 系统卡(20.9% Terminal-Bench 拒绝率,第 255 页)
  4. Claude Code 文档 —— 模型配置(触发工作负载、环境变量)
  5. Artificial Analysis —— Fable 5(GDPval 任务上测到 2% 回退)
  6. Hacker News —— “If Claude Fable stops helping you, you’ll never know”

相关阅读


文章独立产出 · 编辑政策

继续阅读 →