原来Claude写代码的超长提示词,删了80%反而更好用
这是来自Anthropic的Thariq的一篇好文——《上下文工程的新规则》,发布在Claude。
Anthropic删除了Claude Code系统提示词中超过80%的内容,结果发现它的代码评估没有受到任何负面影响。
旧提示词很长是有原因的:早期模型需要严格的指导方针来防止文件删除或不专业的评论。
因此团队写下了严格规则,比如禁止编写多行注释块,并且当时他们就认识到这条规则有时会出错。但当新模型已经可以判断局势、自行做决策时,这种权衡就不再合理了。
更糟的是,这些旧规则开始互相冲突:一项技能会告诉模型不要添加注释,但用户恰恰是在询问文档相关内容。Claude仍然能理解你的意思,但它的思考会跑偏去协调指令,而非解决你真正的问题。
修复方案就是删除规则,只描述目标,所以新提示词只要求写出和周围代码风格匹配的代码即可。
这套逻辑随后贯穿了整个上下文设计。此前关于工具使用的最佳实践是给出示例,但现在模型会被迫复制示例,而非自主探索。更好的做法是直接设计工具本身:一个只包含pending、in_progress和completed的状态字段,不需要任何示例就能展示正确用法。
前置加载也被取消了,因为代码审查和验证都被整合到技能中,只在需要时才启用。部分工具会被隐藏,直到代理发现它们,也就是说在需要用到这些工具之前,它们不会占用任何上下文。
重复内容也是同理,现在指令都放在工具描述里,不需要在系统提示词里重复写一遍。你的CLAUDE.md不再需要做成笔记本格式,记忆会自动保存。
保持简洁,把token用在仓库里不那么显眼的陷阱问题上,剩下的都交给技能。最终结果反而得到了更全面的参考:一个测试套件、一个HTML原型或一份评分标准,比一段描述文字传递的信息多得多。
提示词膨胀现在就像技术债务:你为能力较弱的模型搭建的每一个护栏,在能力更强的模型上都会依然成为你的成本。
真正改变的是,上下文工程已经从编写规则,变成了优化模型的阅读能力。
本文由 AI 翻译自英文原帖,技术名词保留英文。
查看 X 原帖