Claude 5 代模型的上下文工程新规则
Claude 5代模型语境工程新准则
我们为更先进的模型移除了Claude Code系统提示词中80%以上的内容。本文将分享我们从中总结的经验,以及如何将其应用到Claude Code和自定义代理的语境工程中。
当你向Claude发送消息时,输入的提示词只是它接收语境的一小部分。大部分语境来自系统提示词、技能(Skills)、CLAUDE.md文件、记忆模块及其他来源。我们将这种构建语境的方式称为语境工程,它对Claude Code的输出效果,或是你自定义代理的性能有着至关重要的影响。
与一次性提示词不同,语境需要适配大量不同请求,因此不能过于具体。那么,在无法预知用户具体需求的情况下,该如何为Claude构建通用的提示词与指引呢?
随着Claude能力的不断演进,这个问题的解决难度远超预期。最近,我们在为最新一代Claude模型设计提示词时做出了重大调整:为Claude Opus 5和Claude Fable 5等模型移除了Claude Code系统提示词中80%以上的内容,而代码评估结果并未出现任何可测性下降。
本文将分享我们针对这类新模型设计提示词的经验,以及如何将这些经验应用到你的语境工程中。我们已将这些最佳实践整合到claude doctor;功能中,你可以在Claude Code中使用/doctor命令,优化你的技能配置与CLAUDE.md文件。
释放Claude的潜能
我们发现,此前通过系统提示词、CLAUDE.md文件和技能设置,对Claude Code施加了过多限制。
例如,查看内部使用Claude Code的对话记录时,我们发现同一请求中存在多条相互矛盾的指令:系统提示词、技能设置与用户请求可能同时出现“按需保留文档”和“禁止添加注释”这类冲突要求。
虽然Claude通常能够解读用户意图并给出正确答案,但它必须先花时间梳理这些重叠且矛盾的信息,才能做出决策。
这些限制在过去是必要的,用于避免删除文件等极端情况。但如今我们发现,许多限制已无必要,完全可以交由模型结合上下文自主判断。
此外,Claude Code的工具生态已大幅拓展。过去,Claude主要依赖CLAUDE.md存储记忆、信息与指引;现在,它可以借助记忆模块、工件(artifacts)和技能功能,在不同会话间创建新的语境加载与共享方式。
一些曾经的语境工程最佳实践如今已不再适用:
过去:给Claude制定规则
现在:让Claude自主判断
Claude Code刚推出时,我们需要确保它避免删除文件等极端风险,因此会制定一些过于绝对的指引。例如,曾经的系统提示词中写道:
代码默认不写注释。绝对不要编写多段落文档字符串或多行注释块,最多只写一行简短注释。除非用户明确要求,否则不要创建规划、决策或分析文档——仅基于对话上下文开展工作,不要依赖中间文件。
但对于某些特定请求,这类指引并不适用。比如在文档编写场景中,用户可能有自己的偏好;或是在处理极复杂代码时,确实需要多行注释块。
对于旧版模型,没有这些约束的话,Claude生成的注释往往会出错,因此我们不得不做出妥协。但新一代模型具备更强的判断力,无需明确规则就能妥善处理这类决策。
在新版系统提示词中,我们改为:
编写与周边代码风格一致的代码:匹配其注释密度、命名规则与惯用写法。
过去:给Claude提供示例
现在:设计清晰的接口
过去,工具使用的首要准则是给Claude提供使用示例。但我们发现,对于最新一代模型,示例反而会限制它的探索空间。
与其提供示例,不如更多地思考工具、脚本与文件的设计:Claude拥有哪些参数?如何让这些参数更具表达性?
例如,在Todo工具中,仅将状态设为pending(待处理)、in_progress(进行中)、completed(已完成)的枚举类型,就能让Claude明白该如何使用它;而“仅保留一项in_progress任务”的说明,则进一步明确了我们期望的行为。
过去:所有信息前置
现在:采用渐进式披露
由于Claude Code专注于编码工作,过去的系统提示词包含了代码审查与验证的详细说明。这些信息并非每次都需要,但一旦需要就至关重要。
如今,Claude Code已能熟练运用渐进式披露策略——在合适的时机加载合适的语境。例如,我们将验证与代码审查功能独立为技能,让Claude Code可以选择性调用。
渐进式披露不仅适用于技能,也适用于工具。我们的部分工具采用“延迟加载”机制:代理必须先通过ToolSearch工具查找完整定义,才能使用这些工具。这让我们可以拥有更多工具(如任务工具),且它们不会在未被使用时占用语境空间。
这一策略同样适用于你自己的CLAUDE.md和Skill.md文件。过去的误区是,人们倾向于将所有可能用到的实践都集中存储在这些文件中,认为Claude无法自行查找。但实际上,你可以构建一个文件树,让Claude在需要时按需加载。
过去:重复指令
现在:简洁的工具描述
旧版Claude有时需要重复指令,且相比语境窗口开头的内容,它更倾向于遵循末尾的指令。因此,我们过去会在系统提示词中提及工具,同时在工具描述中重复相关说明。
现在我们发现,完全可以删除这些重复内容,仅在工具描述中写明使用说明即可。
过去:用CLAUDE.md存储记忆
现在:自动记忆功能
过去,我们鼓励用户使用#快捷键将内容自动写入CLAUDE.md,以此为Claude保存记忆。如今,Claude已能自动保存与当前工作和用户相关的记忆内容。
过去:简单的规格文档
现在:丰富的参考资源
在规划模式下,Claude Code曾高度依赖存储为计划的Markdown文件,以便在需要时查阅。另一个类似的最佳实践是,将规格文档存储在代码库中,方便Claude在处理长周期项目时参考。
但我们发现,Claude如今能够处理更复杂的参考资源。除了简单的Markdown文件,它还可以参考由新工件功能生成的HTML工件。
你也可以以代码形式为Claude提供参考。例如,一份规格文档可以是一套详细的测试套件,或是来自其他代码库、需要Claude移植的函数。
评分准则(Rubrics)是另一种参考形式。通过动态工作流和基于评分准则启动的验证代理,Claude可以学习并匹配你在特定领域的偏好(例如,什么样的API设计才算优秀)。
如何应用到你的语境构建中
将上述经验整合起来,构建语境时具体该怎么做?
系统提示词
系统提示词与产品场景紧密相关,它告诉Claude自己正处于什么产品环境中,需要完成什么任务。对于Claude Code,你通常无需修改系统提示词;但如果你在构建自定义代理框架,则需要在此投入较多精力。
CLAUDE.md文件
保持CLAUDE.md简洁,仅简要说明代码库的用途,将大部分字符用于记录代码库中的特殊注意事项。例如,如果你的代码将所有类型定义集中在一个单一文件中,就需要在此注明。避免写入那些Claude通过查看文件系统或代码库就能知晓的“常识性”内容。
充分运用渐进式披露策略:例如,如果你有多个独特的工作验证流程,可以创建一个验证技能,并在CLAUDE.md中引用它。
技能
将技能视为轻量化指引,让Claude在需要时查找相关信息。除非是极为重要的领域,否则避免对技能设置过多限制。
对于篇幅较长的技能,尽可能采用渐进式披露:将内容拆分为多个文件。
技能最好能体现你、你的团队或产品特有的观点、知识与最佳实践。
参考资源
你可以通过@提及文件的方式将其作为参考资源加入语境。参考资源能让Claude查阅当前项目的详细信息,包括规格文档、原型图甚至整个代码库。
通常优先选择代码形式的文件,因为这是Claude非常熟悉的语言,能提供清晰、高保真的指令。例如,一份HTML格式的设计原型,效果往往优于文字描述或截图。
尝试简化
就像我们所做的那样,你可能需要简化系统提示词、技能与CLAUDE.md文件的内容。我们推出了新命令claude doctor,,可以帮助你自动完成这项工作。如需了解针对先进模型设计提示词的更多细节,请查阅我们的《Fable使用指南》。
相关文章
探索更多关于Claude的产品资讯与团队开发最佳实践。
2026年7月24日 Claude模型详解:为你的使用场景选择最佳模型