AI Coding Agent 的上下文工程,是为一次任务设计完整的信息环境:Agent 首先看到什么、之后可以发现什么、哪些事实更权威,以及旧假设什么时候必须失去优先级。
目标不是给最多上下文,而是建立一条从用户结果到当前证据的最短可靠路径。
四层有效上下文
- 当前任务:本轮结果、范围、完成证据和停止条件。
- 项目上下文:稳定的产品边界、构建命令、代码约定和文档地图。
- 历史上下文:已验证决策、失败路径、最近交接和精确身份。
- 外部上下文:当前任务所需的最新合同、官方文档、市场证据或运行状态。
把当前任务放在最前面,其他层保持可发现。一份把四层内容全部混在一起的巨型 Prompt,会迫使 Agent 在理解任务前先判断哪些信息有用。
哪些内容属于仓库指令?
AGENTS.md、CLAUDE.md 或同类文件适合保存全仓长期成立的规则:
- 如何构建与测试;
- 代码和模块约定;
- 不能偏移的公共边界;
- 编辑与验证的安全默认值;
- 指向聚焦文档的索引。
GitHub 已在多种 Copilot 使用面中支持仓库级、路径级和 Agent 指令文件:custom instructions support。
指令应保持简洁。OpenAI 分享过一个重要经验:巨大的 AGENTS.md 会消耗稀缺上下文并稀释真正重要的规则,指向聚焦文档的导航地图更有效:Harness engineering。
哪些内容属于任务简报?
只对本轮成立的事实,不要写成永久规则:
- 用户当前请求;
- 第一处断链;
- 当前涉及的文件;
- 正在检查的精确版本或部署;
- 必须运行的检查;
- 临时非目标。
任务结束后,简报也随之失效。把它提升成全局指令,只会制造过期规则。
哪些内容属于项目记忆?
项目记忆应保存未来会反复使用的事实:
- 已确认的产品决策及理由;
- 已验证的接入入口;
- 重复出现的失败模式;
- 稳定的用户偏好;
- 未完成工作的最新交接。
不要把原始日志、每条命令或未经验证的诊断写成稳定记忆。保留证据入口,让新 Agent 能够回到当前系统复核。
使用渐进式检索
可靠的启动顺序是:
- 读取当前任务和硬边界。
- 检查最小相关代码与运行状态。
- 用具体问题查询文档或记忆索引。
- 只打开高相关来源。
- 新证据指向共享依赖时,再扩大范围。
VS Code 的上下文指南也区分了自动选择的工作区上下文,以及用户显式附加的文件、目录、符号、终端输出和源码改动:Add context to chat。
验证上下文,而不只是验证回答
好的上下文应该真实改变执行质量。可以检查一个全新会话能否:
- 快速找到当前权威;
- 避免已知失败路径;
- 说出正确验证方式;
- 保持产品边界;
- 产生更小、更相关的 diff。
如果仍然必须粘贴整段旧聊天,说明耐久上下文不完整。如果每个任务都会收到多页无关规则,说明上下文过宽。
常见失败
- 倾倒聊天记录:保留了对话顺序,却没有保留当前事实。
- 所有内容都永久化:把一次事故提升为通用规则。
- 使用泛词检索:用“项目”“任务”匹配,而不是具体问题。
- 记忆覆盖代码:让旧笔记高于当前行为。
- 没有证据入口:要求未来 Agent 相信无法复核的描述。
可复用上下文简报
用户结果
完成后用户能做什么。
当前证据
文件、测试、日志、页面与精确身份。
不变量
产品行为、数据权威、隐私与公共合同。
检索索引
哪些聚焦文档或记忆查询可能有用。
验证方式
最终消费者必须显示什么。
会话交接
已验证状态、剩余缺口与下一步安全动作。
核心原则
上下文工程是服务行动的信息架构。给 Agent 一个清楚的任务、一张可信地图,以及在证据需要时继续检索细节的能力。