智能体上下文工程:设计模式与实践
上下文工程(Context Engineering)是决定 LLM 系统中存储、检索和呈现什么信息给模型的实践。从学术研究(Meta-Harness)到工业实践(Hermes Agent),涌现出一套共通的设计模式。
什么是上下文工程
LLM 系统的性能往往取决于模型周围的 harness——决定上下文的代码——而非仅取决于模型权重本身。Meta-Harness 论文显示,仅改变 harness 就能在同一基准测试上产生 6× 性能差距。
设计模式谱系
1. 静态上下文(最基础)
直接将指令、示例注入 prompt。如 Hermes 的 AGENTS.md 和 SOUL.md。
2. 渐进式披露(按需加载)
只在需要时加载上下文,避免 prompt 膨胀。
- Hermes Skills:Level 0(列表)→ Level 1(完整内容)→ Level 2(引用文件)
- Hermes 子目录发现:启动时加载根 AGENTS.md,进入子目录时才加载子目录上下文
- Meta-Harness:Proposer 通过
grep/cat选择性检查文件系统
核心原则:上下文应按需自适应访问,而非一次性打包进 prompt。
3. 持久化记忆(跨会话)
将有界、精选的记忆跨会话保存。
| 系统 | 记忆机制 | 容量 | 管理 |
|---|---|---|---|
| Hermes MEMORY.md | Agent 个人笔记 | 2,200 字符 | Agent 自行增删改 |
| Hermes USER.md | 用户画像 | 1,375 字符 | Agent 自行管理 |
| Hermes Session Search | 全文搜索历史会话 | 无限 | 自动存储 |
| Meta-Harness 文件系统 | 完整代码+轨迹+分数 | 无限 | 每迭代写入 |
关键权衡:容量 vs 质量——记忆应该精炼,而非堆砌。
4. 程序性知识(技能/工作流)
将复杂工作流编码为可复用的技能。
- Hermes Skills:Agent 自动将成功的工作流保存为技能(程序性记忆)
- ADAS Archive:Meta Agent Search 将发现的智能体存入档案库供后续迭代参考
- Meta-Harness Pareto Frontier:维护优化过的 harness 候选前沿
5. 条件性上下文(自适应激活)
根据当前环境动态调整可用上下文。
- Hermes 条件激活技能:
fallback_for_toolsets(后备)、requires_toolsets(前置条件) - Meta-Harness 提议器策略:根据失败模式分析动态决定是做局部修改还是大规模重写
上下文层级模型
┌─────────────────────────────────┐
│ Layer 1: 身份 (SOUL.md) │ ← 全局、稳定、定义 agent 是谁
├─────────────────────────────────┤
│ Layer 2: 记忆 (MEMORY/USER.md) │ ← 跨会话、有界、agent 自管理
├─────────────────────────────────┤
│ Layer 3: 项目上下文 (AGENTS.md) │ ← 项目级、随目录渐进发现
├─────────────────────────────────┤
│ Layer 4: 技能 (Skills) │ ← 按需加载、渐进披露
├─────────────────────────────────┤
│ Layer 5: 用户注入 (@refs) │ ← 即时、手动、会话级
├─────────────────────────────────┤
│ Layer 6: 执行轨迹 (Traces) │ ← 自动生成、诊断用
└─────────────────────────────────┘
OpenAI Codex 的工业实践验证
OpenAI 的 Harness Engineering 实验(OpenAI Codex Harness Engineering: Agent-First 软件开发实验)为上述设计模式提供了大规模工业验证:
渐进式披露的实践
- 短 AGENTS.md(~100 行)作为目录,结构化
docs/作为知识库 - 巨大的单体 AGENTS.md 方案明确失败:上下文稀缺、指导过多等于无指导、文档立即腐烂
- 用 CI/linter 机械验证知识库时效性,“文档园艺” agent 自动修复过时文档
Agent 可读性优先原则
- “Agent 看不到的东西,对它来说就不存在” — 所有知识必须编码进代码库
- 类比于给新工程师做 onboarding:产品原则、工程规范、团队文化都要给 agent
- 技术选择偏向"无聊"的技术(组合性好、API 稳定、训练集充分)
机械执行约束
- 自定义 linter + 结构测试执行架构规则,lint 错误信息中注入修复指令
- “中心化执行边界,本地化允许自主”
- 一旦编码,约束在任何地方同时生效——成为乘数而非限制
垃圾回收
- Agent 复制已有模式(包括不理想的),需要持续清理
- 编码"黄金原则" + 定期后台 agent 扫描偏差
- 技术债像高利贷:持续小额偿还 » 累积后大规模清理
| 设计模式 | OpenAI 实践 | Hermes 实践 | Meta-Harness 实践 |
|---|---|---|---|
| 渐进式披露 | AGENTS.md 作目录 + docs/ | Skills 三级加载 + 子目录发现 | grep/cat 选择性检查 |
| 持久化记忆 | docs/ 知识库 | MEMORY/USER.md | 文件系统完整历史 |
| 机械验证 | CI linter + 文档园艺 | — | 分数 + 执行轨迹 |
| 约束执行 | 自定义 linter + 结构测试 | — | Pareto 前沿筛选 |
Meta-Harness 的核心教训
| 可用信息 | 最佳准确率 |
|---|---|
| 仅分数 | 41.3 |
| 分数 + 摘要 | 38.7 |
| 完整轨迹 | 56.7 |
摘要无法替代原始轨迹——这是对所有上下文压缩策略的重要警示。
Timeline
- 2024-08: ADAS 论文为代码空间搜索奠定基础
- 2026-03: Meta-Harness 论文展示完整历史访问的威力
- 2026-04-13: 整理进 KB,综合 Hermes 和 Meta-Harness 的设计模式
- 2026-04-13: 新增 OpenAI Codex Harness Engineering 工业实践验证,扩展设计模式对比表