2026 年 7 月 27 日核实

在 Zed 里使用 Claude Fable 5

终端接受的模型,编辑器不一定让你选。这里讲清楚 Zed 在哪里分了岔,以及岔路两边分别该怎么做。

一句话结论

走 Zed 原生 Anthropic provider + 自己的 API key:Fable 5 从 2026 年 6 月 9 日起就在那里了,前提是打开数据保留同意设置。除非你的 bridge 已经是 @agentclientprotocol/claude-agent-acp 0.55.0 或更新版本,否则别走 Claude Agent(ACP)那条路 —— 旧版本会在请求到达 Claude Code 之前就把 claude-fable-5 拒掉。

支持状态

部分支持,2026 年 7 月 27 日核实。Zed PR #58955 于 2026 年 6 月 9 日把 Claude Fable 5 加进了 Anthropic BYOK,并因为 Fable 5 无法在零数据保留(ZDR)下提供,用一个新的 telemetry.anthropic_retention 设置做门槛。Claude Agent(ACP)那条路是另一回事:issue agentclientprotocol/claude-agent-acp#762 记录了 setSessionConfigOption() 会拿 initializationResult.models 校验模型并对 claude-fable-5 抛错,尽管 Claude Code 本身接受这个 ID。该问题在 claude-agent-acp 0.55.0 修复,issue 于 2026 年 7 月 6 日关闭;但让你在选择器里手输任意 model ID 的 Zed 侧 PR #59023,在我们核实当天仍处于 open 状态。

配置步骤

先决定走哪条路,步骤从第一步就分岔。

  1. 1

    先决定:原生 BYOK,还是 Claude Agent(ACP)

    原生 BYOK 用你自己的 key 直连 Claude API,按 token 计费。Claude Agent 那条路是把 Claude Code 当子进程通过 ACP 跑起来,所以能用 Pro/Max 订阅而不是 API key。今天 Fable 5 在第一条路上稳定可用;第二条取决于你的 bridge 版本。

  2. 2

    BYOK:填入 Anthropic key,并同意数据保留

    在 Zed 设置里给 Anthropic provider 填上你的 API key,然后打开 Settings → Privacy,启用 telemetry.anthropic_retention。它默认是关的。Fable 5 上 Anthropic 会保留 30 天推理日志,所以未同意时 Zed 会在补全路径抛一个类型化的、不可重试的错误,而不是把请求发出去。

  3. 3

    BYOK:在模型选择器里选 Claude Fable 5

    同意打开后,Claude Fable 5 会出现在 agent panel 模型选择器的 Anthropic 分组里。如果 Fable 5 拒答,Zed 会透明地回退到 Claude Opus 4.8,面板上会出现带「Switch to Opus 4.8」和「Accept」两个动作的提示条,帮你恢复失败的那一回合,不用重打一遍消息。

  4. 4

    ACP:确认 claude-agent-acp 的版本

    issue #762 的修复落在 @agentclientprotocol/claude-agent-acp 0.55.0,这个版本同时带上了 0.54.1 的 modelOverrides allowlist 修复和拒答回退的同意对话框。用 npx @agentclientprotocol/claude-agent-acp --version 看看你实际用的是哪个版本;如果 Zed 启动的是更旧的内置副本,就在 agent server 配置里把版本 pin 到 0.55.0 或更新。

  5. 5

    变通:直接跑 Claude Code

    如果动不了 bridge 版本,就退到 Zed 的终端里跑 claude --model claude-fable-5。Claude Code 从发布起就接受这个 ID —— issue #762 的报告者验证过,把它透传给 query.setModel() 是能正常工作的。这也是唯一一条不被客户端 allowlist 卡住的路。

下面每一条,都有人为它搭进去一个下午。

  • 你看到的报错不是 model_not_found

    bridge 拒掉 ID 时,你拿到的是一个笼统的 config option 错误,不是 Claude Code 那个干净的 model_not_found。这就是识别信号:对真正不存在的模型(比如 claude-fable-6),Claude Code 会返回带 errorKind: model_not_found 的类型化错误;所以一条含糊的校验信息意味着请求根本没离开你的机器。

  • 零数据保留(ZDR)组织根本用不了 Fable 5

    这是 Anthropic 那边的约束,不是 Zed 的 bug:因为推理日志要保留 30 天,Fable 5 不在 ZDR 下提供。Zed 把这一点实现成了云端补全路径上的硬性、不可重试校验。如果你的组织强制 ZDR,客户端怎么配都没用。

  • 把 model 写进 ~/.claude/settings.json 没用

    另有一个长期存在的 issue(claude-agent-acp#225)记录:bridge 调用 query.supportedModels() 后直接取第一项,完全忽略你 Claude Code 设置文件里的模型偏好。所以那个看起来最顺手的变通 —— 在 Claude Code 读得到的地方设 model —— 在 ACP 这条路上不生效。

  • 选了 Fable,跑的是 Opus

    有用户在 claude-agent-acp 0.44.0 上报告:Fable 出现在 configOptions 里,agent 也把选择原样回显了,但活儿实际是 Opus 4.8 干的。他是靠 ccusage 才发现的 —— 上面没有任何 Fable 消耗,而同一个模型从 Claude CLI 用就有。如果模型选谁对你重要,就别信选择器,去核对用量数据。

成本注意事项

BYOK 是直通计费:输入每百万 token $10,输出每百万 $50,缓存命中的输入读每百万 $1。Zed 的 agent panel 是长会话,一次会话下来 1M 上下文会被慢慢填满,涨上去的是输入成本而不是输出。两项 Zed 特有的开销要盯:拒答后回退到 Opus 4.8 是按 Opus 计费的;会话中途换 effort 或换模型会让 prompt 缓存失效,等于已经发过的上下文要按原价再付一遍。

在提 bug 之前先看一眼当前状态

这一页跟的是个移动靶:bridge 的修复已经发了,编辑器侧的选择器改动还没有。我们的状态页记录了最后一次确认可用的情况,带日期。

常见问题