2026. 05. 08.  /  TECH  ·  5 min read

跑了Claude Code /doctor,出现了警告

48个技能描述被截断的警告——是什么意思,怎么修复

跑了Claude Code /doctor,出现了警告

想做个诊断,跑了/doctor

结果出来这个:

Skill listing will be truncated
48 descriptions dropped (full descriptions kept for
most-used skills) (3.1%/1% of context): plan-tune,
design-html, qa, +45 more
    run /skills to disable some, or raise
    skillListingBudgetFraction (currently 1%) in
    settings.json

本来想忽略,但——48个被截断了?


这是什么意思

Claude Code每次开始对话时都会把已安装的技能列表加载到上下文中。

但上下文有预算限制,技能多了的话,描述文字就会超出这个预算。

超出的部分会被直接截掉。

我当前的设置只允许全部上下文的1%用于技能列表,技能太多导致48个描述被丢掉了。


修复方案A:提高预算比例

settings.json中提高skillListingBudgetFraction的值。

{
  "skillListingBudgetFraction": 0.03
}

把默认值0.01(1%)调到0.03(3%)左右,被截断的技能描述就能重新加载了。

文件位置:~/.claude/settings.json或项目的.claude/settings.json

注意:这会增加每个会话在技能描述上消耗的token——大约6k token,如/doctor输出所示。如果你经常用很多技能,这个方案更适合。


修复方案B:禁用不用的技能

/skills

运行这个命令会列出已安装的技能,把实际不用的关掉就好。

装了23个gstack技能和若干superpowers,但每天真正用到的可能不到5个。

把不用的关掉更干净——节省上下文,/doctor也不会再报警。


该选哪个?

经常用很多技能 → A(提高预算比例)

装了很多技能但实际只用几个 → B(禁用不用的)

两个都做也没问题。


"most-used skills"是怎么决定的

Claude Code会追踪你实际调用过的技能。

经常使用的技能会在上下文中保留完整描述,很少使用的技能描述会被截掉。

也就是说,截断不是完全随机的——有一定的智能在里面。

但有个陷阱。

新安装的技能,或者很久没用过的技能,描述可能已经被截掉了。

输入/skillname但Claude不认识它——返回类似"没有这个技能"的回复——很可能就是这种情况。

所以在/skills里禁用不用的技能之后,一定要再跑一次/doctor,确认警告已经消失。


实际上怎么确认

按顺序来就行。

  • 运行/doctor → 查看当前截断状态,确认哪些技能被丢掉了
  • 运行/skills → 查看全部已安装技能和当前启用/禁用状态
  • 搞清楚自己实际经常用哪些技能
  • 用开关禁用不用的技能
  • 再次运行/doctor → 验证警告是否消失

settings.json可以存在两个位置:

  • 用户级别:~/.claude/settings.json — 适用于所有项目
  • 项目级别:.claude/settings.json — 只适用于当前项目

两个文件同时存在时,项目设置会覆盖用户设置。修改skillListingBudgetFraction之前,先决定在哪个级别应用——想全局生效就改~/.claude/settings.json,想按项目单独配置就改.claude/settings.json


一句话总结

/doctor的警告不影响运行,但被截断的技能Claude认识不到。

值得确认一下自己实际用到的技能有没有正常加载。

相关文章