Anthropic 砍掉 Claude Code 八成系统提示词,给出六条新的上下文写法

规则换判断、示例换接口;一个工具描述从约 9100 字符压到一句话加一个枚举
作者:Thariq / Anthropic07-25 · 10 分钟⚑ 方法教程
🎧 听播客版0:00 / --:--
0:00 / --:--
工具教程 · 小互解读
一分钟速览
  • 你在 CLAUDE.md 和技能里写的那些「绝对不要」,现在很可能在拖后腿:Anthropic 把 Claude Code 的系统提示词删掉了八成以上,编程评测上没测出损失
  • 以前写死规则是因为老模型判断力不够,明知道规则对一部分场景是错的也得认。现在那条「默认不写注释」被换成了一句引导:写出来的代码要像它周围的代码
  • 多加一条约束不是免费的:系统提示词说「按需要留文档」、技能说「不要加注释」、你说「照旧的那样弄」,这三句能同时出现在一次请求里,Claude 得先把矛盾调和掉才动手
  • TodoWrite 的工具描述从约 9100 字符压到一句话加一个三值枚举加一条约束;想给自己的技能和 CLAUDE.md 瘦身,在会话里跑 /doctor
⚑ 材料来自 Anthropic 的 Thariq 讲自家产品的改造过程。「删掉 80% 以上」「编程评测无可测损失」是他们自己的口径,原文没有公开是按字符还是按 token 算、也没列出具体是哪些评测。文中那张冲突指令图,Anthropic 自己标注了是示意例子,并非真实提示词原话。
1 一个反直觉的数

他们把 Claude Code 的系统提示词删掉了八成

Anthropic 技术团队成员 Thariq Shihipar(@trq212)在 X 上发了一篇长文,讲他们最近对 Claude Code 做的一件事:针对 Opus 5 和 Fable 5 这代新模型,把系统提示词删掉了 80% 以上。编程评测上,没测出损失。

Claude Code 的系统提示词
删掉的部分:写死的禁令、重复的叮嘱、用不上时也占着位置的流程说明(本站按文中六条替换归纳)
留下
删减比例按原文口径「over 80%」示意,Anthropic 未公开是按字符还是按 token 计。

先说清楚被删的是什么。你给 Claude 发一句话,它读到的远不止这句话:系统提示词、你装的技能、项目里的 CLAUDE.md、它自己存的记忆、你 @ 进来的文件,全部拼成一大块送进去,你打的那行字只占其中一小条。管这一大堆东西怎么组织、什么时候进来,Anthropic 管它叫上下文工程。

提示词是你交代的这一件事,上下文是你递过去的整个工作台。

它跟写提示词有个根本区别:提示词是一次性的,你知道自己这回要什么;上下文是通用的,它要服务成千上万条你事先不知道内容的请求,所以没法写得太具体。难就难在这儿:你要为一个还不存在的问题准备好指引。

2 规则 → 判断

以前必须写死的规则,现在可以删掉

拿一条真规则看。Claude Code 早期的系统提示词里,关于注释是这么写的:

旧写法 · 系统提示词原文
In code: default to writing no comments. Never write multi-paragraph docstrings or multi-line comment blocks — one short line max. Don't create planning, decision, or analysis documents unless the user asks for them — work from conversation context, not intermediate files.
写代码时默认不写注释。绝不写多段落的文档字符串或多行注释块,最多一行短的。除非用户要求,否则不要创建规划、决策或分析文档,从对话上下文里干活,不要产生中间文件。

这条规则当年是必要的。Claude Code 刚推出时,最要紧的是别让模型闯祸,比如别删文件。所以他们会给出特别强硬的指引,哪怕这条指引并不总是对的。注释这条就属于并不总是对的那类:有的用户自己有文档习惯,有的特别复杂的代码就该配多行注释块。可当时的模型不这么拦着,写出来的注释十有八九是错的。明知这条规则会误伤一部分人,也只能这么定。

新一代模型的判断力够了,就不用再这么误伤。同一件事,现在的系统提示词里只剩一句:

新写法 · 系统提示词原文
Write code that reads like the surrounding code: match its comment density, naming, and idiom.
写出来的代码要读起来像它周围的代码:注释密度、命名、写法都对齐。
旧:一条禁令

规定了写多少注释。规定得越死,遇到不该套用的场景就越错,而且没有任何回旋余地。

新:一个判据

没规定写多少注释,规定了拿什么当参照:周围的代码。参照物随项目变,规则就不用为每个项目重写。

当年那些护栏是为了避开最坏情况才立的。最坏情况不再发生,护栏就该拆掉,让模型靠周围的语境和自己的判断来定。

站内相关
Anthropic 内部对谈:Harness 那套外壳流程,正在被拆掉
3 冲突的成本

三句互相冲突的话,同时出现在一次请求里

删规则还有个更实际的理由。他们读自己团队内部使用 Claude Code 的对话记录,发现一次请求里经常同时冒出好几句打架的话。

一次请求里三处互相冲突的指令:系统提示词说按需要留文档、技能说不要加注释、用户说照旧的那样弄
三句话拼在同一份上下文里送进去。这三句是 Anthropic 画的示意例,不是真实原话。图片来源:Thariq / X

Claude 一般能猜出你到底想要什么。但它得先把这几句互相矛盾的话调和掉,才能决定动手做什么。你以为往技能里多加一条约束是免费的,其实每加一条,都可能在别处跟另一条撞上,而调和是要花心思的。

这也解释了为什么删掉八成还不掉分:删掉的不只是占位置的字,还有它们制造的矛盾。

4 六条对照

六条过时的老规矩,和替换它们的新做法

Thariq 把这些年口口相传、如今已经不成立的做法列了六条,一条一条给了替换:

Give Claude Rules给 Claude 规则
→
Give Claude Judgement让 Claude 自己判断
Give Claude Examples给 Claude 示例
→
Design Interfaces设计接口
Put it all upfront全部写在开头
→
Use Progressive Disclosure渐进披露
Repeat Yourself重复强调
→
Simple Tool Descriptions简单的工具描述
Memory in Claude.MDs记忆写进 CLAUDE.md
→
Auto-memory自动记忆
Simple Specs简单的规格文件
→
Rich References丰富的参照物
左边划掉的是过时做法,右边是现在的做法;英文为原文表述。来源:Thariq / X

第一条前面讲完了,还有三条各占一节,先把两条轻的说完。

重复强调 → 简单的工具描述

更早的 Claude 模型有时候需要把同一件事说好几遍才记得住,而且它们更容易听进上下文结尾的话、不容易听进开头的。所以以前系统提示词里会提一遍工具怎么用,工具描述里再写一遍。现在这些重复的说明删掉了,工具怎么用只写在工具描述里。

记忆写进 CLAUDE.md → 自动记忆

以前的用法是按 # 快捷键,把要记住的东西自动写进 CLAUDE.md。现在 Claude 自己会保存跟这次工作、跟你这个人相关的记忆,不用你手动往文件里塞。

5 示例 → 接口

别给示例了,把工具本身设计清楚

过去教模型用工具,第一条铁律是多给示例。现在他们发现,对最新这代模型,示例反而把它框死在一小片探索空间里:你举了几种用法,它就在这几种附近打转。

TodoWrite 工具描述改造前约 9100 字符,改造后只剩一句话加一个状态枚举加一条约束
同一个 TodoWrite 工具的描述,左边改造前、右边改造后。右边那句话末尾是省略号,说明现在的描述还有后文,图上只展示了开头。图片来源:Thariq / X

替代示例的是接口设计:把工具、脚本、文件本身设计清楚。关键在参数,参数能取哪些值,本身就该把用法说明白。

TodoWrite 就是例子。它的 status 字段只有三个取值:pending、in_progress、completed。这个枚举摆在那儿,本身就在告诉模型该怎么用它:任务有这三种状态,不多不少。要求也不用举例说明,一句「同时只保持一个任务处于 in_progress」就说完了。

≈9,100
改造前的字符数,里面是何时使用清单和示范案例
3 个值
改造后靠 status 枚举传递用法,加一条「同时只有一个进行中」

这个立场跟一年前不一样了。Anthropic 2025 年那篇讲上下文工程的文章里,对示例的说法是「提供示例,也就是少样本提示,是我们持续强烈推荐的一项公认最佳实践」,当时反对的只是往提示词里堆一长串边缘案例。隔了一代模型,示例本身从推荐项变成了约束项。

6 全部前置 → 渐进披露

不必全部写在开头,用到才加载

Claude Code 早期专做编程,所以系统提示词里塞进了怎么做代码审查、怎么做验证的详细说明。这些内容大部分时候用不上,但真需要的时候是关键信息,于是就一直占着位置。

现在的解法是让它按需出现:代码审查和验证被搬进了各自独立的技能,Claude 需要时才去调。这套做法叫渐进披露(progressive disclosure):需要哪一部分,才把哪一部分加载进来。

全部前置
系统提示词
代码审查全流程
验证全流程
所有工具的完整定义
所有可能用到的规矩
用不上的时候也占着位置,还容易跟别处的说法撞上
按需加载
系统提示词(只剩产品语境)
代码审查技能 · 待调
验证技能 · 待调
延迟加载的工具 · 只有名字
这次真正用得上的那部分
虚线框的只占一行名字,完整定义用到才进来

同一套办法也用在工具上。Claude Code 现在挂的工具比以前多得多,其中一些是延迟加载的:平时上下文里只有一个名字,模型得先用 ToolSearch 把完整定义搜出来才能调用。不搜的时候,这个工具占的就是一行名字的位置,那份动辄几千字的完整说明不进来,正因为不进来,才敢挂更多。

开局的上下文 Bash · Read · Edit 常驻 TaskCreate 只有名字 Monitor 只有名字 WebFetch 只有名字 ToolSearch("task") 搜过之后 Bash · Read · Edit 常驻 TaskCreate 完整定义 Monitor 只有名字 WebFetch 只有名字 虚线框的工具只占一行名字,完整定义不进上下文;用到哪个,哪个才展开 开局的上下文 Bash · Read · Edit 常驻 TaskCreate 只有名字 Monitor 只有名字 WebFetch 只有名字 ToolSearch("task") 搜过之后 Bash · Read · Edit 常驻 TaskCreate 完整定义 Monitor 只有名字 WebFetch 只有名字 虚线框的只占一行名字,完整定义不进来
延迟加载的工具怎么进上下文(本站绘制;工具名取自 Claude Code 现有的延迟加载工具)

你自己的 CLAUDE.md 和技能文件也该这么组织。Thariq 点了一个常见误区:很多人把所有可能用到的做法都往一个文件里堆,理由是不写进去 Claude 就找不到。正确做法是拆成一棵能按需加载的文件树。

7 规格 → 参照物

规格不一定是文档,也可以是一份代码或一套测试

先说清楚这里的「规格」指什么:你写给 Claude 的「我要的东西长什么样」。过去大家习惯把它写成一份 markdown 文档,在计划模式里,Claude Code 一直很依赖这种文件;把规格存进代码库供长期项目参考,也是同类做法。这些仍然管用,但可以更进一步:Claude 现在能处理复杂得多的参照物。

HTML artifact

计划不一定是 markdown。用 artifacts 功能做出来的 HTML 页面,Claude 一样能拿来当参照。

一套测试

一份写得足够细的测试套件,本身就是一份规格,它把「做对了是什么样」定义得比散文精确。

另一个代码库里的一个函数

你想要的行为已经有人实现过,就把那段代码指给它,哪怕是另一种语言写的。

一份评分标准(rubric)

把「什么样的 API 设计算好」写成可逐条对照的标准,Claude 就能派几个分身拿着这份标准,去核对做出来的东西合不合你的品味。

为什么代码类的参照物更管用,他在《Fable 田野指南》(同一个人写的另一篇,Anthropic 给 Fable 5 出的官方使用手册)里说得更直白:有些东西你描述不出来,可能是没有那套词汇,也可能是描述清楚要花太久;这时候最好的办法是给参照物,而所有参照物里最好的是源代码。回到这篇,他举的例子是:同一个设计,给一份 HTML 稿子通常比给一段文字描述或一张截图管用得多。

你可以用 @ 把文件带进来当参照物……一般来说优先选代码里的东西,因为它给 Claude 的是清晰、高保真的指令,而且是它非常熟悉的语言。 — Thariq Shihipar,《The new rules of context engineering for Claude 5 generation models》(省略号处为原文另一段落)
8 分层

上下文由六层拼成,每层该放什么

把前面几条合起来,就是一份分层的摆放建议。先看这一次请求里,Claude 实际读到的东西是怎么拼起来的:

上下文的六层构成:你的提示词、参照物、系统提示词、CLAUDE.md、技能、记忆
你敲的那句话在最上面一条,下面依次是参照物(@ 进来的文件、规格、设计稿、代码库、artifacts)、系统提示词、CLAUDE.md、技能、记忆。图片来源:Thariq / X

这六层里,最上面那句话是你当场敲的,最下面的记忆由 Claude 自己存,都不用你摆。真正要你动手安排的是中间四层:

系统提示词

绑的是产品语境:告诉 Claude 它在什么产品里、在干什么活。用 Claude Code 的人基本不用碰它;自己搭 Agent 框架的人,这一层才是该花大力气的地方。

CLAUDE.md

保持轻量,简单说清这个仓库是干嘛的,token 主要花在讲这个代码库的坑上,比如你们的类型全堆在一个文件里、别处一概没有,这种约定就值得写。别写那些 Claude 扫一眼文件系统或仓库就知道的显然事实。细节多了用渐进披露:比如验证工作有好几条独特要求,就做成一个验证技能,从 CLAUDE.md 里指过去。

技能

把技能当成轻量指南,让 Claude 需要时能找到信息,别写得过死,特别要紧的地方除外。长技能尽量拆成多个文件做渐进披露。技能里最该装的,是只属于你、你团队或你产品的那些判断、知识和做法。

参照物

它排在系统提示词上面,离你的那句话最近,也是这四层里唯一每次都能临时换的:这一轮想让它照着什么做,就带哪份进来。

站内相关
Claude Skill 装了却不触发?先改这两处
9 动手

想动手精简,先跑一个体检命令

Anthropic 把这套做法做进了一个命令,用来给你的技能和 CLAUDE.md 瘦身。原文对用法的说法是「我们把这些最佳实践放进了 claude doctor,在 Claude Code 里用 /doctor 命令」。

这两个入口不完全一样。本站在 Claude Code 2.1.220 上实测:命令行的 claude doctor,帮助文本写的是「检查你的 Claude Code 安装是否健康,读取当前目录的设置文件、不弹信任提示」,末尾还补了一句:要做能顺手修问题的完整体检,请在会话里运行 /doctor。所以想让它帮你精简技能和 CLAUDE.md,进会话跑斜杠命令那个。

Claude Code 版本迭代快,你手上那版的行为可能不同,跑一次 claude doctor --help 看当前口径。

这六条替换成立有个前提:「新一代模型的判断力更好了」,原文举的是 Opus 5 和 Fable 5。如果你的工作流跑在更老的模型上,或者跑在别家模型上,那些护栏当初挡的问题可能还在,照着删之前先小范围试。这一层原文没有展开。

✅ 给自己的上下文做减法
文内可直接抄走的材料:新旧两句系统提示词原文、六条老规矩与替换做法的中文对照、四层各该放什么的摆放清单。
来源
The new rules of context engineering for Claude 5 generation modelsThariq Shihipar(Anthropic 技术团队成员)·X 原帖·Anthropic 官方博客同日版·2026-07-24
本站说明
正文图片来自原文,作者自制;六条对照表的英文取自原文同一张图,中译与版式由本站重做。「全部前置 vs 按需加载」两栏图、延迟加载工具的机制图由本站绘制。首图「删减条」中删掉的内容分类是本站按文中六条替换归纳,原文只给了 80% 这个比例。claude doctor 与 /doctor 的用法差别为本站在 Claude Code 2.1.220 上实测补充,不在原文中。2025 年那篇上下文工程文章对示例的表述,引自延伸链接第一条。
↑ 正文结束
✓ 本篇全文免费开放

会员可复制、下载全文 Markdown,还能让你的 AI 订阅和提问。

阅读原文 ↗
📮 新解读第一时间进邮箱

读完觉得有用?留个邮箱,每篇新解读发布就送达,随时退订。