Claude 的 Context Engineering 秘籍:从 Anthropic 学到的最佳实践
(本文整理自 AWS re:Invent 2025 大会期间 Anthropic 团队的演讲与深度交流)
查看演讲 Slides (HTML)(注意这个 slides 不是 Anthropic 官方的,是我根据照片、录音自己总结的)
本文内容
Claude 已经足够聪明了——智能不是瓶颈,上下文(Context)才是。每个组织都有独特的工作流程、规范和知识体系,而 Claude 并不天然了解这些。本文整理了来自 Anthropic 的 Context Engineering 最佳实践,涵盖 Skills、Agent SDK、MCP、评估体系等核心主题,帮助你构建更高效的 AI 应用。
- 01 | Skills 技能系统 - 让 Claude 掌握组织专属知识
- 02 | Context Engineering 框架 - 优化 token 效用的四大支柱
- 03 | Context Window 与 Context Rot - 理解上下文限制与退化问题
- 04 | 工具设计最佳实践 - 构建强大工具的要素
- 05 | Claude Agent SDK - 构建生产就绪 Agent 的框架
- 06 | 子 Agent 配置最佳实践 - 自动调用与权限管理
- 07 | MCP(Model Context Protocol) - 标准化的工具连接协议
- 08 | 评估(Evaluations) - 评估的重要性与最佳实践
- 09 | 构建 Coding Agent 的经验 - 从 Claude Code 中学到的
- 10 | 生态系统协同 - Prompts、MCP、Skills、Subagents 如何协作
核心问题:为什么需要 Context Engineering?
Claude 不知道:
- 你的团队如何组织报告结构
- 你的品牌指南和模板
- 你的合规流程
- 你的数据分析方法论
当前的解决方案都有局限:
- Prompt 是临时性的指令
- 自定义 Agent 需要构建基础设施
- 上下文管理具有挑战性
第一部分:Skills 技能系统
什么是 Skills?
Skills 是组织好的指令、脚本和资源文件夹,Claude 可以动态发现和加载。可以把它们理解为”专业知识包”——通过一致、高质量的输出提升整个组织的生产力。
Skills 的两种类型
01 通用能力增强
Claude 开箱即用做不好的事情(目前),例如创建 PDF、Excel 和 PowerPoint 文件。
02 组织/行业/个人的工作流程与最佳实践
例如 Anthropic 的品牌样式指南。
Skills 工作原理
Skill 是一个包含 SKILL.md 文件的目录:
1 | ## pdf/SKILL.md |
关键设计:
- 元数据:文件开头包含名称和描述
- 预加载:Agent 将已安装 Skills 的名称和描述预加载到系统提示中
- 高效:Claude 只在需要时才读取更多内容
Skills 打包额外内容
复杂的 Skills 可以引用额外的上下文文件:
1 | pdf/ |
- 发现(Discovery):Claude 根据需要导航和发现详细信息
- 可执行脚本(Executable Scripts):对于传统代码更擅长的操作,token 效率更高;在需要时提供确定性可靠性
渐进式披露(Progressive Disclosure)
复杂的 Skills 可以引用额外的上下文:
主文件 anthropic/brand_styling/SKILL.md:
1 | ## Overview |
参考文件 slide-decks.md:
1 | ## Anthropic Slide Decks |
参考文件 docs.md:
1 | ## Documents |
通过这种方式,Claude 只在创建演示文稿时读取 slide-decks.md,只在创建文档时读取 docs.md,实现按需加载。
Skills 在所有产品中通用
相同的 Skills 格式在所有 Anthropic 产品中都能使用:
| 产品 | 最适合 | 特点 |
|---|---|---|
| 🌟 Apps | 自动调用、用户体验 | Claude 创建专业文档和分析;终端用户可以创建、管理和分享自定义 Skills |
| 🌟 Developer Platform | 程序化分发 | 通过 Code Execution API 在终端产品中部署 Skills;可使用核心 Skills 或开发自定义 Skills |
| 💻 Claude Code | 开发者工作流 | 可使用官方 Skills 或自定义 Skills,自动调用 |
Skills 在 Claude Code 中的使用
通过插件(来自 Anthropic 官方 GitHub 仓库)或手动添加到 ~/.claude/skills 目录安装。
- 自动调用:Claude 在相关时自动加载 Skills——用户批准
- 与斜杠命令不同:Skills 由 Claude 自动加载,斜杠命令是用户主动调用
- 在本地开发环境运行
- Marketplace:通过插件市场分发
Skills 最佳实践
命名和描述
- 使用动名词形式:
processing-pdfs、analyzing-spreadsheets、testing-code - 避免模糊的名称(
helper、utils)或不一致的模式 - 同时包含它做什么以及何时使用
- 使用陈述式:”Processes Excel files and generates reports”
- 避免:”I can help you…” 或 “You can use this to…”
文件组织
- 保持 SKILL.md 主体在 500 行以下
- 接近此限制时将内容拆分为单独的文件
- 保持引用在 SKILL.md 的一级深度——避免嵌套文件引用
- 对较长的文件(>100 行)使用目录结构
内容质量
- 使用一致的术语
- 展示具体的输入/输出对,就像常规提示一样
- 示例应与你想要鼓励的行为保持一致
Skills 应用示例
基于 Claude Agent SDK 可以构建各类专业 Agent:
| 🔒 Code Security Agent | 📝 Code Review Agent | 📄 Contract Review Agent | 📊 Meeting Summary Agent |
|---|---|---|---|
| 💰 Financial Reporting Agent | ✉️ Email Automation Agent | 📑 Invoice Processing Agent | … |
第二部分:Context Engineering 框架
核心理念
Context Engineering 是优化 token 效用以应对 LLM 固有约束的学科
四大支柱
1. 系统提示(System Prompt)
- 使用清晰、简单、直接的语言的最小化、精确的指令——*”少说多意”*
- 结构化的章节
- 合适的抽象层级(不要太死板,也不要太模糊)
2. 工具(Tools)
- 自包含(即独立)、无重叠、目的明确——*”每个工具都要证明其存在价值”*
- 显式参数 & 简洁、独特的描述
- 清晰的成功/失败模式
3. 数据检索(Data Retrieval)
- 即时上下文(JIT Context)——*”在需要时加载所需内容”*
- 预加载和动态获取之间的平衡(Agent 可以自主获取)
- 精心设计的检索工具——不要发送整个图书馆,发送一个图书馆员
4. 长期任务优化(Long Horizon Optimizations)
- 历史压缩策略
- 结构化的笔记系统
- 适当时使用子 Agent 架构
数据检索范式转变
旧方法:预加载(传统 RAG)- 预先加载所有可能相关的数据
新方法:即时获取(Just-In-Time)
| 策略 | 说明 | 示例 |
|---|---|---|
| 轻量级标识符 | 传递 ID 而非完整对象,Agent 在需要时请求详情 | user_id: "12345" → Agent 调用 get_user() → 完整档案 |
| 渐进式披露 | 从摘要开始,Agent 按需深入 | 文件列表 → 文件元数据 → 文件内容 |
| 自主探索 | 给予发现工具而非数据转储,Agent 导航信息空间 | search_docs() + read_doc(detail_level) vs 加载所有文档 |
长期任务的三种策略
1. 压缩(Compaction)
- 定期总结中间步骤和/或压缩历史
- 用压缩后的摘要重置上下文,只保留关键信息
- 权衡:轻微的细节丢失换取持续运行
- 示例:*”用户想要 X,尝试了 Y,学到了 Z”* vs 完整对话
2. 结构化记忆/笔记
- Agent 维护显式的记忆工件(即外部持久存储)
- 以结构化格式存储”工作笔记”:决策、学习、状态
- 按需检索而非保持在上下文中
- 示例:决策日志、关键发现文档
3. 子 Agent 架构
- 将复杂任务分解为专门的 Agent
- 每个子 Agent 有聚焦、干净、狭窄的上下文
- 主 Agent 协调并综合结果
- 示例:代码审查 Agent 生成文档检查子 Agent
第三部分:Context Window 与 Context Rot
Context Window 限制
- 所有前沿模型都有单次交互中可处理的最大 token 数
- Anthropic 的上下文窗口是 200k tokens
Context Rot 问题
随着上下文增长,输出质量可能会退化
四种主要原因:
| 类型 | 说明 |
|---|---|
| 🧪 Context Poisoning(上下文污染) | 错误或过时的信息污染了上下文,导致模型基于错误前提进行推理 |
| 📄 Context Distraction(上下文分心) | 不相关的信息分散了模型的注意力,降低了对关键信息的关注度 |
| ❓ Context Confusion(上下文混淆) | 相似但不同的信息混在一起,模型难以区分和正确关联 |
| 🔍⚠️ Context Clash(上下文冲突) | 上下文中存在矛盾或不一致的信息,模型不知道该相信哪个 |
关键结论:所有模型在长上下文中都会出现性能下降。(参考 Chroma 技术报告:Context-Rot: How Increasing Input Tokens Impacts LLM Performance)
Prompt Caching
- Prompt Caching 是成本和延迟的杠杆
- Prompt Caching 的成功与上下文结构高度相关
有效构建和维护上下文将:
| 目标 | 结果 |
|---|---|
| 处理上下文窗口限制 | → 可靠性 |
| 减少 Context Rot | → 准确性 |
| 优化 Prompt Caching | → 成本 & 延迟 |
第四部分:工具设计最佳实践
强工具设计的要素
使用简单且准确的工具名称
详细且格式良好的描述——包括工具返回什么、应该如何使用等
避免过于相似的工具名称或描述!
执行单一操作的工具效果更好——尽量最多只有一层嵌套参数
提供示例——预期的输入/输出格式
注意工具结果的格式
测试你的工具! 确保 Agent 能够正确使用
示例工具定义:
1 | { |
第五部分:Claude Agent SDK
架构概览
Claude Agent SDK 构建于支持 Claude Code 的 Agent 框架之上,提供构建生产就绪 Agent 所需的所有构建块。
1 | Application / Platform |
SDK 核心能力
工具(Tools)
- 读写文件操作
- 代码执行
- 网页搜索
- MCP 服务器
- Skills
权限(Permissions)
- 人工确认关卡
- 细粒度权限
- 工具允许/拒绝列表
生产就绪(Production Readiness)
- 会话管理
- 错误处理
- 监控
增强功能
- Subagents(子 Agent)
- Web Search(网页搜索)
- Research Mode(研究模式)
- Auto Compacting(自动压缩)
- Multi Stream(多流)
- Memory(记忆)
Agent SDK 设计哲学
Claude Code:将日常开发工作委托给 Claude
通过让 Claude 访问用户的电脑(通过终端),它能够像程序员一样编写代码:
- 查找文件
- 编写和编辑文件
- 测试
- 调试
- 迭代执行操作
Claude Agent SDK:扩展 Claude Code 以构建自定义 Agent
Claude Code 原则可以扩展到一般的 Agent。通过赋予 Claude 相同的工具,Agent 可以:
- 读取 CSV 文件
- 搜索网页
- 构建可视化
- 等等
核心设计原则:Claude Agent SDK 给你的 Agent 一台电脑,让它们像人类一样工作。
Claude Code 工具包
| 工具 | 描述 | 需要权限 |
|---|---|---|
| Agent | 运行子 Agent 处理复杂的多步骤任务 | 否 |
| Bash | 在你的环境中执行 shell 命令 | 是 |
| Edit | 对特定文件进行针对性编辑 | 是 |
| Glob | 基于模式匹配查找文件 | 否 |
| Grep | 在文件内容中搜索模式 | 否 |
| LS | 列出文件和目录 | 否 |
| MultiEdit | 在单个文件上原子性执行多次编辑 | 是 |
| NotebookEdit | 修改 Jupyter notebook 单元格 | 是 |
| NotebookRead | 读取和显示 Jupyter notebook 内容 | 否 |
| Read | 读取文件内容 | 否 |
| TodoRead | 读取当前会话的任务列表 | 否 |
| TodoWrite | 创建和管理结构化任务列表 | 否 |
| WebFetch | 从指定 URL 获取内容 | 是 |
| WebSearch | 执行带域名过滤的网页搜索 | 是 |
| Write | 创建或覆盖文件 | 是 |
最佳 Agent 框架的特点
- 不过度脚手架化模型
- 允许调整系统的所有关键部分(Context Engineering)
- 利用所有模型能力(扩展思考、交错思考、并行工具调用等)
- 提供记忆访问
- 在有价值的地方启用多 Agent
- 有健壮的 Agent 权限系统
第六部分:子 Agent 配置最佳实践
Description 字段对自动调用至关重要
- 使描述具体且面向操作
- 使用 “PROACTIVELY” 或 “MUST BE USED” 来鼓励自动委派
- 示例:
"Use PROACTIVELY when code changes might impact performance. MUST BE USED for optimization tasks."
工具权限
- 将工具限制为每个子 Agent 需要的内容
- 示例:code-reviewer 获得
Read, Grep, Glob,但不获得Write或Edit
模型选择
- 使用
inherit匹配主对话以保持一致性 - 根据特定需求指定
sonnet、opus或haiku - 如果省略,默认是
sonnet
原生子 Agent 编排最佳实践
- 管理 Agent 框架中的上下文限制
- 当上下文窗口清空时,考虑重新开始而非压缩
- 围绕早期压缩进行提示
- 对如何开始要有规定性
- 提供验证工具
- 随着自主任务持续时间增加,Claude 需要在没有持续人工反馈的情况下验证正确性
研究任务的最佳实践
为获得最佳研究结果:
- 提供清晰的成功标准——明确什么构成成功的答案
- 鼓励多源验证——跨多个来源验证信息
- 使用结构化方法处理复杂研究——分步骤、有条理地进行
第七部分:MCP(Model Context Protocol)
MCP 是什么?
1 | AI applications Data sources and tools |
MCP 发展方向
最新规范(2025 年 6 月)聚焦于结构化工具输出、OAuth 授权、服务器发起交互的请求机制,以及安全最佳实践。
未来方向:
- 异步操作
- 无状态性和可扩展性
- 服务器身份和发现
第八部分:评估(Evaluations)
评估类型
| 评估类型 | 描述 | 用途 | 示例 |
|---|---|---|---|
| 智能基准 | 评估模型的一般智能 | 与其他模型比较,模型发布决策 | MMLU, GPQA |
| 能力基准 | 评估模型在一般能力领域的表现 | 与其他模型比较,模型发布定位 | MATH, HumanEval, SWE-Bench |
| 行为评估 | 量化特定模型行为的普遍性 | 监控和改进模型行为 | 拒绝率、幻觉、”Certainly!” 频率 |
| 安全评估 | 通过威胁分析和红队测试评估不良行为者的体验 | 理解功能或产品发布的风险 | Computer Use、浏览器使用红队测试 |
| 产品评估 | 评估模型在特定产品功能中执行任务的能力 | 产品发布决策和迭代 | Artifacts、数据功能、多模态 PDF |
好的评估特点
- 测量性能以及回归
- 以用户为中心,覆盖预期用户行为的全部范围
- 考虑边缘情况和风险
- 有多个利益相关者(如法务)的认可
- 有目标(大致)
- 如果你的功能在其他 AI 产品中很常见,可能有可用的基准可以使用或借鉴
- 负面示例极其重要——它们定义了功能的边界,确保不会过度触发
优秀的评估:可以客观且程序化地评分
评估流程
确定基线:对正面和负面示例,使用当前生产配置运行提示,记录输出作为基线
概述预期行为:对正面和负面示例,解释”应用提示更改后的预期行为是什么”
【可选】评分:构建检查模型输出与预期行为的评分器(精确匹配、正则表达式或基于模型)
自动化与迭代
评估运行得越快,迭代就越容易。
工具选项:
- Anthropic Console
- 自定义脚本或 notebook
- 自定义工具
迭代的两个维度:
- 功能迭代:更改系统提示、工具定义、系统流程
- 评估迭代:你可能会看到不喜欢且未预料到的行为,需要在评估中添加用例或提示来测试
Agent 评估示例
1. 答案准确性(Answer Accuracy)
LLM 判断 Agent 答案的正确性
1 | User: How many employees started in 2023 and are still active? |
2. 工具使用准确性(Tool Use Accuracy)
评估正确的工具选择和参数
1 | User: Book a flight to Paris tomorrow morning |
3. t-bench
评估 Agent 是否达到正确的最终状态
1 | User: Change Flight |
Agent 系统评估技巧
效应量越大,需要的样本量越小:开始时只需几个测试用例,每次系统更改都会产生显著的、可察觉的影响
使用真实任务:尝试在真实用户可能使用的任务上评估研究系统,最好有使用可用工具可找到的明确正确答案
带评分标准的 LLM-as-judge 非常强大:LLM 现在已经强大到可以成为优秀的输出评判者,如果给予与人类判断一致的清晰评分标准
没有什么能完美替代人工评估:没有什么能比得上反复测试和直觉检查系统,以及用真实用户测试——人类能发现粗糙的边缘!
第九部分:构建 Coding Agent 的经验
我们学到的东西
- 一切皆文件
- Bash 是终极工具
- 大多数工具调用只是代码
- Agentic Search > RAG
Agent 还需要
- Memory(记忆)
- Sub Agents & Collaboration(子 Agent 与协作)
- Dynamic Tool Calls(动态工具调用)
- Code Generation & Execution(代码生成与执行)
- Web Search(网页搜索)
- Agentic Search(Agent 搜索)
- Long Running Tasks(长期运行任务)
第十部分:生态系统协同
Prompts、MCP、Skills、Subagents 如何协同工作
| 特性 | Prompts | MCP | Skills | Subagents |
|---|---|---|---|---|
| 提供什么 | 即时指令 | 工具连接 | 程序性知识 | 任务委派 |
| 持久性 | 单次对话 | 持续连接 | 跨对话 | 跨会话 |
| 包含 | 自然语言 | 工具定义 | 指令+代码+资源 | 完整 Agent 逻辑 |
| 加载时机 | 每轮 | 始终可用 | 动态按需 | 调用时 |
| 可包含代码 | 否 | 是 | 是 | 是 |
| 最适合 | 快速请求 | 数据访问 | 专业知识 | 专门任务 |
示例 Agent 工作流
- MCP 连接到 Google Drive 和 GitHub
- Skills 提供分析框架(如竞争分析方法论)
- Subagents 并行执行专门任务(市场研究员、技术分析师)
- Prompts 提炼并提供具体上下文
匹配正确工具到用例
- 需要反复使用的简单程序性知识 → Skill
- 需要访问外部数据源 → MCP
- 需要独立执行和独立上下文 → Subagent
- 复杂工作流 → 三者结合
总结
Context Engineering 是构建高效 AI 应用的核心学科。通过合理运用 Skills、MCP、Subagents,并遵循工具设计和评估的最佳实践,你可以充分释放 Claude 的潜力,构建真正生产就绪的 Agent 系统。
记住:Claude 已经足够聪明了,让它成功的关键是给它正确的上下文。