Anthropic 工程师 Thariq 文章解读:删掉 80% 系统提示词后,Claude 5 反而更强了
Anthropic 做了一件听起来很疯狂的事。他们把 Claude Code 的系统提示词删了超过 80%。编程评测分数纹丝不动。
发文的是 Thariq Shihipar。Anthropic 技术团队成员,Claude Code 的主力工程师。
一、80% 消失之谜
先看一个数字:超过 80%。
这不是边角料模块的优化。这是 Claude Code 的系统提示词。定义着 Claude「是谁」「能做什么」「不能做什么」的关键指令集。
删完之后,Anthropic 的编程评估没出现可测量的损失。
Thariq 在文章里写道:
我们发现,我们把 Claude Code 约束过头了。不管是系统提示词,还是 CLAUDE.md 文件、skills,都是这样。
他们翻了自己的内部使用记录。发现一个荒唐现象:单次请求里,同时出现多条互相矛盾的指令。
一层说「酌情保留文档」。另一层说「不要添加注释」。系统提示词、skills、用户请求,三方打架。Claude 得先花 reasoning token 解开这些死结,才能开始干活。
那些防止弱模型犯傻的护栏。到了 Claude 5 身上,变成了税。
二、六场范式革命
Thariq 把 Anthropic 内部的经验,总结成六组「过去 → 现在」的转变。
第一场:从规则到判断。旧系统提示词写着「默认不写注释,永远不要写多行注释块」。新版本只有一句话:「写出来的代码要读起来像周围的代码:匹配其注释密度、命名方式和风格习惯。」模型自己读代码库,自己决定。不需要硬禁令。
第二场:从示例到接口设计。以前给 Claude 提供工具调用的完整例子。现在发现,例子反而限制了模型的探索空间。与其写十段示例,不如把工具参数设计好。一个status: pending | in_progress | completed的枚举,比三段英文说明更管用。
第三场:从一次性塞满到渐进式披露。代码审查手册、验证步骤、部署规范。以前全塞进系统提示词,每次启动都加载。现在拆成 skills,只在需要时才拉取。工具也支持「延迟加载」。用到时才查完整定义。
第四场:从重复指令到单次描述。旧模型容易「忘记」前面的内容。同一条规则,要在系统提示词和工具描述里各写一遍。Claude 5 不需要重复提醒。规则只写一次,放在工具自己的描述里。
第五场:从手动记忆到自动记忆。以前,用户得手动按#往 CLAUDE.md 里记偏好。现在 Claude 自动从对话里提取并保存。
第六场:从 Markdown 规格到丰富引用。规格不再只是 Markdown 计划文件。现在能引用 HTML 原型、测试套件、其他代码库的函数,甚至评分标准(rubrics)。让验证 agent 按团队的品味打分。
三、反转:最佳实践如何变成了毒药
六场变化背后,有个更深的逻辑。
被删掉的 80%,不是垃圾代码。它们曾经必要。
旧模型判断力不够。不加硬性约束,会写出错误注释、删错文件、生成不合适的文档。所以 Anthropic 层层加码。「永远不要写注释」「不要创建计划文档」「不要……不要……」
这些「防傻规则」堆了多年,变成一份臃肿的保险单。它们覆盖每一种曾经发生的最坏情况。代价是:
模型还没开始干活,就得先解一堆逻辑矛盾。
写注释,还是不写?留文档,还是不留?每个请求里,都有三四层互相冲突的指令。Claude 花额外的推理 token,判断该听谁的。真正的任务,反而被淹没在噪声里。
这些约束曾经是避免最坏情况的必要手段。但我们发现可以删除其中许多,让模型改为利用周围上下文和自身判断力。
这不是 Anthropic 变懒。是模型变强了。
「防傻」这件事。从提示词的职责,变成了模型内置能力的一部分。
四、CLAUDE.md 减肥指南
Thariq 给的实操建议,要点就四个字:做减法。
系统提示词:定义 Claude 在什么产品里运行。大多数人不用碰。如果你自己搭 agent 框架,这才是最值得花时间的地方。
CLAUDE.md:控制在 200 行以内。只写 Claude 从文件树里看不出来的东西。项目约定里的隐藏坑点。模型读代码就能发现的,删掉。
Skills:长 skill 拆成多个文件。入口要薄,详细内容按需加载。只在犯错代价很大的地方加约束。
References:用@引用 HTML 原型、测试套件。比截图、文字描述精确得多。
Thariq 还提了个自查技巧。搜一下 CLAUDE.md 里的「永远」「一定」「必须」。如果是关于代码风格和工作习惯的绝对规则,考虑改成判断标准。涉及生产数据和安全边界的除外。
在 Claude Code 里跑一次/doctor。它会自动标记冗余规则、互相冲突的指令。
五、更大的问题
Thariq 要说的,不是怎么优化 Claude Code 配置。
他在讲一个更根本的趋势:模型能力每上一个台阶,「告诉模型做什么」和「告诉模型怎么判断」之间的比例,就会重新洗牌。
旧模型时代,上下文工程是防御性的。预判所有可能出错的地方,提前堵住。
Claude 5 时代,上下文工程变成设计性的。给模型足够的上下文信号,让它自己做出正确判断。约束从文字里移出来,进入结构。枚举取代示例。schema 取代禁令。可执行的验证代码,取代写死的检查手册。
这其实和软件工程的演进,是同一件事。
70 年代写 C,malloc/free 手动管内存。后来的语言有了垃圾回收。程序员不用再写「在第三行之后释放这个指针」。约束从代码注释放进了运行时。
写 prompt 的历史,可能也在走同一条路。
那些「永远不要」的绝对禁令,会慢慢被模型内置的判断力取代。剩下的上下文里,存的是模型没法自己推断的东西:品味、坑点认知、对「完成」的定义。
Thariq 原文结尾有一句话,值得钉在显示器旁边:
最强大的上下文越来越不是模型必须服从的文字,而是它可以运行的代码。
小结
Claude 5 的上下文工程新规则,能压成三句话:
少写禁令,多给判断框架。
把复杂的内容拆成按需加载的碎片。
能变成代码的约束,就不要留在文字里。
Anthropic 删了 80% 的系统提示词。不是因为那些内容不重要。是因为模型已经不需要别人替它做决定了。
