Claude Code 上下文优化:用 /skill-doctor 降低技能成本

Claude Code 上下文优化指南:用 /skill-doctor 找出从未触发却持续占用上下文的技能,区分列表与调用开销,再以 name-only、仅手动调用或停用插件的方式逐级精简。文中给出可回退的审计、测试与恢复流程,帮助团队减少 Token 和使用成本,同时保留部署、安全及事故处理等低频但关键的工作流。

Saturday, September 5, 2026Omid Saffari
Tools
Claude Code 上下文优化:用 /skill-doctor 降低技能成本

现在,你可以看清哪些 Claude Code 技能一直占用上下文,却没有带来实际价值;也能在保留真实工作流所需指令的前提下,收回这些开销。新的 /skill-doctor 报告让 Claude Code 上下文优化不再依赖猜测,而是成为一套可量化、可回退的日常机制。

简而言之:运行 /skill-doctor,按停用后可能造成的影响为每个闲置技能分级,优先采用破坏性最低的可见性调整,再到全新会话中验证效果。不要一上来就删除文件夹。某个技能即使整整一周没有动静,也可能正是保障部署或事故响应安全的关键。

2026 年 9 月 4 日发布的 Claude Code 2.1.261 新增了 /skill-doctor,可以显示已加载却未使用的技能,以及每个技能消耗了多少上下文。这一点很重要,因为每个已列出的技能都会在每轮对话中带上名称,通常还包括描述——即使 Claude 从未调用其完整指令也是如此。

Claude Code 上下文优化:技能成本到底是什么

技能上下文会产生两类开销。混为一谈,很容易误删不该删的内容。

第一类是技能列表开销。在输入任何内容之前,Claude 就会看到可用技能的名称和描述,以便判断哪个技能适合当前请求。Anthropic 默认将这部分内容限制在模型上下文窗口的 1%,并且每个技能的 descriptionwhen_to_use 合计默认最多为 1,536 个字符。

第二类是调用开销。只有当你或 Claude 调用某个技能时,完整的 SKILL.md 正文才会载入。一旦载入,它会在后续轮次中持续留在对话里。压缩对话后,Claude Code 可以为每个已调用技能重新附加最多 5,000 个 Token,所有重新附加的技能合计上限为 25,000 个 Token。

可以把技能列表想成橱窗,把技能正文想成顾客点名后才从仓库送到柜台的货物。每块招牌都会占用街面空间;货物占的地方大得多,但只有被点到时才会送来。

Claude Code 技能上下文的不同层级及其默认上限
技能描述会在每轮对话的列表中出现;完整正文仅在调用时载入,支持文件则可以等到真正需要时再加载。

区分这两类成本,处理方式也会随之改变。未使用且描述很长的技能,会持续产生列表开销;频繁调用但正文庞大的技能,则会带来贯穿整个会话的成本。/skill-doctor 最擅长发现前一种问题,后一种则要靠合理的技能架构解决。

真正的成本按对话轮次累积,而不是按安装次数计算

闲置技能并非只在安装时付出一次成本。随着对话推进,它的列表文本会反复呈现。可以用下面的公式做实用估算:

每天可避免的上下文 = 每轮未使用的技能列表 Token × 每天与 Claude 的对话轮次

例如,如果报告发现 2,000 个 Token 的闲置技能列表上下文,而一天的工作产生 40 个模型轮次,那么当天累计呈现的输入就是 80,000 个 Token。这只是示例,不是基准测试。Prompt 缓存可以降低重复文本的计费费率,却不会让这些上下文本身消失。

对于 API 和云服务商用户,多出的 Token 会直接影响账单;对于订阅用户,它们会消耗套餐额度,也会压缩触发上下文压缩前的可用工作空间。Anthropic 表示,企业部署 Claude Code 的平均成本约为每位开发者每个活跃日 $13、每月 $150 到 $250。技能浪费只是总支出的一部分,但现在至少可以按技能名称单独识别。

真正受影响的不只是模型费用,还有开发者产出。技能列表过于拥挤时,Claude Code 可能会丢弃最少使用技能的描述。这样虽然节省了空间,却也让 Claude 更难自动选中这些技能。

精简、复测与恢复:一套可回退的 Claude Code 技能优化流程

最稳妥的流程包含七个环节。

1. 从当前终端会话开始

升级到 Claude Code 2.1.261 或更高版本,并用 claude --version 核对已安装版本。Anthropic 的参考文档称 /skill-doctor 至少需要 2.1.252,而 2.1.261 是在更新日志中正式公布该命令的版本。

请在承载当前会话的机器终端中运行 /skill-doctor。在交互式会话里,报告会显示在 /plugin 管理器的 Stats 标签页;使用 -p 的非交互模式时,报告会以文本输出,便于保存下来做本地审计。Remote Control 无法返回这份报告。

2. 记录基线

做任何改动前,先保存三项信息:技能列表总成本、占用最大的未使用项,以及准备调整的技能或插件。同时运行 /context 查看应用预算后的 Skills 行,再用 /doctor 找出技能列表中占用最大的项目。

除非已经明确模型、缓存行为和合同费率,否则不要直接把 Token 数量换算成美元。应把 Token 作为稳定的衡量单位,再单独计算费用。

3. 按失效代价给候选项分组

把每个候选项归入下面三类之一:

分类含义默认操作
完全无关不属于当前项目、工具已弃用、技能重复关闭
很少使用但很重要部署、迁移、安全、事故处理保留手动调用能力
有用但过于冗长触发条件正确,但描述或正文太大压缩正文并拆分支持文件

报告到了这里仍需要人工判断。“从未调用”衡量的是频率,不是价值。灭火器可以一直没用过,却依然值得保留。

4. 优先使用破坏性最低的控制方式

对于本地、个人、项目或已同步的技能,/skills 菜单可以向 .claude/settings.local.json 写入可回退的 skillOverrides 配置。

  • 如果 Claude 只需知道技能存在、不必在列表中看到完整描述,使用 name-only
  • 如果希望保留 /skill-name,但绝不允许系统自动选择,使用 user-invocable-only
  • 只有当你和 Claude 都不该看到该技能时,才使用 off
  • 需要恢复原始行为时,使用 on

如果技能由你维护,disable-model-invocation: true 就是可移植的作者级“仅限用户调用”策略。它会从 Claude 的技能列表中移除描述,同时保留直接调用入口。

插件技能的规则不同,skillOverrides 对它们无效。可以用 /plugin disable plugin-name@marketplace-name 停用插件而不卸载,需要恢复时再运行 /plugin enable plugin-name@marketplace-name。插件还可能提供 Agent、Hook、MCP Server 或语言工具,因此关闭前要先检查它包含哪些组件。

可回退的 Claude Code 技能可见性阶梯,以及独立的插件处理分支
每次只调整一级:缩短列表内容、保留手动访问,或彻底关闭技能。插件则使用自己的停用与启用方式。

5. 缩短正文,但不要削弱能力

如果有用的技能正文过大,可以让 SKILL.md 只承担“路由卡”的角色,把详细示例、API 参考资料和边界情况移到支持文件中。Anthropic 建议将 SKILL.md 控制在 500 行以内。支持文件只在 Claude 真正需要时加载,辅助脚本也可以直接执行,无需把源代码放进 Prompt。

把任务定义、触发条件、不可妥协的规则,以及支持文件索引放在靠前位置。这也能保护压缩后的关键信息,因为重新附加技能时,每个技能只会保留最前面的 5,000 个 Token。

6. 在全新会话中测试

修改技能并不会清除当前对话里已经加载的指令。请启动全新会话,运行几条本应触发该技能的 Prompt,再与隐藏技能后的相同 Prompt 对比。先衡量任务是否成功,再看 Token。

Anthropic 建议使用全新会话做对比,因为遗留的编写上下文或技能上下文可能掩盖该技能的真实贡献。如果插件改动需要 /reload-plugins,下一条请求会产生 Token 成本;若插件暴露了非延迟加载的 MCP 工具,还可能需要重建 Prompt 缓存。

7. 恢复误伤项,然后重新审计

如果质量下降,就回退一级:从 off 恢复到 user-invocable-only,从仅用户调用恢复到 name-only,或重新启用已停用的插件。如果质量不变,则保留更精简的配置,并在经历一段有代表性的真实工作后再次运行 /skill-doctor

最后这次复查很关键。目标不是让技能列表越短越好,而是以最低成本保留仍能正确路由日常工作的技能组合。

哪些人能从 Claude Code 上下文优化中获益最多

以下场景按可能产生的经济影响排序。

1. 维护共享 Claude Code 配置的平台团队

平台负责人可以让一组试点开发者导出本地 /skill-doctor 报告,找出那些处处出现、却从不触发的技能,再将可选工作流改为仅用户调用或仅在特定项目中可用。收益会随着每位开发者的每轮对话持续累积,而恢复文件让整个实验可以回退。企业托管技能不在报告范围内,因此这种方法更适合作为本地团队样本,而不是完整的策略审计。

2. 大量使用插件的工程团队

团队可能为一次迁移安装某个插件,此后几个月仍让它的技能、Agent、Hook 和 MCP 工具保持启用。/skill-doctor 能找出近期未使用的插件,插件管理器则可以在不卸载的情况下停用它们。收益不只来自技能描述,因为闲置插件可能带来多个占用上下文的组件。风险也同样不限于技能:停用插件可能同时移除其他有用组件。

3. 在不同客户技术栈之间切换的顾问

顾问可能在全局配置中同时携带前端、数据、电商和基础设施技能,但眼下客户只需要其中一组。他们可以在本地设置中保留具名配置方案,只开放当前相关的一组,并把少用的安全工作流设为仅用户调用。这样每次开始客户项目时都能获得干净的初始上下文,也不用每周一重新搭建整套工具箱。

4. 大型 Monorepo 的维护者

随着 Claude Code 读取更深层的目录,它会发现嵌套技能;这些技能在当前会话余下时间里都会保持可用。Monorepo 维护者可以在跨包任务结束后进行审计,把包专用指令移入对应的嵌套目录,并缩短根目录级别的描述。这样能改善路由:处理后端工作时,不必同时携带一长串前端工作流描述。

5. 拥有低频高风险命令的团队

部署、回滚、数据迁移和事故处理技能可能几周都不会触发。不能仅因为报告将它们标记为未使用就直接删除。把这些技能设为仅手动调用,可以从 Claude 反复出现的技能列表中移除描述,同时保留准确的 /skill-name 应急入口。正常会话占用会因此降低,也不必在紧急情况下重新编写运行手册。

6. 指令中包含大量参考资料的技能作者

技能作者可以先借助报告找到高成本技能,再把冗长示例和规范拆到支持文件中,让主文件变成简洁的决策地图。这样可以延后上下文成本:只有任务走到真正需要细节的分支时,相关内容才会载入。

7. 受订阅额度限制的独立开发者

Pro 和 Max 已将用量包含在订阅中,因此独立开发者未必会看到直接的费用下降。更实际的收益,是在同一额度内完成更多工作,并在压缩前保留更多上下文空间。可以将 /skill-doctor一套干净的 Claude Code 配置结合使用,并在切换到无关任务时清空会话。

三个值得开发的产品

搜索市场比这条新查询表面看起来更大。DataForSEO 显示,claude code skills 在美国每月有 12,100 次搜索,CPC 为 $8.26。围绕降低技能上下文成本的窄关键词没有返回建议,这意味着它更像是成熟技能市场中的新鲜机会,而不是已经成型的独立品类。

1. Skill Budget Guard:最值得做

可以开发一个本地优先的 CLI 和 CI 检查工具,读取仓库技能、可见性设置及导出的 /skill-doctor 报告,然后显示每个 Pull Request 带来的上下文变化。平台团队愿意为此付费,因为它能把单个开发者的清理动作变成可重复执行的团队预算机制。

需求信号非常明确:claude code skills 每月有 12,100 次搜索,CPC 为 $8.26;Anthropic 报告的企业 Claude Code 平均成本则是每位开发者每月 $150 到 $250。最小可售版本需要本地解析器、纳入版本控制的预算文件、GitHub Action,以及“改为仅用户调用”或“拆分参考资料”等可回退建议。

必须正视平台风险。Anthropic 可能继续扩展 /skill-doctor,其 Analytics API 也已经向符合条件的组织免费开放。真正能形成防御力的,是策略历史、跨仓库比较,以及证明上下文缩减并未降低任务成功率的能力。

2. Project Skill Profile Switcher

可以提供 frontenddataincidentrelease 等具名 Profile,一次性应用 skillOverrides 以及插件启用或停用设置,并能用一条命令恢复之前的状态。目标买家是顾问和 Monorepo 团队。

DataForSEO 显示,best claude code skills 每月有 590 次搜索,具备商业意图,CPC 为 $11.91。MVP 需要清单文件、差异预览、安全写入本地设置的能力、插件命令和恢复检查点。问题在于护城河很浅:Claude Code 自带菜单已经提供底层控制,而插件重载还可能产生一轮缓存成本。

3. Skill Outcome Lab

可以开发一个测试运行器,在启用与关闭技能的全新会话中分别发送相同的真实 Prompt,再比较通过率、耗时和 Token 用量。技能作者和企业内部赋能团队愿意为证明一条指令是否配得上其上下文成本而付费。

DataForSEO 显示,claude code skills best practices 每月有 110 次搜索,具备商业意图,页首广告出价为 $4.14 到 $6.01。一个实用的 MVP 需要 Prompt Fixture、预期输出检查、全新会话隔离,以及简洁的前后对比报告。

关键问题也很明确:Anthropic 官方的 skill-creator 插件已经能对比启用和未启用技能的基准测试。因此,这更适合作为 Skill Budget Guard 的一个功能,而不是独立公司。

按搜索需求排序的三个 Claude Code 技能成本产品机会
Skill Budget Guard 在需求、持续团队价值,以及 Anthropic 原生报告之外的发挥空间之间,取得了最佳平衡。

如果团队需要跨产品或 Agent 分发技能,这篇 Notion Skills 与 Claude Skills API 的对比还补充了治理层面的判断依据。

/skill-doctor 解决不了什么

/skill-doctor 是用于定位技能列表浪费的分析工具,并不是完整的 Claude Code 成本优化器。

  • 它不会审计内置技能或企业托管技能。
  • 它无法移除当前对话中已经加载的技能正文。
  • 它不衡量 CLAUDE.md、旧对话历史、模型选择、Thinking Token、冗长工具输出或 MCP 开销。
  • 它无法通过 Remote Control 返回用量报告。
  • 它无法判断某个低频技能是否避免了一次代价高昂的错误。
  • 它不会让缓存后的上下文免费。缓存定价与上下文占用是两个不同问题。

不要先去降低 skillListingBudgetFraction。当技能列表超出预算时,Claude Code 会保留名称,但从最少使用的技能开始丢弃描述。这样虽然能减少列表文本,却会降低正确技能被触发的概率。应该有意识地移除或隐藏低价值条目。

另一个错误做法,是看到插件就立即卸载。先停用、再测试,只有确认插件的其他组件也不需要时才卸载。

下周一就这样做

选一个真实仓库,再找一位高频使用 Claude Code 的开发者。运行 /skill-doctor,记录最大的五个未使用项,然后只调整其中两个:把一项低频工作流设为仅用户调用,再停用一个确实无关的插件。启动全新会话,重复三项日常任务;凡是影响结果的改动,都恢复原状。这样到周五就能得到一套有依据的上下文节省策略,而不是一份看起来更整洁、却悄悄削弱 Agent 能力的配置。

怎样让 Claude Code 少占用上下文?

运行 /skill-doctor 找出未使用的技能列表成本,用 /context 查看整体构成,隐藏无关技能,把低频工作流设为仅用户调用,将冗长参考资料移入支持文件,并在切换无关任务时使用 /clear

怎样降低 Claude Code 成本?

先减少反复出现的上下文,再处理模型选择、过长会话、Thinking 设置、冗长工具输出和闲置 MCP Server。/skill-doctor 只覆盖总成本中的技能部分。

Claude Code 技能是免费的吗?

Anthropic 的技能文档没有为本地 SKILL.md 单列费用,但技能名称和描述可能在每轮对话中消耗上下文,完整正文也会在调用后占用上下文。API 用户按 Token 用量付费;订阅用户则消耗套餐内额度。

怎样压缩 Claude Code 上下文?

如果长任务需要保持连续性,使用 /compact;切换到无关工作时,使用 /clear。对话压缩后,已调用的技能正文可以重新附加,每个技能上限为 5,000 个 Token,合计上限为 25,000 个 Token。

应该清空 Claude Code 上下文吗?

切换到无关任务时,应该清空。测试技能精简效果时,全新会话尤其重要,因为旧对话中已经加载的技能正文可能掩盖停用后的真实影响。

如果你希望为工程团队建立一套可量化的技能治理流程,请了解 AI 生产系统

最近更新

2026年9月5日

分类Build

在 Google 中优先显示本站

将 omidsaffari.com 添加为 Google 搜索的优先来源

把 omidsaffari.com 设为优先来源,Google 会在 Top Stories、AI Overviews 和 AI Mode 中为您优先展示。

更多 Build 文章

查看全部 Build 文章
订阅通讯

每周日,一封信。 写运转中的系统,不写热评。

来自一组 AI 项目组合运营的构建日志、生产系统与一线笔记。

每周一期。无垃圾邮件。随时退订。