铭鸿体育资讯网

从 Pi 的 Compaction 学到的 Agent 经验 很多人以为 AI

从 Pi 的 Compaction 学到的 Agent 经验
很多人以为 AI Agent 聊久了“忘事”,是模型不行。
其实更真实的原因是:它的脑子装满了。

一次 coding agent 请求,塞进去的不只是你的新问题,还有系统提示、工具定义、项目规则、历史对话、工具调用和输出。代码改得越久,上下文越膨胀,超过模型窗口,API 直接拒绝。

Pi 的解法叫 Compaction。
它不是删除聊天记录,而是把早期对话压成一份“交接班摘要”,同时保留最近的原始现场。模型下一轮看到的是:
系统规则 + 历史摘要 + 最近工作 + 新问题
真正反直觉的是:压缩虽然能续命,却会让 prompt cache 失效。

因为缓存要求请求前缀一字不差。旧历史被摘要替换后,后面的内容哪怕原封不动,也要重新计算。
所以 Pi 的策略很克制:

1️⃣ 默认保留最近 2 万 tokens,旧内容才摘要
2️⃣ 一轮任务结束后再检查,尽量吃完缓存红利
3️⃣ 真溢出了,才紧急压缩并重试
4️⃣ 摘要必须保留目标、进度、决策、失败尝试、文件状态和下一步

最重要的结论:
Agent 的护城河不是 context window 更大,而是在丢掉 90% 对话后,它还知道下一步该做什么。
做 Agent 的人,别把摘要写成流水账。能恢复任务状态的摘要,才是记忆;不能指导下一步的,只是压缩过的废话。

你觉得 Agent 应该“记住全部”,还是应该“只记住下一步需要的”?
AI AIAgent ClaudeCode Codex 独立开发 Pi