AREXOpen in interactive Feed

AREX Feed Article

Anthropic 修复 Claude Code /claude-api 技能:每请求 token 消耗从约 20 万降至约 2.5 万

August 19, 2026

Anthropic 在 Claude Code v2.1.234 中修复了一个"先烧 token 再回答问题"的内置技能。官方更新日志记录,加载内置 /claude-api 技能的上下文成本从约 20 万+ token 降至约 2.5 万 token,做法是把参考文档改为按需加载()。称,这一改动让初始上下文成本至少下降 85.7%;而在此前,开发者只问一行问题,这个技能就会先静默消耗约 20 万 token。

问题在官方修复之前,已经被用户自己测量出来。从 7 月初到 8 月中旬,GitHub 上多个 issue 记录了同一个现象:/claude-api 把整套参考文档内联进上下文,一次触发就吃掉相当于一个 200k 上下文窗口的容量,在窗口较小的模型上甚至直接让会话超限死亡。The New Stack 对此有一句总结:一个捆绑技能消耗的 token,比许多编码会话从头到尾消耗的还多。

一行问题,先烧掉约 20 万 token

/claude-api 是 Claude Code 的内置技能,为使用 Claude API 和 Managed Agents 的开发者加载参考材料。它可以被直接调用,也会在项目导入 Anthropic 的 Python 或 TypeScript SDK 时自动触发。

7 月 5 日,开发者 wh0amibjm 在 中报告:Claude Code 2.1.201 把 570,113 个字符(约 21 万 token)的 SKILL.md 作为单条消息整体注入会话。他问了一个随口的问题("Sonnet 5 和 Opus 4.8 哪个工具调用错误率更低"),会话上下文就从约 4.5 万 token 涨到约 25.6 万 token。API 用量记录显示,技能加载后首个请求的 cache_creation_input_tokens 从 13,980 跳到 210,658:约 21 万 token 以缓存写入计费,并在之后每一轮对话里继续占着窗口。

两天后, 给出了更细的测量:单次调用内联了全部 shared/*.md 参考文件和语言检测到的文档,约 12 万 token;其中 model-migration.md 一个文件就约 3.6 万 token,磁盘上的整个参考语料约 828K。报告者 nitsanavni 的结论是:问一行问题("how are Fable limits handled"),Claude 开始回答之前就要消耗约 20 万 token 的上下文。

这个 issue 当天被以"重复"为由关闭(指向 #74473),但相关报告没有停止。#74473 一直保持 open,此后数周不断有新的 issue 被挂到它名下,包括 #70062、#74621、#79457、#81132、#83557、#83818、#87191 等。

检测不到语言,八种文档全量进上下文

8 月 4 日,开发者 bengous 提交的 展示了另一种昂贵的触发方式,而且是一次"正确"的调用。他的自定义斜杠命令委托 /claude-api prompt-audit 审计提示词,技能本来就该加载;但 prompt-audit 是语言无关的子命令,技能自己的说明文字都写着"审计是非交互的,清单与语言无关",结果这一次工具调用还是把 C#、cURL、Go、Java、PHP、Python、Ruby、TypeScript 八个语言文档连同 26 个 shared/*.md 文件全部注入了上下文。

bengous 在 2.1.221 的磁盘 bundle 上做了测量:整个技能目录 812,650 字节,而这个子命令真正需要在开始时加载的只有 shared/prompt-audit.md 一个文件,32,954 字节。按字节算,实际有用的约 4%,全部内联就是约 20 万 token。他还发现,语言检测失败的路径会生成指向不存在文件的死引用:组装出来的正文让模型去读 unknown/claude-api/README.md 和 unknown/claude-api/streaming.md,而 bundle 里根本没有 unknown/ 目录。

同样的场景更早出现过。7 月 9 日,一位用户(martin-swe-fs)在 #74473 的评论里复现:2.1.205 在检测不到项目语言时把八种语言文档全部展开,产生一条 788,744 字节(约 20 万 token)的消息,直接撑爆 claude-haiku-4-5 的 200k 窗口,API 返回 "Prompt is too long",auto-compact 也救不回来,/context 显示 258k/200k(129%)。

开销是静默的:技能正文跨轮次常驻

这个问题的隐蔽性在于,开销发生在开发者视线之外。The New Stack 援引 Claude Code 文档指出,技能正文一旦加载就跨轮次保持在上下文中,而开发者通常只看到小得多的请求和响应。Anthropic 自己的 Claude Code 最佳实践指南也警告:窗口越满,模型越容易丢失早期指令或犯错。

技能内容因此成为每次请求都要继续占用窗口的固定开销,在企业规模下变成每个会话、每个开发者都在背负的继承性问题。The New Stack 指出,这类开销和生产 AI 管线中的隐藏成本一样,只有真正去测量才会浮现。

按需读取省 token,多付一次文件读取

修复落在 v2.1.234。官方 CHANGELOG.md 在该版本条目下写着:"Reduced the context cost of loading the built-in claude-api skill from ~200k+ tokens to ~25k by loading reference docs on demand"(将内置 claude-api 技能的加载上下文成本从约 20 万+ token 降至约 2.5 万 token,通过按需加载参考文档)。The New Stack 称,该条目于周一(8 月 17 日)出现在更新日志中。

Anthropic 的技能文档本就要求:SKILL.md 只包含核心指令和链接,API 规格、示例等细节放在支持文件里、由 Claude 需要时再打开。加载分三个阶段:始终存在的少量元数据、技能触发时加载的 SKILL.md 正文、任务过程中拉取的捆绑资源。旧版 /claude-api 把后两个阶段混在一起,技能一运行,全部参考材料就位。

按需加载的代价是时间:Claude 可能在识别出相关的语言或 API 特性后多读一次文件,但只为与任务相关的材料付这笔成本。The New Stack 的评价是,砍到约 2.5 万 token 后,给仓库和实际工作留出了大得多的空间。Anthropic 没有解释 Claude 如何决定加载哪些文档,只说参考材料现在按需拉取。

报告者验证修复,自己关闭了 issue

最有分量的确认来自当初提交报告的人。8 月 17 日,bengous 在 #83818 下留言 "Fixed in 2.1.234" 并关闭了 issue。他说,发布说明与他的报告完全吻合,他验证了 prompt-audit 不再内联整个捆绑包,失效的 unknown/claude-api/... 路径也已消失。

The New Stack 记者 Amanda Caswell 在 8 月 18 日的报道中确认了这一修复,并给出降幅口径:初始上下文成本至少下降 85.7%。该媒体在文末披露,母公司 Insight Partners 是 Anthropic 的投资方。

修复后,每次请求仍然要支付约 2.5 万 token 的初始上下文,只是从"一次吃掉约 20 万"变成"约 2.5 万"。The New Stack 的判断是,随着 agentic 工作流让 token 成本成为 AI 预算中增长最快的项目,这种只为任务相关材料付成本的做法会越来越重要;而 Anthropic 没有解释 Claude 如何选择要加载的文档,"按需"的具体取舍规则仍然没有公开。

参考链接