Skip to content

Claude 第 5 代模型的 Context Engineering 新规则

发布日期: 2026年7月24日

分类: Claude 官方博客

来源: https://claude.com/blog/the-new-rules-of-context-engineering-for-claude-5-generation-models


我此前写过,如何为最新一代 Claude 5 模型设计提示,并在迭代中逐步明确真正想构建的东西。

但当你向 Claude 发送一条消息时,prompt 只是它获得的上下文中的一小部分。系统提示、Skills、CLAUDE.md 文件、记忆以及其他来源共同构成了大部分上下文。我们把这称为 Context Engineering。无论你在使用 Claude Code,还是在构建自己的 Agent,它都会显著影响结果。

与单次 prompt 不同,上下文往往要跨许多请求复用,因此不能写得过于具体。特别是在你无法预知用户会如何提问时,怎样为 Claude 设计这类通用的提示和指导?

随着 Claude 的能力演进,这件事可能出人意料地困难。最近我们发现,为最新一代 Claude 模型设计提示的方式出现了明显变化:对于 Claude Opus 5、Claude Fable 5 等模型,我们移除了 Claude Code 系统提示中超过 80% 的内容,编码评测结果没有可测得的下降。

下面是我们从这类模型的提示实践中得到的经验,以及如何据此更新你的 Context Engineering。我们已把这些最佳实践放进 claude doctor;在 Claude Code 中运行 /doctor,即可帮助你调整 Skills 和 CLAUDE.md 文件的规模与内容。

解除对 Claude 的束缚

总体而言,我们发现自己通过系统提示、CLAUDE.md 文件和 Skills 对 Claude Code 施加了过多约束。

例如,查看内部使用 Claude Code 的记录时,我们发现同一次请求中常常叠加着互相冲突的信息:系统提示、Skills 和用户请求可能同时写着“视情况保留文档”与“不要添加注释”。

Claude 通常能够理解用户意图并得到正确答案,但在决定如何行动前,必须花更多精力处理这些重叠且冲突的指令。

过去,为了避免最坏情况,这些限制确实有必要;但现在我们发现,其中很多都可以删除,让模型根据周边上下文自行判断。

此外,Claude Code 现在拥有更多工具。过去 Claude 主要依赖 CLAUDE.md 获取记忆、信息和指导;现在则有记忆、artifacts 和 Skills,可用于在不同会话间以新的方式加载和共享上下文。

过去与现在

不少过去的 Context Engineering 最佳实践,如今已经成了迷思,其中包括:

过去:给 Claude 规定规则

现在:让 Claude 自行判断

刚推出 Claude Code 时,我们需要确保 Claude 避免删除文件等最坏情况。因此会给出一些很强、却未必总是适用的指导。例如,系统提示过去会写:

在代码中:默认不写注释。绝不编写多段式 docstring 或多行注释块,最多只写一行简短注释。除非用户要求,否则不要创建规划、决策或分析文档;应基于对话上下文工作,而不是依赖中间文件。

但对一部分请求而言,这类指导反而是错的。比如处理文档时,用户可能有自己的偏好;复杂代码中的特定位置也可能确实需要多行注释。

对于旧模型,如果没有这些护栏,Claude 写出的注释在很多情况下会不准确,我们只能接受这个取舍。但新模型的判断力更好,能够在没有明确规则的情况下处理这些决定。

新的系统提示只写道:让代码读起来像周边代码一样:匹配它的注释密度、命名方式和惯用风格。

过去:给 Claude 示例

现在:设计好接口

过去,工具使用的首要规则是给 Claude 提供示例。对于最新模型,我们发现示例反而会把它限制在特定的探索空间里。

与其补充示例,不如更多思考工具、脚本和文件的设计:Claude 可以使用哪些参数?这些参数怎样才能更有表达力?

以 Todo 工具为例,仅将状态列为 pendingin_progresscompleted,就已经在暗示 Claude 如何使用它;“始终只保留一个 in_progress 项”的规则,则进一步界定了所需行为。

过去:把所有信息都放在前面

现在:使用渐进式披露

因为 Claude Code 最初聚焦于编码,我们的系统提示包含大量有关代码审查和验证的细节。这些信息并非总会用到,但需要时又极其重要。

现在,Claude Code 已经非常擅长渐进式披露:在恰当的时机加载恰当的上下文。比如,我们把验证和代码审查拆成独立 Skills,让 Claude Code 按需调用。

渐进式披露不只适用于 Skills,也适用于工具。我们有一些“延迟加载”工具:Agent 必须先通过 ToolSearch 查找完整定义,才能使用它们。这样既可以拥有更多工具,例如 Task 工具,又不会在尚未需要时占用上下文。

同样的原则也适用于你自己的 CLAUDE.mdSkill.md。一个常见误区是:把自己可能遇到的每一项实践都集中写进一个文件,以免 Claude 找不到。更好的做法是维护一棵可以在合适时机加载的文件树

过去:反复重复同一件事

现在:保持工具描述简洁

早期 Claude 模型有时需要重复指令,或者更容易遵从 context window 末尾而非开头的指令。因此,我们有时会同时在主系统提示和工具描述里写同一组工具说明。

后来我们发现,可以删除这些重复示例:工具如何使用,应写在工具描述中,而不是写进系统提示。

过去:把记忆放在 CLAUDE.md 文件中

现在:自动记忆

过去,我们会鼓励用户通过 # 快捷键把内容自动写入 CLAUDE.md,以保存 Claude 的记忆。现在 Claude 会自动保存与当前工作和你本人相关的记忆。

过去:简单规格说明

现在:丰富的参考资料

在计划模式下,Claude Code 长期依赖包含计划的 Markdown 文件,并在需要时引用这些文件。另一个相近做法是把规格说明存到代码库中,供 Claude 在长期项目里查阅。

但我们发现,Claude 已能处理复杂得多的参考资料。除了简单的 Markdown 文件,它还可以引用通过新 artifacts 功能创建的 HTML artifact。

你也可以把代码作为参考资料提供给 Claude。一份规格说明可以是详细的测试套件,也可以是另一个代码库中可供迁移的函数。

Rubric 也是一种参考资料。通过 dynamic workflows,Claude 可以使用 Rubric 来尝试验证你在特定领域的判断标准,例如“什么样的 API 设计才算好”,并启动验证 Agent。

将这些原则用于你的上下文

把上述原则整合起来,组装上下文时可以这样理解:

系统提示

系统提示与产品上下文高度相关。它告诉 Claude 所处的产品环境以及正在执行的工作。使用 Claude Code 时,你大概率无需修改系统提示;但如果你在构建自己的 Agent harness,这正是值得投入大量时间的地方。

CLAUDE.md

保持 CLAUDE.md 轻量:简要说明仓库用途,但把大部分 token 留给代码库中的陷阱和例外。比如,你的代码可能规定类型只能放在一个集中式文件中,不能散落在其他位置。不要重复那些 Claude 只要查看文件系统或仓库便能得知的“显而易见”的信息。

充分使用渐进式披露。比如,如果你有多套特有的验证要求,就创建一个验证 Skill,并在 CLAUDE.md 中引用它。

Skills

把 Skills 看作轻量指南:让 Claude 在需要时自行找到信息。除非在特别重要的领域,否则不要把它们写得过度约束。

对于很长的 Skill,也要尽量采用渐进式披露:拆分成多个文件。

最有效的 Skill 通常编码了只属于你、你的团队或产品的观点、知识和最佳实践。

参考资料

可以通过 @ 提及文件,将其作为参考资料包含进来。参考资料让 Claude 能够获取当前计划所需的深入信息。

这些资料可以是规格文件、mockup,甚至是整个代码库。通常应优先提供代码形式的文件,因为它们以 Claude 熟悉的语言提供清晰、高保真的指令。比如,一个设计的 HTML mockup 往往比文字描述或截图更能产出好结果。

尝试做减法

系统提示、Skills 和 CLAUDE.md 文件都可能需要像我们一样做减法。我们已推出 claude doctor 命令,可以自动协助完成这件事。关于如何针对高级模型设计提示,请参阅 Fable field guide

本文由 Anthropic 技术人员 Thariq Shihipar 撰写。

AI 落地咨询
艾维禾砺数字科技

企业 AI 落地全链路服务

Agent 开发工作流搭建Claude Code 集成
微信咨询
d187l8801b6124
访问官网 ivheli.com