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
先决定:原生 BYOK,还是 Claude Agent(ACP)
原生 BYOK 用你自己的 key 直连 Claude API,按 token 计费。Claude Agent 那条路是把 Claude Code 当子进程通过 ACP 跑起来,所以能用 Pro/Max 订阅而不是 API key。今天 Fable 5 在第一条路上稳定可用;第二条取决于你的 bridge 版本。
- 2
BYOK:填入 Anthropic key,并同意数据保留
在 Zed 设置里给 Anthropic provider 填上你的 API key,然后打开 Settings → Privacy,启用 telemetry.anthropic_retention。它默认是关的。Fable 5 上 Anthropic 会保留 30 天推理日志,所以未同意时 Zed 会在补全路径抛一个类型化的、不可重试的错误,而不是把请求发出去。
- 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
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
变通:直接跑 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 的修复已经发了,编辑器侧的选择器改动还没有。我们的状态页记录了最后一次确认可用的情况,带日期。