我们为更先进的模型删除了 Claude Code 系统提示词中超过 80% 的内容。如何将我们学到的经验应用到你自己的上下文工程中——无论是在 Claude Code 中还是在你自己的代理中。
- 类别:Claude Code, Agents
- 产品:Claude Code, Claude Enterprise, Claude Platform
- 日期:2026 年 7 月 24 日
- 阅读时间:5 分钟
- 分享:https://claude.com/blog/the-new-rules-of-context-engineering-for-claude-5-generation-models
我之前写过关于如何更好地向最新一代 Claude 5 模型提问,以及如何与它们迭代协作,从而发现你想要构建的内容。
但当你向 Claude 发送消息时,提示词只占它获取的上下文的一小部分。你的大部分上下文来自系统提示词、技能(Skills)、CLAUDE.md 文件、记忆(Memory)以及其他来源。我们称之为上下文工程(Context Engineering),这对你在使用 Claude Code 或构建自己的代理时生成的结果有着重要影响。
与提示词不同,上下文通常会跨多个请求通用,因此它不能过于具体。那么,如何为 Claude 构建这些通用提示和指导,尤其是当你不知道用户的提示词可能是什么时呢?
随着 Claude 自身能力的演进,这可能会变得异常困难。最近,我们注意到在新一代 Claude 模型的提示方式上出现了巨大飞跃。对于 Claude Opus 5 和 Claude Fable 5 等模型,我们删除了 Claude Code 系统提示词中超过 80% 的内容,而在我们的编码评估中没有出现可衡量的损失。
以下是我们关于如何为这类新模型设计提示词的经验,以及如何利用这些经验来更新你的上下文工程。我们已将这些最佳实践整合到 claude doctor 中;在 Claude Code 中使用 /doctor 命令来调整你的技能和 CLAUDE.md 文件。
解除Claude的束缚
Unhobbling Claude
总体而言,我们发现我们通过系统提示词、CLAUDE.md 文件和技能过度约束了 Claude Code。
例如,当我们阅读自己内部使用 Claude Code 的转录记录时,会看到单个请求中存在多条相互矛盾的指令,比如“适当保留文档”,或者“不要添加注释”,因为我们的系统提示词、技能和用户请求之间相互冲突。

通常,Claude 可以理解用户的意图从而得出正确答案,但 Claude 必须更仔细地思考这些重叠和矛盾的指令,然后才能决定做什么。
虽然这些约束曾经是用来避免最坏情况的必要手段,但我们发现现在可以删除其中许多约束,让模型利用周围的上下文和判断力来代替。
此外,Claude Code 现在拥有更多工具。过去,Claude 依赖 CLAUDE.md 作为记忆、信息和指导的来源。现在我们有了记忆、制品(Artifacts)和技能,Claude 可以利用它们创建跨会话加载和共享上下文的新方式。
或者阅读文档:尝试 Claude Code,尝试 Claude Code,开发者文档,电子书
过去与现在
Then and now
此前有许多上下文工程的最佳实践已经变成了迷思。包括:

过去:给Claude规则
Then: Give Claude rules
现在:让Claude运用判断力
Now: Let Claude use judgement
当我们首次推出 Claude Code 时,我们需要确保 Claude 避免最坏情况,例如删除文件。这意味着我们会给出特别强硬的指导,而这些指导可能并不总是正确。例如,我们在系统提示词中曾写道:
在代码中:默认不写注释。永远不要写多段落文档字符串或多行注释块——最多一行短注释。除非用户要求,否则不要创建规划、决策或分析文档——从对话上下文中工作,而不是从中间文件中。
但对于某些特定提示词,这条指导是错误的。对于文档来说,用户可能有自己的偏好,或者某些非常复杂的代码部分可能需要多行注释块。
尽管如此,如果没有这些针对旧模型的防护措施,Claude 编写的注释在许多情况下都会出错,我们不得不接受这种权衡。但较新的模型具有更好的判断力,可以在没有明确规则的情况下很好地处理这些决策。
在新的系统提示词中,我们写道:编写与周围代码风格一致的代码:匹配其注释密度、命名习惯和惯用法。
过去:给Claude示例
Then: Give Claude examples
现在:设计接口
Now: Design interfaces
工具使用的首要规则是给 Claude 提供如何使用它们的示例。对于我们的最新模型,我们发现提供示例实际上会将 Claude 限制在某个探索空间内。

与其使用示例,不如多考虑工具、脚本和文件的设计——Claude 有哪些参数,它们如何能够更具表现力?
例如,在 Todo 工具示例中,仅仅将状态枚举为 pending、in_progress 和 completed,就能向 Claude 暗示如何使用它。而始终保持一个项目处于进行中的指令则有助于定义我们期望的行为。
过去:把所有内容放在前面
Then: Put it all upfront
现在:渐进式披露
Now: Use progressive disclosure
因为 Claude Code 专注于编码,我们的系统提示词包含了关于如何进行代码审查和验证的详细信息。这些信息并不总是需要,但在需要时却是至关重要的。
自那时起,Claude Code 在渐进式披露方面变得非常成熟——能够在正确的时间加载正确的上下文。例如,我们将验证和代码审查移到了各自的技能中,Claude Code 可以按需调用。
但渐进式披露不仅适用于技能,也适用于工具。我们的一些工具采用了“延迟加载”机制,这意味着代理在使用它们之前必须使用 ToolSearch 搜索其完整定义。这使我们能够拥有更多工具(例如我们的任务工具),这些工具在需要之前不会占用上下文。
同样的原则也可以应用于你自己的 CLAUDE.md 和 Skill.md 文件。一个常见的迷思是你想把所有可能遇到的做法都集中存放在一个中心仓库中,因为否则 Claude 就找不到它们。相反,考虑使用一个文件树,在适当的时候加载。
过去:重复自己
Then: Repeat yourself
现在:简单的工具描述
Now: Simple tool descriptions
早期的 Claude 模型有时需要重复指令,或者更倾向于听取上下文窗口末尾的指令而不是开头的指令。这意味着我们的系统提示词有时会在主系统提示词中引用工具,同时在工具描述中也包含指令。
我们发现可以删除这些重复的示例,并将如何使用工具的指令放在工具描述中,而不是系统提示词中。
过去:用CLAUDE.md文件存储记忆
Then: Memory in CLAUDE.md files
现在:自动记忆
Now: Auto-memory
我们过去鼓励用户通过使用 # 快捷键自动写入 CLAUDE.md 来将内容保存到 Claude 的记忆中。而现在,Claude 会自动保存与工作和用户相关的记忆。
过去:简单的规格说明
Then: Simple specs
现在:丰富的参考资料
Now: Rich references
在规划模式下,Claude Code 严重依赖包含计划的 Markdown 文件。将这些文件作为计划存储有助于 Claude 在需要时参考它们。另一个类似的最佳实践是将规格说明存储在代码库中,以便 Claude 在跨长项目工作时参考。
但我们发现 Claude 能够处理越来越复杂的参考资料。Claude 现在可以引用我们新制品功能创建的 HTML 制品,而不是简单的 Markdown 文件。
你还可以给 Claude 提供代码形式的参考资料。一个规格说明也可以是一个详细的测试套件,或者另一个代码库中 Claude 可以移植的函数。
评分标准(Rubrics)是另一种参考资料形式。评分标准允许 Claude 通过动态工作流和启动带有这些评分标准的验证代理,来尝试验证你在特定领域的品味(例如,一个好的 API 设计应该是什么样的)。
将这一点应用到你的上下文中
Applying this to your context
综合以上所有内容,当你组装上下文时,会是什么样子?

系统提示词
System Prompt
系统提示词与产品上下文紧密相关。它告诉 Claude 它在什么产品中运行以及它在做什么。对于 Claude Code,你可能永远不会修改它,但如果你正在构建自己的代理框架,这正是你应该花大量时间的地方。
CLAUDE.md
保持你的 CLAUDE.md 轻量化,简要描述你的仓库的用途,但将大部分 token 用于代码库中的陷阱(gotchas)。例如,你可能将代码组织方式约定为只在一个文件中保存所有类型,其他地方不保存。避免陈述 Claude 通过查看文件系统或仓库就能知道的“显而易见”的事情。
大量使用渐进式披露,例如,如果你有多个关于如何验证工作的独特指令,创建一个验证技能并从你的 CLAUDE.md 中引用它。
技能
Skills
将技能视为轻量级指南,让 Claude 在需要时找到信息。除非在高度重要的领域,否则避免过度约束它们。
对于较长的技能,尽量使用渐进式披露——将其分成多个文件并拆分出来。
最好的情况是,技能编码了你、你的团队或产品特有的特定观点、知识或最佳实践。
参考资料
References
你可以通过 @ 提及文件来将它们作为参考资料。参考资料允许 Claude 引用当前计划的深入信息。
这些信息可以在规格说明文件、模型设计图甚至整个代码库中。通常你应该优先选择代码中的文件,因为它们能以 Claude 非常熟悉的语言提供清晰、高保真的指令。例如,一个设计的 HTML 模型通常比设计描述或截图产生更好的结果。
尝试简化
Try simplifying
在你的系统提示词、技能和 CLAUDE.md 文件中,你可能需要像我们一样进行简化。我们推出了一条名为 claude doctor 的新命令,它将帮助你自动完成这项工作。有关更具体的高级模型提示技巧,请查看我们的 Fable 现场指南。
本文由 Anthropic 技术团队成员 Thariq Shihipar 撰写。