我做 agent 项目踩过最多的坑,不是 LLM 不够聪明、不是工具调不通、不是 context 不够长,是 agent 跑着跑着把自己跑歪了。
这件事在学术圈有个名字叫 prompt drift(提示漂移)。但很多 agent 教程不会专门讲这个——因为短任务里它不严重,做 demo 时几乎看不出来。只有当你真的尝试让 agent 连续跑 20 分钟、1 小时、1 天,问题才会暴露。
而做 AI4Research 这种月级别长程任务的人,这个坑是绕不开的。这篇是我自己的总结,分四块讲。
漂移的五种表现
(展开待补)
- 角色漂移:agent 忘了自己是谁
- 目标漂移:agent 偏离了原任务
- 约束漂移:agent 违反了禁令
- 风格漂移:输出风格悄悄变化
- 共识漂移:多 agent 互相强化错误前提
漂移的根本原因
四个:
- Context 中段权重低(Lost in the Middle)
- Recency bias(近因偏差)
- Self-influence(agent 自己的输出污染自己的 context)
- 多 agent 回声室
(每个原因详细解释待补)
五种防御手段
按工程复杂度从低到高:
1. Prompt Reinforcement(指令重申)
每 N 轮把 system prompt 的核心部分重新注入 context。简单粗暴,效果立竿见影。
2. Context Compression(上下文压缩)
不让 context 无限累积。Claude Code 的 /compact 就是干这个的。
3. Separation of Concerns(关注点分离)
每个 agent 只负责一件事,任务完成就重置 context。LangGraph、AutoGen 推崇的范式。
4. Verifier 机制
每一步输出都过一个 verifier(规则或另一个 agent),不通过就 reject 重做。
5. Persistent Memory + 主动召回
不靠 context window 记所有事,把关键事实写到外部记忆,每次决策前主动召回。
(每种手段的具体实现、踩坑经验待补)
我自己的取舍
(待补:我做长程任务时实际用的组合、为什么选这个组合、什么场景换什么组合)
检测漂移的工程手段
(待补:埋点、judge agent、embedding 相似度对比等)
草稿。这篇是我个人长程 agent 项目的核心经验之一,会持续打磨。欢迎邮件交流:wizveigar@outlook.com