Damn AgentBeta

上下文工程

上下文工程关注如何组织任务信息,让模型在有限窗口内稳定完成工作。

上下文工程不是把提示词写得更长,而是把任务所需的信息以稳定、可审计、可压缩的方式交给模型。

上下文分层

推荐把上下文分成四层:

  1. 系统约束:角色、权限、输出格式、禁止事项。
  2. 用户意图:目标、成功标准、边界。
  3. 工作状态:已完成步骤、工具结果、失败记录。
  4. 参考材料:文档片段、代码、日志、外部资料。

好的上下文长什么样

context-template.md
目标:
- 修复文档站 build 失败

已知事实:
- Next.js 版本是 16.x
- 文档内容来自 content/docs

当前阻塞:
- MDX 编译报 frontmatter 错误

下一步:
- 先定位具体文件
- 再修复 frontmatter 或 MDX 语法

常见策略

  • 对长资料先做结构化摘要,再注入原文片段。
  • 对工具结果保留来源和时间。
  • 对用户偏好只注入与当前任务相关的部分。
  • 对失败轨迹保留关键节点,而不是完整 token 流。

装配流程

上下文装配可以按固定流程执行:

  1. 明确目标:写出本轮要完成的可验证结果。
  2. 列出约束:权限、输出格式、禁止事项、用户偏好。
  3. 选择证据:只注入和当前目标直接相关的文件、日志、检索结果。
  4. 压缩历史:把已完成步骤、失败原因和待办项压成结构化状态。
  5. 预留输出预算:为模型回答、tool call 参数和错误重试留下 token。
  6. 记录来源:为每个证据片段保留路径、行号、URL、时间或查询条件。

如果每轮上下文都是临时拼接的字符串,后续很难解释一次失败到底是模型问题、证据问题还是装配问题。

证据引用

推荐把证据写成可追踪对象,而不是只写自然语言摘要:

{
  "source": "content/docs/practices/evaluation.mdx",
  "kind": "file",
  "locator": "lines 1-41",
  "summary": "页面已有评测维度、评测样例和回归流程。",
  "usedFor": "判断是否需要补充发布闸门和指标章节"
}

这样做有两个好处:模型能看到摘要,人类能回到原文复核。对于代码、论文、网页、日志和工具输出,都应保留类似定位信息。

压缩策略

策略适合场景注意事项
任务摘要长对话、长任务恢复保留目标、约束、已完成、下一步
证据索引多文件、多网页、多检索结果摘要加定位,不要复制全部原文
失败摘要多轮重试、复杂排障记录失败签名和已排除路径
角色视图多 Agent 或多人协作不同角色只看到必要上下文
冷存储引用大日志、大文件、历史 trace用路径或 ID 引用,按需读取

压缩后的上下文要能支持下一步行动,而不是只给出“我们讨论过很多内容”的概括。

反模式

  • 把全部聊天历史、全部文件和全部工具结果塞给模型。
  • 为了“保险”重复注入多份相同约束,导致窗口浪费。
  • 摘要只写结论,不保留来源,后续无法复核。
  • 长期记忆没有时间戳和适用范围,旧信息污染新任务。
  • 工具输出没有截断策略,异常日志挤掉真正重要的任务状态。

质量检查

一次上下文构造完成后,检查它是否满足:

  • 模型能知道目标是什么。
  • 模型能知道不能做什么。
  • 模型能引用证据。
  • 模型能判断何时停止。
  • 模型能知道哪些信息是事实、哪些只是计划或假设。
  • 人类能从上下文回到原始证据。

延伸阅读

参考来源

On this page