Context Engineering:真正的技能

从 Prompt Engineering 到 Context Engineering

白皮书的关键洞察:

“The quality of AI-generated code depends less on the cleverness of your prompts and more on the quality of the context provided.”

翻译:AI 生成代码的质量更少取决于 prompt 的巧妙更多取决于提供的上下文质量

六种上下文类型

开发者必须考虑六种主要上下文:

类型 说明 示例
Instructions Agent 的核心角色、目标和操作边界 系统提示词、角色定义
Knowledge 检索的文档、架构图、领域数据 API 文档、ADR (Architecture Decision Records)
Memory 短期会话日志 + 长期持久状态 当前对话历史 + 项目规则文件
Examples Few-shot 行为演示 + 代码库参考模式 代码示例、最佳实践模板
Tools Agent 可调用的 API、脚本、外部服务定义 MCP 服务器、函数定义
Guardrails 硬约束、格式规则、安全验证 禁止规则、输出格式要求

Static Context vs Dynamic Context:核心权衡

Context Engineering 的核心决策:哪些 upfront 加载 vs 按需检索

┌─────────────────────────────────────────────────────┐
│  Static Context(静态上下文)                        │
│  ─────────────────────                              │
│  • 始终加载                                          │
│  • 定义 Agent 身份和行为                             │
│  • 组成:系统指令、规则文件(AGENTS.md、CLAUDE.md) │
│  • 成本:每个 token 在每次交互中都存在               │
│  • 适用:核心规则和身份定义                          │
├─────────────────────────────────────────────────────┤
│  Dynamic Context(动态上下文)                       │
│  ────────────────────                               │
│  • 按需加载                                          │
│  • 仅在需要时支付 token 成本                         │
│  • 组成:Skill 指令、工具结果、RAG 文档、会话历史   │
│  • 适用:任务特定的专业知识                          │
└─────────────────────────────────────────────────────┘

为什么这是工程决策?

白皮书强调:

“Too much static context wastes tokens and dilutes signals. Too little means the agent forgets critical rules. The best systems treat this boundary as a first-class architectural decision, reviewed and versioned like any other configuration.”

翻译:太多静态上下文浪费 token 并稀释信号。太少意味着 Agent 忘记关键规则。最好的系统将这个边界视为一等架构决策,像其他配置一样审查和版本化。

Agent Skills:管理动态上下文的模式

白皮书介绍最强大的动态上下文管理模式:Agent Skills

Progressive Disclosure(渐进式披露):三层加载机制

┌─────────────────────────────────────────────────────┐
│ Layer 1: Metadata (name + description)              │
│ ───────────────────────────────────                 │
│ • 启动时加载,~50 tokens                            │
│ • 用于决定是否触发 Skill                             │
│ • 始终可见                                          │
├─────────────────────────────────────────────────────┤
│ Layer 2: SKILL.md Body                              │
│ ─────────────────────                               │
│ • 仅当 Skill 触发时加载                              │
│ • 包含详细指令和工作流                               │
│ • 按需加载                                          │
├─────────────────────────────────────────────────────┤
│ Layer 3: Bundled Resources                          │
│ ─────────────────────                               │
│ • 仅在 SKILL.md 引用时加载                          │
│ • scripts/、references/、assets/                    │
│ • 最深层,最小开销                                  │
└─────────────────────────────────────────────────────┘

Skills 解决的四个问题

问题 Skills 的解决方案
上下文膨胀 (Context Rot) 从过载的 prompt 中解脱,按需加载
缺乏程序性记忆 LLM Agent 首个可信的程序性记忆原语
多 Agent 架构开销 单 Agent + Skills 库即可实现角色切换
可移植性差 文件夹 + markdown,任何 Agent 都能使用

为什么这很重要?

Token 经济学示例

假设你有 50 个 Skill:

方式 Token 消耗
传统:单系统提示词 每次 15,000 tokens
Skills:按需加载 描述 ~4,000 + 激活 Skill ~2,000 = 总计 ~6,000 tokens
节省 > 60%

Anthropic 案例:将工作流转换为 Skills 可将活跃上下文从 150,000 tokens 减少到 2,000 tokens,减少超过 98%