📖 定义
Context Engineering (上下文工程) 是2026年兴起的AI Agent设计范式,它超越了传统的Prompt Engineering,关注整个上下文窗口的设计、管理和优化。它包括系统提示词、用户偏好、历史对话、工具结果、检索文档等所有进入LLM上下文的信息。
如果说Prompt Engineering是写一封好的邮件,那Context Engineering就是设计整个邮箱系统——包括邮件分类、优先级排序、自动归档等。
🧠 核心原理
上下文窗口的组成
一个AI Agent的上下文窗口包含多个层次:
- 系统层 - SOUL.md、USER.md、TOOLS.md
- 技能层 - SKILL.md、工作流定义
- 记忆层 - MEMORY.md、历史对话摘要
- 检索层 - RAG检索结果、网页内容
- 工具层 - 工具定义、调用结果
- 对话层 - 当前对话历史
🔀 上下文管理策略
1. 静态上下文 (Static Context)
预先定义、不会改变的上下文,如系统提示词、工具定义等。
# OpenClaw 静态上下文
SOUL.md # Agent人格和行为准则
USER.md # 用户偏好
TOOLS.md # 工具配置
SKILL.md # 技能定义
2. 动态上下文 (Dynamic Context)
根据任务动态加载的上下文,如检索结果、工具输出等。
# OpenClaw 动态上下文
- RAG检索结果
- web_fetch获取的网页内容
- 工具调用返回的结果
- 子Agent返回的结果
3. 历史上下文 (Historical Context)
从历史对话中提取的上下文,需要压缩和摘要。
# OpenClaw 历史上下文管理
- 对话历史(最近N条)
- 记忆摘要(MEMORY.md)
- 任务状态(进行中的任务)
💻 OpenClaw中的Context Engineering
1. 上下文组装
# OpenClaw 自动组装上下文
# 系统提示词 = SOUL.md + USER.md + TOOLS.md + SKILL.md
# 动态选择SKILL.md
if (用户要求SEO优化):
加载 seo-optimizer/SKILL.md
elif (用户要求内容创作):
加载 content-writer/SKILL.md
# 注入检索结果
if (需要外部知识):
web_search() -> 注入上下文
web_fetch() -> 注入上下文
2. 上下文压缩
# OpenClaw 上下文压缩策略
- 对话历史:保留最近N条,旧的摘要
- 工具结果:只保留关键信息
- 检索结果:按相关性排序,截断低相关
# 压缩算法
1. 保留系统提示词(不可压缩)
2. 保留最近对话(可配置保留条数)
3. 摘要历史对话
4. 截断低相关检索结果
5. 压缩工具输出
3. 上下文窗口优化
# OpenClaw 上下文窗口优化
# 目标:在有限窗口内放入最有价值的信息
优化策略:
1. 优先级排序:系统 > 技能 > 检索 > 历史
2. 动态调整:根据任务类型调整各层比例
3. 智能截断:保留开头和结尾,截断中间
4. 摘要压缩:长文本自动摘要
🎯 实战案例:妙趣AI的上下文设计
妙趣AI的上下文窗口组成:
- 系统层 (20%) - SOUL.md + USER.md + TOOLS.md
- 技能层 (15%) - 当前任务的SKILL.md
- 检索层 (30%) - RAG检索结果、网页内容
- 工具层 (20%) - 工具定义和调用结果
- 对话层 (15%) - 最近对话历史
📊 Context Engineering vs Prompt Engineering
| 维度 | Prompt Engineering | Context Engineering |
|---|---|---|
| 范围 | 单次提示词设计 | 整个上下文窗口管理 |
| 重点 | 措辞和格式 | 信息架构和检索 |
| 应用 | 单次对话 | 长期运行的Agent |
| 复杂度 | 低 | 高 |
| 效果 | 立竿见影 | 长期优化 |
✅ 优势
- 更全面的上下文管理
- 支持长期运行的Agent
- 动态适应不同任务
- 提高Agent的连贯性
⚠️ 挑战
- 设计复杂度高
- 需要持续优化
- 上下文窗口仍是硬限制
- 调试困难
🔗 相关术语
- Prompt Engineering - Context Engineering的基础
- Agent Memory - 上下文的记忆管理
- RAG - 上下文的检索增强