喂对上下文
上下文工程
结论先行
Agent 的输出质量,八成取决于它看到了什么、什么时候看到。
给太少 → 编造 API 和路径;给太多 → 抓不住重点,忘了要干什么。
原则:先给结构,再给文件;先给规则,再给任务;一次只做一件事。
上下文分层(从长期到临时)
| 层 | 内容 | 放在哪 | 生命周期 |
| --- | --- | --- | --- |
| 1 | 项目规则 | AGENTS.md(全局与项目各一份) | 永久 |
| 2 | 架构与决策 | docs/、docs/decisions/ | 长期 |
| 3 | 相关源码 | 按任务挑 3-5 个文件 | 单任务 |
| 4 | 报错与测试结果 | 终端输出、日志 | 单次迭代 |
| 5 | 对话历史 | 会话本身 | 会累积、需压缩 |
步骤
1. 新会话先做三件事
- 读 AGENTS.md(全局 + 项目),确认规则与禁忌;
- 列目录结构(两层即可,不要贴整棵树);
- 明确本次验收标准:交付什么、怎么算完成。
2. 给文件,不给全文
```powershell
# 先看结构
Get-ChildItem -Recurse -Depth 2 -Directory | Select-Object FullName
# 再精准读
Select-String -Path src\*.mjs -Pattern "export function"
```
检查点:能说出"这次任务只依赖哪 3 个文件"。
3. 规则写进文件,不要靠记忆
- 全局禁忌(不许动生产、密钥不进仓库、结论要带证据)写进 AGENTS.md;
- 项目背景(技术栈、命令、目录约定)写进项目 AGENTS.md;
- 每次都要重复的说明 → 说明它该被文件化。
4. 长任务分段
- 每个子任务结束就总结一次结论,避免把早期细节一直背着;
- 换主题就开新会话,或显式声明"以下内容与上一个任务无关"。
5. 报错只给关键行
贴完整日志会挤掉源码;给最后 20 行 + 触发命令即可。
坑
| 现象 | 原因 | 处理 |
| --- | --- | --- |
| Agent 编造不存在的函数 | 只给了描述,没给源码 | 给它真实文件或导出列表 |
| 越改越乱 | 上下文里混了两个任务 | 拆会话,或先收尾再开新任务 |
| 忽略项目约定 | 规则没落盘 | 写进 AGENTS.md,不要口头说 |
| 响应开始变慢/重复 | 历史太长 | 压缩历史,保留结论与未完成项 |
验收清单
- [ ] 本次任务的验收标准写清楚了
- [ ] 已读并遵守
AGENTS.md - [ ] 只加载了必要的文件,能说明为什么是这几个
- [ ] 报错信息是精简后的,不是整屏日志
- [ ] 长任务有阶段性小结
别做的事
- 别把整个仓库或几万行日志贴进去;
- 别在同一会话里连做三个不相关的任务;
- 别指望"上次说过"——规则要落在文件里。