Claude Code 的 /doctor prompt-audit 是这样一条命令:让 Claude 通读你的指令文件(CLAUDE.md、AGENTS.md、技能、命令等),找出已经过时或彼此矛盾的指令,并给出修改建议。它返回的只有一份报告和建议的 diff——在你要求 Claude 应用之前,文件一个字都不会改。输入 /checkup prompt-audit 运行的是完全相同的审查。
本文依据 Claude Code 官方文档原文(How Claude remembers your project 中的“Audit your instruction files”一节,以及 Commands 和 Skills 页面)、CHANGELOG,以及 Claude Code 内置的审查指南,梳理提示词审查到底查什么、怎么用、结果该怎么处理。所有关于规格的说明,均已在 2026年10月3日对照原文核实。第 7、8 章还记录了我们拿本站自己的指令文件实际跑了一遍的结果(9 条发现,采纳 7 条),以及用下来发现的注意事项。
先说结论:/doctor prompt-audit 一览
来源:Claude Code 官方文档“How Claude remembers your project”“Commands”(2026年10月3日核实)
做什么
审查指令文件
查找为旧模型写的措辞、对已不存在的文件或命令的引用,以及相互矛盾的指令。
输出
报告和建议的 diff
不开口就不会改。采纳哪一条,由你逐条决定。
范围
CLAUDE.md、技能等
还包括 AGENTS.md、规则、命令和子代理。传入路径即可只查一处。
版本
v2.1.283 及以上
在会话内输入。与终端里的 claude doctor 不是一回事。
目录
1. /doctor prompt-audit 是什么——找出过时和矛盾的指令
Claude Code 每次启动都会加载 CLAUDE.md 等指令文件。这些文件越用越长,慢慢积攒下为旧模型写的强硬措辞、早已不存在的文件和命令名,以及和另一个文件相互矛盾的规则。/doctor prompt-audit 就是让 Claude 专门去找这些问题的命令。
把官方文档的说明归纳一下:
- 找什么:为旧模型写的指令、对不存在的文件或命令的引用、彼此矛盾的文件。
- 返回什么:发现的问题报告,以及以 diff 形式给出的修改建议。在你要求 Claude 应用之前,文件不会有任何变化。
- 运行方式:通过 Claude Code 内置的
/claude-api技能运行。如果你在设置里关掉了这个技能(用skillOverrides停用,或开启了disableBundledSkills),就无法使用这项审查。 - 版本:Claude Code v2.1.283 及以上。
/checkup prompt-audit是同一条命令。
CHANGELOG 的 v2.1.283 条目新增了 /doctor prompt-audit(以及 /checkup prompt-audit),用来检查 CLAUDE.md、技能、代理和命令中针对旧模型的提示写法。同一版本还改进了审查:把过时的路径、过时的命令和相互矛盾的指令文件排在报告最前面,并保留 Claude Code 官方支持的“think”这类控制思考深度的关键词。
为什么过时的指令会成为问题?内置的审查指南是这样解释的:如今的模型比过去的模型更贴近、更字面地遵循指令。当年为了不让旧模型漏看规则而层层叠加的“CRITICAL”“MUST”,现在用力过猛,导致规则被套用到不需要的场合,模型变得死板。指南明确写道,审查的目的不是把指令变短,而是找出已经不再适合当前模型、当前项目或你其他指令的那些指令。
2. 用法——直接输入即可,用路径缩小范围
在 Claude Code 会话中,直接输入:
/doctor prompt-audit
不带参数时,按官方文档的说法,审查的是以下文件:
| 类型 | 包含的内容 |
|---|---|
| 指令文件 | CLAUDE.md、CLAUDE.local.md、AGENTS.md |
.claude/ 和 ~/.claude/ 下 | 规则、技能、命令、子代理、输出风格 |
如果只想审查某一个文件或文件夹,就传入路径。官方文档中的示例:
/doctor prompt-audit .claude/skills/deploy
根据内置指南,这项审查的设计是中途不停下来提问,一口气跑完。范围以及“以哪个模型为基准来审查”,它会根据你的请求和文件本身自行判断,并把这些前提写在报告开头。前提不对的话,缩小路径再跑一次即可。对于指令文件,基准通常是正在执行审查的那个模型(如果某个技能或子代理指定了自己的模型,就以那个模型为准)。
指南还规定,审查不读取 Claude Code 的设置文件(.claude/settings*.json)和 MCP 配置(.mcp.json),因为里面可能有密钥之类的机密信息。权限和 hooks 的问题不在这项审查的范围内,那是普通 /doctor 的工作(见第 6 章)。
3. 审查把什么判定为“过时”
审查的具体内容写在 Claude Code 内置的指南里(/claude-api 技能中的 prompt-audit 说明)。我们读了 v2.1.286 自带的文件,检查项分为四组。对指令文件来说,起主要作用的是前两组。
| 分组 | 主要检查项 | 示例 |
|---|---|---|
| 1. 过时的提示写法 | 过强的措辞、如今已不需要的思考方式指定、过细的步骤指定、为旧模型缺陷打的补丁残留 | 反复出现的“CRITICAL: you MUST...”、“Think step by step”、用“STEP 1... STEP 2...”去框住需要判断的工作 |
| 2. 脆弱的配置文件 | 不存在的路径和命令、文件之间互相矛盾、写进文件里的事故经过、把一次失误变成永久规则、带日期的条件 | 已删除脚本的名字、两个文件里相反的规则、“因为某月某日这样出过错……” |
| 3. 工具描述 | 在 API 中定义工具时写的描述(太短的描述会被指出需要写得更详细) | 只有一行的描述、描述里写着“必须使用这个工具” |
| 4. API 调用设置 | 在当前模型上会报错或已弃用的参数、会破坏缓存的顺序等 | 只在有应用代码时才适用(只有指令文件的项目不涉及) |
在第 2 组里,指南对“不存在的路径和命令”处理得尤其严格。它会检查指令文件中写的每条路径是否真的存在于项目中、命令和参数是否在脚本或配置中有定义——靠读文件确认,而不执行任何命令。与项目实际内容不符的描述,都会成为“高”置信度的发现。
两个文件互相矛盾时,审查会用 git blame(记录每一行是谁在何时写的)判断哪一方更新,并建议让旧的一方向新的一方看齐。但如果其中一方是禁令或安全规则、修改会让它变松,或者从历史上看不出哪一方更新,指南规定不给修改方案,只作为“需要用户决定的事”报告出来。
4. 不删的东西——这不是“删短一点”的审查
这项审查最让我们欣赏的一点,是指南把不能删的东西明明白白列了出来。它提醒说,什么都砍的审查,恰恰会让认真写指令的人吃亏;因此即便措辞命中了某种模式,下面这些也要保留:
- 只有作者才知道的背景:关于读者、产品和环境的事实、质量标准、约束条件,以及它们背后的理由。指南直言,背景信息从来不是浪费。
- 篇幅本身:不会仅仅因为长就删。造成危害的是过时的指令,而不是数量。
- 脆弱操作的精确步骤:删除命令、认证流程这类只有一种安全做法的工作,可以保持细致的步骤指定。
- 针对至今仍会发生的失败的禁令:只要这种失败在当前模型上仍会重现,规则就保留。
- 运作良好的重复:同样的内容放在两处,只要彼此不矛盾,就只是整理上的偏好问题,不属于审查对象。
反方向也一样。如果补充一条指令对当前模型有帮助,它也会提出补充建议。而且指南写明,什么都没找到时,什么都不改才是正确的结果。
5. 怎么读结果——报告与建议的 diff
结果有两样:审查报告和以 diff 形式给出的修改建议。报告中每条发现都包含六个字段:
| 字段 | 内容 |
|---|---|
| 位置 | 文件名和行号 |
| 证据 | 原样引用有问题的文本 |
| 模式 | 属于第 3 章中的哪种模式 |
| 过时的原因 | 与什么相冲突:当前模型的行为,或项目中实际存在的东西 |
| 置信度 | 高(与官方文档或项目本身矛盾)、中(被广泛观察到的行为)、低(从措辞推断) |
| 处理方式 | 删除、改写(附新文本)、移动(附目标位置)、补充,或仅提示 |
只有高和中置信度的发现才会进入建议的 diff。低置信度的发现只出现在报告里。diff 按每条发现一个片段拆开,所以可以只挑想要的来应用。
应用时,对 Claude 说“应用第 1、3、4 条”之类即可。指南还规定,文件之间的矛盾以及与项目实际不符的文字改写,不会因为“全部清理一下”这种笼统的请求而被应用。任何对仓库有写权限的人,都可能改过较新的那段文字或项目本身,所以设计上默认由人逐条确认。
6. 与 /doctor、/claude-api prompt-audit、claude doctor 的区别
名字相近的东西有四个。按官方文档(Commands 和 Skills)与 CHANGELOG 的说法对比如下:
| 命令 | 做什么 | 会改文件吗 | 版本 |
|---|---|---|---|
/doctor prompt-audit | 审查指令文件(CLAUDE.md、技能等)中过时和矛盾的指令 | 只给报告和建议(要求后才应用) | v2.1.283 及以上 |
/doctor(别名 /checkup) | 环境健康检查(重复安装、PATH、损坏的设置、没在用的技能和 MCP 服务器、慢的 hooks、可用更新),以及删掉 CLAUDE.md 中看代码就知道的内容、把常驻加载的指令移到技能或嵌套 CLAUDE.md 的建议 | 先报告,确认后再修 | (精简 CLAUDE.md 的建议:v2.1.206 及以上) |
/claude-api prompt-audit | 审查基于 Claude API 的应用中的提示词和工具描述,找出针对旧模型的写法 | 给出 diff 建议 | v2.1.221 及以上 |
claude doctor(终端) | 不启动会话,只显示安装状态 | 不改(只读) | — |
容易混淆的是,/doctor 本身也会处理 CLAUDE.md。区别在于目的。/doctor 的方向是减少常驻加载的内容(去掉重复、删掉 Claude 看代码就知道的东西、挪到只在需要时才加载的地方);/doctor prompt-audit 则检查内容是否已经过时、是否自相矛盾。终端里的 claude doctor 不会运行提示词审查。
如果 Claude 不遵守指令的原因是这些指令根本没被加载,这项审查就解决不了。怎么确认加载了什么,我们在《AI 为什么不遵守规则:排查 CLAUDE.md、Cursor Rules 与 AGENTS.md》里讲过;指令文件占用了多少上下文、该怎么测,见《Claude Code 的上下文到底被什么吃掉了》。
7. 实际用了一下——审查本站的 CLAUDE.md 和 AGENTS.md
2026年10月3日,我们对开发本站所用的指令文件运行了 /doctor prompt-audit。运行环境是 Claude Code 桌面应用(内置 Claude Code 2.1.286,模型为 Opus 5.5)。本站的指令文件有两个:AGENTS.md(规则主体,Claude Code 与 Codex 共用)和 CLAUDE.md(导入前者并补充 Claude Code 专属的说明),合计约 10,700 个字符。.claude/ 下没有放任何规则、技能或命令。
运行一次的结果
来源:本站实测(2026年10月3日,对 CLAUDE.md 和 AGENTS.md 运行 /doctor prompt-audit)
发现数
9
核实后采纳
7
未采纳(低置信度)
2
第一个意外是,针对旧模型的提示写法几乎没找到。“一步一步思考”这类指定、逐条的步骤脚本,一个都没有。大部分发现都落在第 3 章的第 2 组(脆弱的配置文件)。
| 置信度 | 条数 | 发现了什么 | 我们怎么处理 |
|---|---|---|---|
| 高 | 1 | 当天新加了两个审查工具,但一处括号注释仍写着“两者”,和新加的两个工具的说明对不上了 | 采纳(改写注释,把新加的工具分开说明) |
| 中 | 5 | 指令文件里残留着带日期和次数的事故记录(与同一文件中“不要在入口文件里堆积事故记录”的规则相矛盾) | 采纳(但没有删除,而是移到了单独的记录文件) |
| 中 | 1 | 标题里的“(CRITICAL)”没有附带理由 | 采纳(去掉了) |
| 低 | 2 | 一份在本地跑不起来的命令清单,以及一个带日期的标题 | 未采纳(两处都有存在的理由,指南也把低置信度定为“仅提示”) |
唯一一条高置信度的发现,是真实存在的偏差。添加审查工具时,我们把名字加进了清单,却忘了改写旁边的说明。每次加载这个文件,Claude 都可能误解“两者”指的是什么,而我们肉眼一直没看出来。
报告里还记录了它确认过指令文件中出现的每一条路径、每一个工具名和每一份被引用的备忘都真实存在。它甚至核对了 PHP 版本(与 Docker 配置一致)和某个流程的步骤数(与另一个文件里的清单一致)。
我们没有照单全收 Claude 给出的 diff,而是逐条对照原文件核实之后才应用。最需要判断的是那 5 条中置信度发现。建议是删除事故记录,但这些记录本身正是防止同样错误再犯的依据,所以我们选择移走而不是删掉。日期和次数已经记在别的文件里的,只从指令文件中拿掉;另外两条在任何地方都没有记录的,则抄进了记录文件。最终,指令文件的总量从约 10,700 个字符只减少了 40 个字符左右。篇幅几乎没变,消失的只有矛盾。
需要注意,这只是在一个项目上跑了一次的结果。审查的文字由模型撰写,对同样的文件再跑一次,发现的条数和措辞都可能不同。.claude/ 下放了大量技能和命令的项目,得到的发现很可能大不一样。
8. 缺点与注意事项
结合实际使用以及官方文档和指南,有五点值得留意:
- 会消耗你的用量额度:Claude 在会话中读取并审查指令文件,和其他工作一样计入用量。官方文档没有提到任何单独计费。
- 不要盲目应用发现:Claude 未必知道某条规则当初为什么写。拿我们这次来说,如果照单接受“删除事故记录”的建议,就会把防止再犯的依据一并丢掉。
- 每次结果不一样:审查由模型撰写,条数和措辞每次都可能变化。别把一次干净的结果当作“这个文件没问题”的证明。
- 不看设置文件:它不读
settings.json和.mcp.json,所以权限、hooks 和 MCP 的问题不会出现在结果里。这些请用/doctor检查。 - 不保证内容正确:它能发现不存在的路径和矛盾,但不判断你的方针本身对不对。方针由你来定。
指南本身也把删除视为假设而不是结论。删掉一条指令后,应当在实际工作中确认,它原本约束的那种行为没有出问题。
9. 什么时候该跑一次提示词审查
指南把提示词看作特定模型的产物:上一代需要的句子,到了下一代就成了累赘,因此它建议每出一个新模型就重新审查一次。按我们的判断,下面三种场合比较合适:
- 换用新一代模型时:看看有没有为旧模型留下的强硬措辞和补丁
- 大幅改写指令文件之后:就像我们这次一样,新加的规则和旧的说明很容易对不上
- 在 Claude Code 和 Codex 等多个工具之间共用指令文件时:更容易发现 AGENTS.md 与 CLAUDE.md 之间的矛盾
反过来,如果你的指令文件很短、几乎不改,就不必急着跑。指南也说,什么都没找到是正确的结果。
总结
/doctor prompt-audit 是一条在你的指令文件(CLAUDE.md、AGENTS.md、技能等)中查找为旧模型写的措辞、不存在的路径和命令以及相互矛盾的规则,然后返回报告和建议 diff的命令。Claude Code v2.1.283 及以上可用,不开口就不会改任何东西。
审查指南把背景、理由以及针对仍会发生的失败的禁令列为“不删的东西”加以保护,避免它变成“删短一点”的审查。我们用本站的指令文件跑了一次,针对旧模型的写法几乎没有,倒是发现了添加规则后忘了改写的说明——一处真实的偏差。
稳妥的做法是逐条对照原文件核实发现,对有理由存在的文字,移走而不是删掉。换模型之后或大改指令文件之后跑一次,能捡回肉眼漏掉的矛盾。
FAQ
Q. /doctor prompt-audit 会自己改写我的 CLAUDE.md 吗?
A. 不会。官方文档说它返回报告和修改建议,在你要求 Claude 应用之前,文件不会有任何变化。即便要应用,也可以逐条选择。
Q. /doctor prompt-audit 和 /checkup prompt-audit 有什么区别?
A. 没有区别。/checkup 是 /doctor 的别名,CHANGELOG 的 v2.1.283 条目也把 /doctor prompt-audit 和 /checkup prompt-audit 写在一起。
Q. 给 Codex 用的 AGENTS.md 也会被审查吗?
A. 会。官方文档在不带参数时的审查对象里,把 AGENTS.md 与 CLAUDE.md、CLAUDE.local.md 并列。如果你两个文件共用,它也很适合用来找两者之间的矛盾。
Q. 输入了命令,审查却没有开始。
A. 先确认版本:/doctor prompt-audit 需要 v2.1.283 及以上。版本够新还是不运行的话,检查一下是否在设置里关掉了内置的 /claude-api 技能(skillOverrides 或 disableBundledSkills)。另外,在终端里输入的 claude doctor 只诊断安装状态,不会运行这项审查。
Q. 能审查我用 API 做的应用的系统提示词吗?
A. 可以,但那要用 /claude-api prompt-audit(v2.1.221 及以上)。它会审查你的提示词、工具描述和调用 API 的代码中针对旧模型的写法,并给出 diff 建议。
参考来源
- Claude Code 官方文档:How Claude remembers your project(“Audit your instruction files”一节)
- Claude Code 官方文档:Commands(
/doctor和/claude-api两行) - Claude Code 官方文档:Skills(内置技能
/claude-api的子命令及所需版本) - Claude Code:CHANGELOG(v2.1.283)
- Claude Code v2.1.286 内置
/claude-api技能中的 prompt-audit 指南(在我们自己的电脑上确认)
以上来源均于 2026年10月3日核对原文。内置指南会随 Claude Code 每个版本更新,因此审查内容可能因版本而异。