fanfei's blog

智能体上下文工程:设计模式与实践

上下文工程(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 工业实践验证,扩展设计模式对比表