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 存档日期: 2026-07-25 格式: 简体中文-英文双语版本
The new rules of context engineering for Claude 5 generation models
Section titled “The new rules of context engineering for Claude 5 generation models”Claude 5 代模型的上下文工程新规则
Section titled “Claude 5 代模型的上下文工程新规则”We removed over 80% of Claude Code’s system prompt for more advanced models. How to apply the lessons we learned to your own context engineering in Claude Code and with your own agents. 我们移除了 Claude Code 超过 80% 的 System Prompt(针对更先进的模型)。以下是如何将这些经验应用到你的上下文工程中。
English Original(英文原文)
Section titled “English Original(英文原文)”I’ve written previously about how to best prompt the newest generation of Claude 5 models and work with them iteratively to discover what you want to build.
But when you send a message to Claude, the prompt is only a small part of the context it gets. Much of your context is assembled from your system prompt, Skills, CLAUDE.md files, memory, and other sources. We call this context engineering, and it makes a big impact on the results you generate when using Claude Code or in building your own agents.
Unlike a prompt, context is used generally across many requests, so it cannot be as specific. How do you build these general prompts and guidance for Claude, especially when you don’t know what a user’s prompt might be?
This can be surprisingly difficult as Claude’s own capabilities evolve. Most recently, we noticed a large jump in the way we prompt the newest generation of Claude models. We removed over 80% of Claude Code’s system prompt for models like Claude Opus 5 and Claude Fable 5 with no measurable loss on our coding evaluations.
Here’s what we’ve learned about prompting this new class of models, and how you can utilize it to update your context engineering. We’ve put these best practices in claude doctor; use the command /doctor in Claude Code to rightsize your skills, and CLAUDE.md files.
Unhobbling Claude
Section titled “Unhobbling Claude”Overall, we found that we were overconstraining Claude Code, both through our system prompt and in our CLAUDE.md files and skills.
For example, when we read transcripts of our own internal usage of Claude Code, we see several conflicting messages in a single request like “leave documentation as appropriate,” or “DO NOT add comments” as our system prompt, skills, and user requests clash with each other.
Generally, Claude can interpret the user’s intent to get to the right answer, but Claude must think more carefully about these overlapping and conflicting messages before deciding what to do.
And while these constraints were once needed to avoid worst case scenarios, we have since found we can delete many of them and let the model use surrounding context and judgement instead.
Additionally, Claude Code now has many more tools. Claude used to rely on CLAUDE.md as a source of memory, information, and guidance. Now we have memory, artifacts, and skills, which Claude can use to create new ways of loading and sharing context across sessions.
Then and now
Section titled “Then and now”There were a number of previous context engineering best practices that had become myths.
Then: Give Claude rules → Now: Let Claude use judgement
Section titled “Then: Give Claude rules → Now: Let Claude use judgement”When we first rolled out Claude Code, we needed to be sure that Claude avoided worst case scenarios, such as deleting files. This meant we would give particularly strong guidance that might not always be true. For example, in the system prompt we used to say:
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.
But for a certain subset of prompts, this guidance would be wrong. In the case of documentation, the user may have their own preferences, or specific parts of very complex code might need multi-line comment blocks.
Still, without these guardrails for older models, the comments Claude wrote would be incorrect in many cases and we had to accept this tradeoff. But newer models have better judgement and can handle these decisions well without explicit rules.
In the new system prompt we say: Write code that reads like the surrounding code: match its comment density, naming, and idiom.
Then: Give Claude examples → Now: Design interfaces
Section titled “Then: Give Claude examples → Now: Design interfaces”The number one rule for tool usage was to give Claude examples on how to use them. With our newest models, we’ve found that giving examples actually constrains them to a certain exploration space.
Instead of using examples, think more about the design of your tools, scripts and files — what parameters does Claude have and how can they be more expressive?
For example, in the Todo tool example, just listing status as an enumeration between pending, in_progress, and completed, hints to Claude about how to use it. The instruction on keeping one item in_progress helps define our requested behavior.
Then: Put it all upfront → Now: Use progressive disclosure
Section titled “Then: Put it all upfront → Now: Use progressive disclosure”Because Claude Code was focused on coding, our system prompt included detailed information on how to do code review and verification. These were not always needed, but when they were, it was crucial information.
Since then, Claude Code has gotten very competent at using progressive disclosure — loading the right context at the right times. For example, we moved verification and code review into their own skills that Claude Code could selectively call.
But progressive disclosure is not just for skills, we also use it for tools. Some of our tools are ‘deferred loading,’ which means the agent must search for their full definitions using ToolSearch before using them. This allows us to have more tools (such as our Task tools) that don’t take up context until they’re needed.
The same can be applied to your own CLAUDE.md and Skill.md files. A common myth is that you want to make these a central repository for every known practice that you might run into, because Claude would not find it otherwise. Instead, consider having a tree of files that can be loaded at the right time.
Then: Repeat yourself → Now: Simple tool descriptions
Section titled “Then: Repeat yourself → Now: Simple tool descriptions”Earlier Claude models could sometimes need repeated instructions or be more likely to listen to instructions at the end of their context window than at the start. This meant our system prompt would sometimes have references to tools in the main system prompt as well as instructions in the tool description.
We found we could delete these repeat examples and put instructions on how to use tools in the tool descriptions rather than the system prompt.
Then: Memory in CLAUDE.md files → Now: Auto-memory
Section titled “Then: Memory in CLAUDE.md files → Now: Auto-memory”We used to encourage users to save things to Claude’s memory, by using the # hotkey to write to their CLAUDE.md automatically. Instead, Claude now automatically saves memories that are relevant to the work and to you.
Then: Simple specs → Now: Rich references
Section titled “Then: Simple specs → Now: Rich references”In plan mode, Claude Code has heavily relied on markdown files with plans. Storing these files as plans helped Claude refer to them when needed. Another similar best practice was to store specs in the codebase for Claude to refer to while working across longer projects.
But we’ve found that Claude can handle increasingly more complicated references. Instead of simple markdown files, Claude can reference HTML artifacts created by our new artifacts feature.
You may also give Claude references in the form of code. A spec may also be a detailed test suite, or a function in a different codebase that Claude might port.
Rubrics are another form of references. Rubrics allow Claude to try and verify your taste in a particular field (e.g. what does a good API design look like) by using dynamic workflows and spinning up verifier agents with those rubrics.
Applying this to your context
Section titled “Applying this to your context”Pulling this all together, what does this look like when you assemble your context?
System Prompt
Section titled “System Prompt”A system prompt is heavily tied to the product context. It tells Claude what product it’s operating in and what it’s doing. For Claude Code, you will likely never modify this, but if you are building your own agent harness, this is where you should spend a lot of time.
CLAUDE.md
Section titled “CLAUDE.md”Keep your CLAUDE.md lightweight and briefly describe what your repo is for, but spend most of the tokens on gotchas inside of the codebase. For example, you may organize your code to keep types in one monolithic file and nowhere else. Avoid stating ‘the obvious’ things Claude should know by looking at your file system or your repo.
Use progressive disclosure heavily, for example if you have several unique instructions on how to verify your work, create a verification skill and reference it from your CLAUDE.md.
Skills
Section titled “Skills”Think of skills as lightweight guides to let Claude find information when needed. Avoid making them overconstrained, except in highly important areas.
For long skills, try and use progressive disclosure as much as possible — divide it into many files and split them out.
It’s best when skills encode particular opinions, knowledge, or best practices that are particular to you, your team, or product.
References
Section titled “References”You can @ mention files to include them as references. References allow Claude to refer to in-depth information about the current plan.
This might be in specs files, mockups, or even entire codebases. Generally you should prefer files that are in code as it provides clear, high-fidelity instructions to Claude in a language it knows very well. For example, a HTML mockup of a design will generally produce better results than a description of the design or a screenshot.
Try simplifying
Section titled “Try simplifying”Across your system prompt, skills, and CLAUDE.md files, you may need to simplify just like we did. We rolled out a new command called claude doctor, which will help you do this automatically as well. For more details on prompting more advanced models specifically, check out our Fable field guide.
This article was written by Thariq Shihipar, member of technical staff, Anthropic.
简体中文翻译(Simplified Chinese Translation)
Section titled “简体中文翻译(Simplified Chinese Translation)”我之前写过关于如何最佳地提示最新一代 Claude 5 模型并与之迭代协作以发现你想构建的内容。
但当你向 Claude 发送消息时,提示词只是它获取的上下文中的一小部分。大部分上下文由你的 System Prompt、Skills、CLAUDE.md 文件、记忆以及其他来源组装而成。我们称这为上下文工程,它对你使用 Claude Code 或构建自己的 Agent 时所产生的结果有着巨大影响。
与提示词不同,上下文是跨多个请求通用的,因此不能那么具体。你该如何为 Claude 构建这些通用提示和指导,尤其是在你不知道用户的提示词可能是什么的情况下?
随着 Claude 自身能力的演进,这变得异常困难。最近,我们注意到在提示最新一代 Claude 模型时出现了一个巨大的跳跃——我们针对 Claude Opus 5 和 Claude Fable 5 等模型,移除了 Claude Code 超过 80% 的 System Prompt,而编码评估指标没有任何可测量的下降。
以下是我们学到的关于提示这类新型模型的经验,以及你如何利用这些经验来更新你的上下文工程。我们已将这些最佳实践内置到 claude doctor 中;在 Claude Code 中使用 /doctor 命令来精简你的 Skills 和 CLAUDE.md 文件。
解除 Claude 的束缚
Section titled “解除 Claude 的束缚”总的来说,我们发现我们过度约束了 Claude Code——无论是在 System Prompt 中,还是在 CLAUDE.md 文件和 Skills 中。
例如,当我们阅读内部使用 Claude Code 的对话记录时,我们看到单个请求中存在多条相互冲突的消息,比如“适当保留文档”或“不要添加注释”,而 System Prompt、Skills 和用户请求之间互相冲突。
通常,Claude 可以理解用户意图并得出正确答案,但 Claude 必须在决定做什么之前更仔细地思考这些重叠和冲突的消息。
虽然这些约束曾经是避免最坏情况所必需的,但后来我们发现可以删除其中许多,让模型使用周围上下文和判断力来代替。
此外,Claude Code 现在拥有更多的工具。Claude 过去依赖 CLAUDE.md 作为记忆、信息和指导的来源。现在我们有了 Memory、Artifacts 和 Skills,Claude 可以利用它们创建跨会话加载和共享上下文的新方式。
有许多以前的上下文工程最佳实践已经变成了迷思。
过去:给 Claude 规则 → 现在:让 Claude 使用判断力
Section titled “过去:给 Claude 规则 → 现在:让 Claude 使用判断力”当我们首次推出 Claude Code 时,我们需要确保 Claude 避免最坏情况,比如删除文件。这意味着我们会给出可能并不总是正确的、特别强烈的指导。例如,在 System Prompt 中我们曾经说:
在代码中:默认不写注释。永远不要写多段落的文档字符串或多行注释块——最多一行。除非用户要求,否则不要创建规划、决策或分析文档——从对话上下文中工作,而非中间文件。
但对于某些特定的提示词,这个指导可能是错误的。在文档方面,用户可能有自己的偏好,或者非常复杂的代码的特定部分可能需要多行注释块。
尽管如此,对于旧模型,如果没有这些防护栏,Claude 写的注释在很多情况下会不正确,我们不得不接受这种权衡。但新模型拥有更好的判断力,可以在没有显式规则的情况下妥善处理这些决策。
在新的 System Prompt 中,我们说:编写读起来像周围代码的代码:匹配其注释密度、命名风格和惯用写法。
过去:给 Claude 示例 → 现在:设计接口
Section titled “过去:给 Claude 示例 → 现在:设计接口”工具使用的第一规则是给 Claude 提供如何使用它们的示例。对于最新模型,我们发现给出示例实际上将它们限制在了特定的探索空间内。
与其使用示例,不如更多地思考工具、脚本和文件的设计——Claude 有哪些参数,如何使它们更具表现力?
例如,在 Todo 工具的例子中,仅将状态列为 pending、in_progress 和 completed 的枚举,就向 Claude 暗示了如何使用它。关于保持一个项目 in_progress 的说明帮助我们定义了我们所期望的行为。
过去:全部前置 → 现在:使用渐进式披露
Section titled “过去:全部前置 → 现在:使用渐进式披露”因为 Claude Code 专注于编码,我们的 System Prompt 包含了关于如何进行代码审查和验证的详细信息。这些不总是需要的,但当需要时,它们是至关重要的信息。
此后,Claude Code 已经非常擅长使用渐进式披露——在正确的时间加载正确的上下文。例如,我们将验证和代码审查移到了各自的 Skill 中,Claude Code 可以选择性地调用它们。
但渐进式披露不仅适用于 Skills,我们也将其用于工具。我们的一些工具是“延迟加载”的,这意味着 Agent 必须先使用 ToolSearch 搜索其完整定义才能使用它们。这使我们能够拥有更多工具(如 Task 工具),它们在需要之前不会占用上下文。
同样的原则可以应用到你自己的 CLAUDE.md 和 Skill.md 文件中。一个常见的迷思是,你想把它们做成一个中央仓库,记录你可能遇到的每一种已知实践,因为否则 Claude 找不到它们。相反,考虑建立一个可以在正确时间加载的文件树。
过去:重复自己 → 现在:简洁的工具描述
Section titled “过去:重复自己 → 现在:简洁的工具描述”早期的 Claude 模型有时需要重复指令,或者更倾向于听从上下文窗口末尾而非开头的指令。这意味着我们的 System Prompt 有时会在主体中引用工具,同时也在工具描述中包含指令。
我们发现可以删除这些重复的示例,将如何使用工具的说明放在工具描述中,而不是 System Prompt 中。
过去:在 CLAUDE.md 文件中记录记忆 → 现在:自动记忆
Section titled “过去:在 CLAUDE.md 文件中记录记忆 → 现在:自动记忆”我们曾经鼓励用户使用 # 快捷键将内容保存到 Claude 的记忆中,自动写入 CLAUDE.md。而现在,Claude 会自动保存与工作和用户相关的记忆。
过去:简单的 Spec → 现在:丰富的引用
Section titled “过去:简单的 Spec → 现在:丰富的引用”在计划模式下,Claude Code 严重依赖包含计划的 Markdown 文件。将这些文件存储为计划有助于 Claude 在需要时参考它们。另一个类似的最佳实践是在代码库中存储 Spec,供 Claude 在跨长项目工作时参考。
但我们发现 Claude 可以处理越来越复杂的引用。与其使用简单的 Markdown 文件,Claude 可以引用由我们新的 Artifacts 功能创建的 HTML 产物。
你也可以以代码的形式给 Claude 提供引用。一个 Spec 也可以是详细的测试套件,或者是 Claude 可能需要移植的不同代码库中的函数。
评分标准(Rubrics)是另一种形式的引用。评分标准允许 Claude 通过使用动态工作流并启动带有这些评分标准的验证 Agent,来尝试验证你在特定领域的品味(例如,好的 API 设计是什么样的)。
将这些应用到你的上下文中
Section titled “将这些应用到你的上下文中”综合起来,当你组装上下文时,看起来应该是什么样的?
System Prompt
Section titled “System Prompt”System Prompt 与产品上下文紧密相关。它告诉 Claude 它在哪个产品中运行以及在做什么。对于 Claude Code,你可能永远不会修改它,但如果你在构建自己的 Agent 框架(Harness),这是你应该花大量时间的地方。
CLAUDE.md
Section titled “CLAUDE.md”保持你的 CLAUDE.md 轻量化,简要描述你的仓库用途,但将大部分 Token 用于代码库中的注意事项。例如,你可能将代码组织为类型全在一个庞大文件中,其他地方没有。避免陈述那些 Claude 通过查看文件系统或仓库就应该知道的“显而易见”的事情。
大量使用渐进式披露——例如,如果你有几条关于如何验证工作的独特说明,创建一个验证 Skill 并从 CLAUDE.md 中引用它。
Skills
Section titled “Skills”将 Skills 视为轻量级指南,让 Claude 在需要时找到信息。避免使其过度约束,除非是在非常重要的领域。
对于较长的 Skills,尽量使用渐进式披露——将其拆分为多个文件并分开。
Skills 最好编码特定的观点、知识或最佳实践,这些是你、你的团队或产品所特有的。
References(引用)
Section titled “References(引用)”你可以 @ 提及文件将其作为引用包含进来。引用允许 Claude 参考关于当前计划的深入信息。
这可以是 Spec 文件、模型甚至整个代码库。通常你应该优先选择代码形式的文件,因为它以 Claude 非常熟悉的语言提供了清晰、高保真的指令。例如,一个设计的 HTML 模型通常会产生比设计描述或截图更好的结果。
在你的 System Prompt、Skills 和 CLAUDE.md 文件中,你可能需要像我们一样进行简化。我们推出了一个名为 claude doctor 的新命令,它将帮助你自动完成这项工作。有关提示更先进模型的具体详细信息,请查看我们的 Fable 实战指南。
本文作者为 Anthropic 技术团队成员 Thariq Shihipar。
相关文章(Related Posts)
Section titled “相关文章(Related Posts)”- Claude models explained: choosing the best model for your use case (Jul 24, 2026)
- Building verification loops in Claude Code with skills (Jul 22, 2026)
- How Anthropic secures its AI-native software development lifecycle (Jul 21, 2026)
- How Anthropic runs large-scale code migrations with Claude Code (Jul 16, 2026)