上下文太长怎么办:压缩、外部笔记与拆分
定义
长任务中的挑战是上下文窗口有限而信息持续增长。常用策略包括 Compaction、结构化笔记和子 Agent:分别压缩当前对话、把状态外化、隔离深度探索;应按任务组合,而不是默认三者缺一不可。
先搭一个心智模型
长任务的上下文像一张不断堆文件的办公桌。常用的三种动作是:把旧材料压成摘要、把长期状态写进外部笔记、把独立问题交给另一张桌子处理。
说明
Compaction 在上下文接近上限时用 LLM 对已有对话做摘要,保留关键信息。需要区分信息风险等级:旧 tool call 结果通常可清理,但架构决策和未解决 bug 的描述不能丢。摘要应按“已完成、未完成、关键决策、已知问题”结构化。
结构化笔记把短期记忆外化为长期记忆:Agent 主动把关键信息写到外部文件,重置后从笔记读回恢复记忆。笔记格式要固定且结构化,否则读回时还要额外消耗 Token 理解。
子 Agent 架构让主 Agent 把深度探索委派给子 Agent,子 Agent 在独立上下文中工作,只返回精炼摘要。这样隔离了草稿对主上下文的污染,也节省 Token。预加载和按需获取是补充策略:高频信息预加载,长尾信息等需要时检索。
跟着一个例子走
一场持续数小时的线上故障排查
Agent 已看过大量日志、改过配置并跑了多轮测试,窗口开始被旧输出占满。
- 压缩已经结束的阶段
把“发现什么、排除了什么、当前假设”写成可核对摘要,原始日志仍留在外部文件。
- 保存必须跨轮次的状态
把待办、命令结果和回滚点写入任务笔记,新窗口从笔记恢复而不是猜。
- 隔离独立调查
让子任务只分析某一类日志,主任务只接收结论和证据位置。
边界与误区
Compaction 和结构化笔记有什么主要区别: Compaction 压缩旧信息继续留在当前上下文中使用,适合连续工作;结构化笔记把信息写到外部文件系统,之后按需取用,适合可能被中断或需要跨 session 延续的场景。
为什么子 Agent 架构能节省主 Agent 的 Token 消耗: 子 Agent 在独立上下文中完成深度探索,只向主 Agent 返回精炼摘要,主上下文得以保持精简。