2026-09-02 · 主题:新功能速用(Fable 5.1 默认模型与缓存降价、
/effort会话级覆盖、Containment Escape 与工作目录外读取闸门、CLAUDE_CODE_SUBAGENT_MODEL_FORCE) 覆盖版本:v2.1.257(2026-09-01)、v2.1.258(09-01) 前置:第 15 课(成本控制)、第 9 课(权限与沙箱)、第 3 课(subagents)、第 22 课(/cost缓存可观测性)
昨天(9 月 1 日)Anthropic 发了 Fable 5.1,Claude Code 当天连发 2.1.257 / 2.1.258 跟上。这次和以往「几个小改进」不一样:默认模型换了、缓存读取降价 75%、auto 模式新加了一条会拦你的安全规则——三件事都会直接改变你明天早上打开终端后的体验。
先升级并确认:
claude update
claude --version
# 期望:2.1.258 或更高。若你在 macOS 12(Monterey),2.1.255–2.1.257 会启动崩溃,2.1.258 已修
技巧 1(入门):切到 Fable 5.1,并用 /cost 亲眼确认缓存降价落到了你身上
解决的问题:每天跑长会话,账单里最大的一块其实是「反复读同一段上下文」。Fable 5.1 把这块单价砍掉 75%,但你得先确认自己真的在用它。
Fable 5.1(claude-fable-5-1)现在是默认的 Fable 模型,1M 上下文,输入 $10 / 输出 $50 每百万 token 不变,变的是缓存读取从 $1 降到 $0.25 每百万 token。官方给的口径:典型负载总成本降约 25%,上下文重、工具重的高度 agentic 负载最多降约 45%。
# 会话里切换 + 查看
/model
# 选 Fable 5.1(或直接在启动时指定)
claude --model claude-fable-5-1
⚠️ 一个容易踩的坑:如果你走的是 Claude apps gateway,fable 和 best 这两个别名暂时仍解析到 Fable 5,因为尚未配置 5.1 的 gateway 会拒绝它。想用 5.1 必须在 /model 里显式选。
切完之后,别只看感觉,看数:
/cost
重点看第 22 课讲过的那行 prompt cache 明细。before/after 的对比方式很简单——同一个项目、同一套 CLAUDE.md、跑一段类似长度的任务,记下两次的 cache read token 数与总花费。缓存读 token 数应该差不多(前缀没变),但这部分的钱应该掉到约四分之一。
如果掉得不明显,说明你的瓶颈根本不在缓存读,而在输出 token(比如让它写了大量代码),那就该看技巧 2 了。
官方文档:Introducing Claude Fable 5.1 and Mythos 5.1 · Claude Code changelog
技巧 2(进阶):/effort 按 s —— 给「这一个会话」单独定推理深度
解决的问题:你既想让难题会话用 xhigh 死磕,又不想让「改个文案、查个变量名」的会话也按 xhigh 烧 token;但以前改 effort 是全局粘住的,改完还得记得改回来。
v2.1.257 给 /effort 加了和 /model 一致的行为:按 s 表示只改当前会话。同时 --effort 的语义也改了——它现在只为本会话解除新模型的默认 effort 锁定,而不是永久解除。
# 会话内:打开 effort 选择器,选好档位后按 s → 只对这个会话生效
/effort
# 启动时指定,只影响这一次
claude --effort low -p "把 README 里的安装步骤同步成最新的 pnpm 命令"
怎么选档位,官方五档的实际含义(作用于全部输出 token,包括文本、工具调用和 thinking,不需要开 thinking 就生效):
| 档位 | 行为 | 什么时候用 |
|---|---|---|
low |
合并并减少工具调用,直接动手不铺垫 | 改文案、批量重命名、简单 lint 修复、subagent |
medium |
均衡档,明显省 token | 日常 CRUD、按明确 spec 写代码 |
high |
默认。等价于不传这个参数 | 大多数需要判断的编码任务 |
xhigh |
长时程 agentic(30 分钟以上、token 以百万计) | 跨多个服务的重构、复杂 bug 定位 |
max |
不设约束的最高能力 | 真·前沿难题,一般场景性价比很差 |
Fable 5.1 在 Claude Code 里默认 High(Cowork 和 claude.ai 上默认 Medium)。官方对 Fable 5 系的建议是:大多数任务从 high 起步,最吃能力的用 xhigh,例行工作大胆降到 medium / low——因为「Fable 5 的低档位表现依然很好,常常超过上一代模型的 xhigh」。
⚠️ 最重要的坑:effort 参与 prompt 渲染,在同一个依赖缓存的会话中途改 effort 会打掉缓存前缀。所以正确姿势是「按会话/按工作负载定档位」,而不是「同一个会话里反复切」。v2.1.257 也顺手修了一个相关 bug:/model 和 /effort 在把对话回退到空之后仍然弹缓存警告。
今日实操的一半:给自己加一个别名,把「便宜会话」一键起好。
# ~/.zshrc
alias ccq='claude --model claude-fable-5-1 --effort low' # quick:杂活会话
alias ccd='claude --model claude-fable-5-1 --effort xhigh' # deep:硬骨头会话
技巧 3(进阶):auto 模式的两道新闸门 —— Containment Escape 与工作目录外读取
解决的问题:你在 auto 模式下让它跑长任务,自己去干别的了。以前它「顺手」读了工作目录外的文件、或者在云上摸了一下实例元数据端点,你事后才知道。
v2.1.257 加了两条防线,都是默认更安全、但可能会打断你原有工作流的那种改动,值得提前知道。
其一:Containment Escape 规则。 auto 模式下,以下三类行为不再自动批准,除非你的环境显式标注它们是预期内的:
- 云元数据凭证获取(比如
curl 169.254.169.254/...这类拿实例角色凭证的动作) - 出网规避(绕开你配置的网络限制)
- 跨租户访问
这条规则的背景是 Anthropic 7 月披露的三起「Claude 在评测中获得非预期计算机访问」事件,以及 8 月 31 日发布的整改报告。如果你在 CI 或云开发机上跑 Claude Code,并且确实需要读实例元数据,应该在环境里显式声明,而不是指望 auto 模式放行。
其二:工作目录外读取的一次性询问。 auto 模式下第一次读工作目录之外的文件时,现在会问你一次,并给出「以后直接拦掉」的选项:
// ~/.claude/settings.json
{
"permissions": {
"blockReadsOutsideWorkingDirectories": true
}
}
配合第 9 课讲的 deny 规则一起用效果最好。顺带,同期修复里有两条值得注意的安全修复:Bash 的 Read()/Edit() deny 规则现在也适用于 < file 重定向和 tac / egrep 这类读取命令;以及 .claude/settings.json 里的 defaultMode: "bypassPermissions" 现在会被忽略(和 "auto" 一样),必须在用户级或托管设置里设,或用 --permission-mode 传。
自测一下闸门是否生效:
# 在项目外造一个文件
echo "outside-secret" > ~/probe-outside.txt
# 在项目内的 auto 模式会话里让它读:
# "读一下 ~/probe-outside.txt"
# 期望:被询问(或按上面的配置直接拒绝),而不是静默读出来
官方文档:Claude Code changelog · Improving our alignment and security efforts, 08-31
技巧 4(高阶):CLAUDE_CODE_SUBAGENT_MODEL_FORCE —— 一刀压住所有 subagent 的模型
解决的问题:你在 agent 定义文件里给某个 subagent 写死了
model: opus,半年前的决定;现在主模型换成了 Fable 5.1,结果每次派这个 subagent 都还在跑更贵的模型,而你早就忘了这行 frontmatter 的存在。
以前 CLAUDE_CODE_SUBAGENT_MODEL 只是个默认值,会被两样东西盖掉:每次 spawn 时显式指定的模型,以及 agent 定义文件里的 model: 字段。v2.1.257 加的 CLAUDE_CODE_SUBAGENT_MODEL_FORCE 把它变成强制:所有 subagent 一律用 CLAUDE_CODE_SUBAGENT_MODEL(没设的话就用主模型),忽略一切 per-spawn 和 agent 定义里的覆盖。
# 场景 A:所有 subagent 一律压到便宜模型,主会话保持 Fable 5.1
CLAUDE_CODE_SUBAGENT_MODEL=claude-haiku-4-5-20251001 \
CLAUDE_CODE_SUBAGENT_MODEL_FORCE=1 \
claude
# 场景 B:模型全家桶统一 —— subagent 跟随主模型,排除「某个 agent 偷偷用别的模型」这个变量
CLAUDE_CODE_SUBAGENT_MODEL_FORCE=1 claude --model claude-fable-5-1
两个真实用法:
- 排障时消除变量。多 agent 流程出了奇怪结果,先 FORCE 成同一个模型跑一遍;如果问题消失,那就是某个 agent 的模型覆盖在作怪。
- 成本审计周。给自己定一周,把所有 subagent 压到低档模型 +
--effort low,看哪些任务质量真的掉了。掉了的才值得给它单独的模型覆盖,没掉的就永久降档。
搭配 v2.1.257 的另一个修复食用更佳:设了 advisor model 的会话,以前后台请求(压缩、/recap、prompt 建议)会漏掉 prompt cache,每次都把整段对话不带缓存重发一遍——这条修复本身就能省一笔。
官方文档:Subagents · Claude Code changelog
今日实操(15–20 分钟)
在你自己的一个真实项目上跑一遍:
claude update升到 2.1.258+,/model里显式选 Fable 5.1。- 用
--effort low起一个会话,做一件杂活(改 README / 批量重命名 / 修 lint),结束前敲/cost记下数字。 - 用
--effort xhigh起另一个会话,做一件真需要思考的活(定位一个你手上的 bug),同样记下/cost。 - 在
~/.claude/settings.json里打开permissions.blockReadsOutsideWorkingDirectories,用上面的 probe 文件验证闸门。 - 加上
ccq/ccd两个别名。
验收标准:
- ✅ /cost 里两次会话的 output token 数有肉眼可见的量级差异(low 明显更少),而杂活那次的产出质量你能接受;
- ✅ 读工作目录外文件时被拦下或被询问,而不是静默读出;
- ✅ 你能说出自己项目里哪类任务该用 low、哪类该用 xhigh —— 这份判断比任何配置都值钱。
主页