本页目录4
- 新一代模型(如 Claude Opus 5、Claude Fable 5)判断力更强,过度约束反而会让模型在冲突指令间纠结,降低表现
- 「给规则」不如「给判断空间」,「给示例」不如「设计好接口」,例子会把模型限制在狭窄的探索空间里
- 上下文应该「渐进式加载」(progressive disclosure):把专门指导拆进 skills、用工具的按需检索机制(如 ToolSearch 式的延迟加载),而不是一次性塞进 system prompt
- CLAUDE.md 应保持轻量,只记录仓库的「坑」和非显而易见的约定,而不是模型自己能从文件系统里看出来的信息
- Claude Code 现在支持自动记忆(auto-memory),不再需要用户手动用 `#` 快捷键写入 CLAUDE.md
- 官方新增 `/doctor` 命令,可给 skills 和 CLAUDE.md 瘦身,找出冗余和过度规定的部分
本文是对 Anthropic 官方文章「The New Rules of Context Engineering for Claude 5 Generation Models」的中文要点摘要,完整内容以原文为准:https://claude.com/blog/the-new-rules-of-context-engineering-for-claude-5-generation-models
作者 Thariq Shihipar 在文中提到一个反直觉的结果:Anthropic 团队为 Claude Opus 5、Claude Fable 5 这类新一代模型,把 Claude Code 系统提示词删掉了超过 80%,但在编码评测上没有出现可测量的性能下降。这篇文章围绕这一发现,总结了针对 Claude 5 系代模型做「上下文工程」的新规则。
问题所在:过度约束(Overhobbling)
以往的做法是不断往 system prompt、CLAUDE.md、skills 里堆规则,结果各层之间经常互相矛盾。文中举了个例子:一边说「适当保留文档注释」,另一边又说「禁止添加注释」,两条指令同时出现在不同上下文层里。Claude 在执行任务前,得先花额外的推理成本去消化这些互相冲突的信息。旧模型确实需要这些「护栏」来避免最坏情况,但新模型的判断力已经今非昔比,继续套用旧规则反而是负担。
同时,Claude Code 现在有了记忆(memory)、artifacts、skills 等更丰富的工具,不再只依赖 CLAUDE.md 一处来加载和共享上下文。
六个「过去 vs 现在」的认知转变
1. 从「给规则」到「让 Claude 用判断力」 过去 system prompt 里有类似「代码里默认不写注释,禁止写多段 docstring」这种绝对化规则,但这类规则对某些确实需要详细文档、或用户有特殊偏好的场景就是错的。现在的表述变成了更依赖上下文判断的方式:「写出的代码要跟周围代码风格一致:注释密度、命名、写法尽量匹配」——把决定权交还给 Claude。
2. 从「给示例」到「设计好接口」
以往靠给 Claude 看使用范例来教它怎么调用工具,但示例其实会把模型的探索空间限定死。现在更强调工具接口本身的设计要「自解释」。比如一个 Todo 工具,把状态字段设计成 pending、in_progress、completed 这样的枚举本身就是一种提示,再加一句「保持同时只有一项是 in_progress」,就能明确期望行为,而不需要额外举例子。
3. 从「一股脑塞进开头」到「渐进式加载」(progressive disclosure) 过去把所有可能用到的信息(包括详细的代码审查、验证指南)都塞进 system prompt 开头,但很多信息并非每次都需要,白白浪费上下文。现在的做法是把专门的指导迁移到独立的 skills 里,让 Claude 按需调用;工具定义也可以「延迟加载」,模型需要时再去检索完整定义;CLAUDE.md 和 Skill.md 同样适用这个思路——与其维护一份中心化大文档,不如维护一棵按需加载的文件树。
4. 从「重复强调」到「工具描述写清楚就够」 以前担心模型记不住,索性把使用说明同时写进 system prompt 和工具描述里。现在把工具使用说明直接放进工具描述本身即可,不必在 system prompt 里再重复一遍,减少冗余和上下文消耗。
5. 从「手动记忆」到「自动记忆」(auto-memory)
以前用户得用 # 快捷键手动把信息写进 CLAUDE.md 才能留存。现在 Claude 会自动保存与当前工作和用户偏好相关的记忆。
6. 从「简单 spec」到「更丰富的引用格式」 以前长项目的规格说明通常就是简单的 markdown 文件。现在 Claude 能处理更复杂的引用形式:通过 artifacts 功能生成的 HTML 原型、来自其他代码库的参考代码(比如详细测试套件、待移植函数)、定义某个领域「品味」或质量标准的 rubric,以及配合 rubric 使用验证 agent 的动态工作流。
落到实践:该怎么组织上下文
文章给出了一个分层框架:
- System prompt:与产品形态强绑定,告诉 Claude 它现在处在什么产品环境里。用 Claude Code 的用户基本不需要改它;如果是自建 agent,则应该在这一层多花心思,把运行环境和目标讲清楚。
- CLAUDE.md:保持轻量,只写仓库简介 + 那些「坑」和非显而易见的约定(比如「所有类型定义都集中在一个文件里,别的地方不会有」),不要写 Claude 自己扫一眼文件系统就能发现的信息。长内容优先用渐进式加载——把验证类指导拆成独立 skill,CLAUDE.md 里只留引用。
- Skills:定位是「帮 Claude 在需要时找到信息」的轻量指南,除非是极其重要的地方,否则不要过度约束;篇幅长的话同样按渐进式加载拆分成多个文件。最适合放进 skills 的是你团队或产品特有的观点、知识、最佳实践。
- References(引用):通过
@提及文件把参考资料带进上下文,比如 spec 文件、设计稿、整个代码库。文章特别提到:用代码写成的参考资料,比纯文字描述更清晰、保真度更高——例如给一份 HTML 格式的设计原型,通常比文字描述或截图效果更好。
试试简化:/doctor 命令
Anthropic 在 Claude Code 里推出了 /doctor 命令,用于给用户自己的 skills 和 CLAUDE.md「瘦身」(rightsize),找出其中的冗余和过度规定之处并给出简化建议——本质上是把 Anthropic 团队自己删减 80% 系统提示词的做法,变成一个人人可用的工具。文章最后建议读者系统性地在各层上下文里做减法,并提到另一篇文章《A field guide to Claude Fable》可以作为针对新一代模型的具体提示词写法参考。