内容来源:Scott Keck-Warren。https://scott.keck-warren.com/blog/2026/claude-code-commands-that-get-smarter-every-time-you-use-them/
原题:Claude Code Commands That Get Smarter Every Time You Use Them
原发布时间:2026-05-22
学习如何构建能够自我更新的 Claude Code 自定义命令,让它们在每次运行后积累经验,避免你与 Claude 合作时反复解释同样的事情。
兼容性说明(检查于 2026-07-20):原文使用旧版
.claude/commands/路径,该路径目前仍受支持。Claude Code 当前文档已将 Commands 归并至 Skills;构建新工作流时,请参阅 Skills 参考文档。
操作提醒:允许 Command 或 Skill 更新自身指令,会改变智能体未来的行为。请审查生成的 Diff 并纳入版本控制,不要自动接受积累下来的每条经验。

我在使用 Claude Code 时陷入了一种令人尴尬的循环。我会运行一条命令,Claude 的做法有一点偏差,于是我纠正它;Claude 修好后,我们继续往下。可不到一小时,我再次运行同一条命令时,又会遇到一模一样的问题、做出一模一样的纠正,Claude 也给出一模一样的修复,而我则再次坐在桌前默默叹气。
我花了比愿意承认更长的时间,才想到那个显而易见的问题:为什么同一件事要做不止一次?
Claude Code 自定义命令究竟是什么
如果你还没有在 Claude Code 中使用过自定义斜杠命令,这里先快速介绍一下。只需在项目根目录的 .claude/commands/ 目录中创建一份 Markdown 文件,它就会变成一条可以在 Claude Code 中调用的 /command。
创建 .claude/commands/draft-blog-post.md,你就会获得 /draft-blog-post。文件内容就是运行命令时 Claude 要遵循的指令。无需 Plugin、特殊语法或配置文件,只要 Markdown 即可。
命令可以引用项目文件、接收参数,并处理多步骤工作流。它们就是内置了上下文的可复用提示词,而且作用域限定在当前项目中,不会渗入你与 Claude 完成的其他工作。
问题:Claude 每次都会从头开始
运行一条自定义命令时,Claude 不记得你上一次运行它的经历。它不知道你已经要求它跳过那些泛泛的问题,不知道你喜欢什么风格、不喜欢哪种模式,也不知道“我们这里始终使用 PHP”这件事你已经说过四遍。
所以,你只好再纠正它一次。这并不是 Claude 的错,它确实不知道。但你仍在为已经做过的工作重复付出时间。
解决方案:一个会自行编写的“经验教训”章节
这是我偶然发现的模式:在命令文件底部添加 LESSONS LEARNED 章节,然后加入一条指令,要求 Claude 在每次运行后,把从你的纠正或反馈中学到的新内容更新到该章节。
精简后的版本如下:
# 起草需求文档
询问用户的项目目标、约束条件与时间安排。
根据用户的回答生成结构化需求文档。
运行结束后,更新此文件,把新学到的经验
追加到下方的“经验教训”章节中。
## 经验教训
- 跳过“使用什么编程语言?”这个问题——此项目始终使用 PHP
Claude 完成任务后,你提出修改意见,或确认哪些做法有效。在结束前,它会把这些内容追加到该章节。下次运行命令时,Claude 在开始做任何事之前,就已经能从上下文中看到这些经验。
这条命令会从你的实际使用中自我学习。
一个具体示例
假设你有一条用于起草需求文档的命令。第一次运行时,Claude 会问一连串泛泛的问题:项目名称、语言、框架、时间安排与利益相关者。其中有一半与你的情况毫无关系。
你纠正它:“我们始终使用 PHP 和 Laravel,而且应该先询问部署环境,因为这会影响后续所有环节。”
Claude 记下这条反馈,并在文件末尾追加:
## 经验教训
- 此项目始终使用 PHP 和 Laravel——跳过语言与框架问题
- 首先询问部署环境,然后再问其他问题
- 利益相关者问题不适用于这个团队的工作流
下次运行时,Claude 会预先读到这些经验。它跳过无关问题,并从部署环境开始。你一句话都不用多说。
继续运行、继续给出反馈,经验就会不断累积。每用一次,命令都会变得更精确:噪声更少,有效信息更多。
为什么“它只是一份文本文件”如此重要
这种方法能够生效的原因简单得有些令人不好意思:命令文件只是一份文本文件。Claude 能读取它,也能在得到你的许可后写入。因此,这条命令可以根据你的反馈更新自己的指令。
会话结束时,你的纠正不会随之消失。它们会留在文件中、进入版本控制,并且团队中使用同一条命令的每个人都能看到。队友可以直接向文件添加一条经验,于是这条命令会为所有人变得更聪明。
这个项目中的 /draft-blog-post 命令实际上就是这样运作的。多次运行后,它的 LESSONS LEARNED 章节积累了诸如“绝不要使用长破折号”和“文件路径中的年份应与发布日期一致”等规则。每条规则之所以存在,都是因为我曾经纠正过一次,并决定绝不再纠正第二次(至于文件路径那条规则是怎么来的,你可以问我)。
反馈循环
完整循环如下:
1、运行命令。 Claude 在上下文中带着已有的全部经验完成任务。
2、审查输出。 留意哪些地方有所偏差,哪些做法效果很好。
3、提出纠正意见,或确认应保留的做法。 Claude 会知道以后应该沿用什么。
4、Claude 更新文件。 新经验会追加到相应章节。
5、重复。 每次运行都比上一次更敏锐一点。
命令由此成为一份活的记录,保存着你的偏好、团队约定和工作流中的特殊细节。它不是无人阅读的文档,而是会塑造以后每次运行的活跃上下文。
如何开始
如果你已经在使用 Claude Code,现在就可以尝试:
1、打开 .claude/commands/ 中已有的命令文件(也可以为经常重复的工作新建一个)。
2、在底部添加 LESSONS LEARNED 章节,哪怕一开始内容为空。
3、在文件靠前的位置添加指令,要求 Claude 在每次运行后根据你的反馈更新该章节。
4、运行命令,留意自己需要纠正哪些内容。
5、让 Claude 用学到的经验更新文件。
运行三四次后,你就会感受到变化。重复纠正逐渐消失,命令开始表现得仿佛真的理解你的工作流——因为到了那时,它确实已经理解了。
这总比每次都把同一件事解释到第四遍好得多。