喂对上下文

给 Agent 喂对上下文:分层提供规则、文档、源码、报错,控制信息量与时机,避免幻觉和跑偏。

上下文工程

结论先行

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,不要口头说 |

| 响应开始变慢/重复 | 历史太长 | 压缩历史,保留结论与未完成项 |

验收清单

别做的事