Claude Code /skill-doctor 诊断命令上手指南

Claude Code 2.1.261 新增 /skill-doctor 命令,可以列出当前加载的所有 skill 的上下文占用和使用情况,帮你清理占位不干活的 skill。

Claude Code /skill-doctor 诊断命令上手指南

装了一堆 skill 却不知道哪些真的在用?Claude Code 2.1.261 加了一个 /skill-doctor 命令,直接告诉你每个 skill 占了多少上下文、会话里有没有被调用过。

作者CodePass 技术编辑

skill 怎么吃上下文的

skill 的正文是按需加载的,但它的名称和描述始终驻留在 prompt 的 skill 列表区里。这个列表区有预算上限,默认是上下文窗口的 1%。比如 100 万 token 的窗口,skill 列表最多占 1 万 token。

当你装的 skill 太多,列表区放不下时,Claude Code 会按优先级裁切,最近没用过的 skill 先被挤出去。问题在于:被挤掉的 skill 你看不见提示,只是默默失效。/skill-doctor 就是来暴露这个黑箱的。

运行 /skill-doctor

在 Claude Code 会话里输入:

/skill-doctor

输出会列出所有当前加载的 skill,包括每个 skill 的名称、描述占用的 token 数、以及在当前会话里是否被使用过。没被使用的 skill 会被标记为剪枝候选。

报告给你数据来做判断,不用把所有未使用的 skill 都删掉。一个 skill 在本次会话没用到,不代表它没用,可能下一个任务就需要。但如果某个 skill 连续多个会话都没触发过,占位成本就值得考虑。

清理还是调参

如果 /skill-doctor 显示每个 skill 都有用,但列表空间不够,可以调高预算而不是删 skill。有三个参数:

skillListingBudgetFraction 控制列表区占上下文的比例,默认 0.01(1%),可以设到 0.02。SLASH_COMMAND_TOOL_CHAR_BUDGET 以字符数为单位设固定上限。skillListingMaxDescChars 控制单个 skill 描述的最大长度,默认 1536 字符。

调完后用 /context 命令看 Skills 行,确认列表大小是否变化。从 v2.1.196 开始 /context 显示的是裁切后的实际大小,不是原始总量。

同一版本的其他上下文相关更新

2.1.261 还加了两个输出限制参数:bashOutputMaxCharstaskOutputMaxChars,可以把命令输出和后台任务输出的内联显示上限调到 128K 字符。之前超长输出会被截断存到文件里,调高这两个参数可以让 Claude 直接看到更多命令输出,减少"去读文件"的额外步骤。

另外 --append-subagent-system-prompt-file 允许从文件读取子 Agent 的 system prompt,适合 prompt 太长放不进命令行参数的场景。

skill 的清理和配置管理可以一起做,不同项目用不同的 skill 集合,避免全局加载所有 skill。结合 Claude Code cc-switch 多配置切换里的配置管理思路,按项目隔离 skill 加载列表。

参考资料