Skip to main content

Agent 上下文怎么管?4 个循环动作 + 6 个常见坑

· 7 min read

Agent 上下文不是越大越好,本质是在有限窗口里做信号密度管理

  1. 4 个循环动作:select 选相关 / structure 结构化分区 / compact 压缩 / persist 外部沉淀,每轮对话都要走一遍。
  2. Context 是工作台,Memory 是后台仓库——工作记忆有限又金贵,跨轮次靠检索联动。
  3. 压缩不是写总结,是写交接文档,保留目标 / 进度 / 决策 / 约束 / 教训。
  4. 多 Agent 隔离:子 Agent 只拿必要信息,结构化结果回传主 Agent 整合。
  5. 6 个常见坑:上下文腐烂、压缩失真、工具结果膨胀、多 Agent 串扰、成本与延迟、难以评估。
  6. 评估四指标:任务成功率、事实准确率、token 成本、响应延迟。

Context 是什么:模型的工作记忆,不是仓库

每轮模型决策时能看到的所有信息,就是上下文(context)——也就是它的工作记忆。

打个比方:模型是 CPU,上下文是内存条,外头的存储才是硬盘。内存有限又金贵,CPU 干活得先从内存拿数据,实在拿不到才去翻硬盘。

所以上下文从来不是越大越好。对话跑了几十上百轮,全量塞进去,最早那几句话早被埋在最底下,模型想看都看不清。

还有两个现象更要命:

  • Lost in the middle:模型对长段文字的中间部分注意力天生就弱。
  • Context rot(上下文腐烂):窗口还没塞满,无关信息一多,回答质量就开始往下掉。

本质就一句话:管理信号密度。窗口不是仓库,是工作台。让模型每次开工,台面上摆的全是眼下真正用得上的信息。

Context vs Memory:两码事

开始之前先交代个前提——context 和 memory 是两码事:

  • Context(上下文):模型这一轮真正看到的,是眼前的工作台。
  • Memory(记忆):跨轮次存下来的,是后台的仓库。

中间靠检索联动。Memory 本身也分层:

存什么变速度
情景记忆(episodic)发生过的事:历史对话、做过的任务、当时的决策慢变量,几乎不动
语义记忆(semantic)用户的事实和偏好:风格喜好、业务规则、项目背景慢变量
工作记忆(working)当前任务:最近几轮对话、正在跑的工具调用快变量,每轮都在换

底层是慢变量,顶层是快变量——搞混这两层是常见的设计错误。

4 个循环动作

业界把玩法收敛成四个动作,每一轮对话都要走一遍。

Select:选相关

信息不能全端上桌。RAG 检索、重排序、时间衰减,都是干这个的——相关的才放进来

Structure:结构化分区

挑进来的不能落成一堆。得分区、摆好:

  • 系统指令放一块
  • 工具定义放一块
  • 记忆放一块
  • 用户输入放一块

模型一眼就能分清哪是规矩、哪是事实、哪是任务。

Compact:压缩

历史不能全留,得压缩。这个最有讲究,下一节单独讲。

Persist:沉淀到外部

眼下用不上、以后一定用得上的,别占窗口——存到外部,要用再捞回来。

记住这四个动作不是做一遍就完,而是每一轮对话都在循环。

压缩的坑:不是写总结,是写交接文档

好多人以为压缩就是让模型把对话总结一下。真这么干,迟早翻车。

那种总结是叙事式的,像写日记——把故事讲完整就完。可 Agent 要的不是故事,是状态

所以业界讲究的是 compaction——提炼保留的不是聊了啥,是这 6 样东西:

  1. 当前目标:解决啥问题、成功标准是啥。
  2. 已完成:做了啥、结果咋样。
  3. 未完成:下一步干啥、卡在哪。
  4. 关键决策:为啥选这套方案。
  5. 约束:哪些不能碰。
  6. 失败教训:哪条路走不通,别再走。

还有常被忽略的安全停点:别等窗口满了才压,要挑任务的自然停点——一次工具调用结束、一个子任务完成——趁剧情告一段落,压一次交接好状态,开新窗口接着干。

你看压缩前是流水账,压缩后是交接文档。Agent 能不能长时间稳定干活,就看这份交接文档写得好不好。

多 Agent 系统的上下文隔离

把视角往上拉,从单个 Agent 看到整个系统。核心一句话:让 Agent 按需取用,别全量携带——别指望模型自己记住一切,那既不靠谱又费钱。

架构上分三部分:

  • 左边检索层:向量检索、重排序、时间衰减都在这层干活,从记忆仓库里捞相关的东西。
  • 中间编排器:每收一次请求,就按当前任务动态组装上下文——系统指令放多少、记忆放多少、工具结果放多少,比例随任务变。
  • 右边隔离层:专管多 Agent 的协作。

最常见的错是把主 Agent 的全量上下文复制给子 Agent——又贵又乱。正确的做法是:子 Agent 只拿干活必要的那点信息,干完活把结论用结构化结果交回来,由主 Agent 整合。

6 个常见坑

盘六个坑,踩中任何一个 Agent 都会越跑越笨。

一、上下文腐烂——窗口没满,垃圾一多,质量就开始掉。管理动作得前置,别等问题出来再补救。

二、压缩保真度——压得越狠越省钱,但细节丢得越多,搞不好把关键事实压歪。保真和长度永远在拔河。

三、工具结果膨胀——真实系统里工具调用才是 token 的大头。一次返回上千行,太常见。这块不管,前面全白干。

四、多 Agent 串扰——隔离做不好,子 Agent 互相污染。传多了是灾难,传少了干不成活,这个度真难拿捏。

五、成本与延迟——系统指令、工具定义这些万年不变的内容,每轮全量重发,钱包扛不住。生产上得配缓存。

六、不好评估——一般就看四个数:任务成功率 / 事实准确率 / token 成本 / 响应延迟。想改方案,先拉基线,用数据说话。

怎么回答「上下文怎么管」这道题

绕回这道题,一个漂亮的回答长啥样?

第一步讲本质——一句定调:在有限窗口里做信号密度管理,让模型每次决策都拿到眼下用得上的信息。

第二步讲方案——四个动作展开:select 选相关、structure 结构化分区、compact 在安全停点提炼、persist 沉淀到外部记忆,每轮循环。

第三步讲权衡——任何方案都有代价:压太狠丢细节,留太多费钱费时间。得结合具体任务,在质量 / 成本 / 延迟 / 一致性之间取舍,再用指标验证。

制定方向方案显功力,权衡见成熟。三步下来,这道题就答完整了。


References

  1. Agent 系统上下文管理详解:解决上下文膨胀、信息丢失、token 超限,架构设计与实战方案 —— AI大模型原理, 哔哩哔哩, 2026-09-07