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%。