尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

200K的窗口也会不够用:给Agent 的上下文做“内存调度“

200K的窗口也会不够用:给Agent 的上下文做“内存调度“ 200K 的窗口也会不够用给 Agent 的上下文做内存调度大模型上下文窗口从 4K 一路飙到 200K、甚至 1M很多人以为记忆问题就此解决了。但真正跑过长期 Agent 的人都知道窗口越大越容易撑死。上下文不是仓库塞得越多越好——它是一块有成本的稀缺资源每多一个 token都在消耗注意力、推高延迟和费用还稀释了真正重要的信号。本文借用操作系统管理内存的思路聊聊怎么给 Agent 的上下文做调度。一、窗口不是越大越好被忽视的上下文税先拆一个误区。加大上下文窗口不等于提升有效记忆。模型对窗口内信息的利用是位置相关且不均匀的靠近结尾的内容权重更高夹在中间的大段容易被忽略lost-in-the-middle 现象。换句话说窗口是容量不是可用记忆。更要命的是成本结构。上下文按 token 计费而且越长注意力计算开销近似平方级增长至少在朴素实现下。一个跑 50 步的 Agent如果每步都把完整历史原样塞回累计上下文面积会爆炸——这正是很多团队踩过的坑。所以全量塞进去既不便宜也不聪明。真正的约束是窗口里的每一个 token 都在和别的 token 争夺模型的注意力预算。你塞进去的越多关键指令、用户意图被稀释的概率就越高。这就是为什么不少 Agent 跑到后面开始答非所问“忘记开头的要求”——不是模型变差了是上下文被长尾数据淹没了。二、把上下文当内存工作集与页面置换解决这个问题最好用的思维模型来自操作系统。OS 从不让每个进程独占全部物理内存而是用虚拟内存 页面置换只把当前工作集留在内存其余换出到磁盘需要时再换入。Agent 的上下文窗口本质上就是一块物理内存——容量有限、访问昂贵。而智能体的全部知识对话历史、工具返回、文档、用户偏好是虚拟地址空间——远超窗口容量。调度要做的事就是决定此刻哪些内容留在窗口内存哪些换出到外部磁盘/记忆层。这里有三个可操作的概念工作集Working Set当前这一步推理真正需要的信息。比如调用某个 API 之前只需要它的入参 schema不需要三个月前的聊天记录。常驻集Resident Set系统提示、用户当前意图、最近几轮对话——这些高频访问应始终留在窗口。换出候选Eviction Candidate长尾历史、已完成的子任务结果、大段检索文档——可压缩、可摘要、可外置。三、四种调度策略什么该留、什么该换出把内存调度落到 Agent 上有四类常见策略从简单到进阶1. 滑动窗口Sliding Window最朴素只保留最近 N 轮。好处是实现简单、成本可控坏处是可能丢掉很久以前但很关键的用户约束“我全程都用 conda”。适合短任务。2. 摘要压缩Summarization当窗口逼近上限把旧内容交给一个小模型做摘要用更短的 token 保留语义骨架。这是很多长对话产品的做法。难点在于摘要会丢失细节且摘要本身可能引入偏差。3. 基于重要性的优先级淘汰LRU-K / 重要性打分借鉴页面置换的 LRU-K不是简单最旧就淘汰而是综合访问频率、与当前任务的相关度、是否包含用户硬性约束来打分优先换出低分内容。这实际上需要一套上下文账本来记录每个片段的元信息。4. 外置检索Offload Retrieve最彻底把不常用的上下文持久化到外部存储窗口里只留一个指针/索引当前步需要时按相关性检索一小块回来填入窗口。窗口因此始终只装当前工作集成本和注意力都被压在最低。这四种不是互斥的。一个成熟的 Agent 往往是组合拳常驻集常驻、长尾摘要、关键约束打高分、冷数据外置检索。四、工程落地把记忆当成外存talk is cheap怎么落地核心是把外部存储标准化、可检索。一个常见架构是Agent 在每一步推理前先根据当前任务构造一个轻量查询去外部记忆 / 知识层取回最相关的几段再拼进窗口推理结束后把新产生的重要结论写回外部层。窗口本身只做当前工作集的短期载体。这里可以类比太忆 TiMEM 这类记忆与 RAG 基础设施的定位它把外存标准化了——智能体把低优先级的上下文换出到记忆层需要时再按相关性检索回来窗口始终只承载当下最相关的信息。调度的换入换出逻辑正是对接在这层之上的策略。几个落地时容易踩的坑指针失效外置后只在窗口留索引但检索条件写错导致需要时取不回。索引和检索要配套设计。摘要塌陷过度依赖摘要压缩几轮之后原始约束被软掉。关键用户约束应作为高优先级常驻或结构化字段而非压进摘要流。检索抖动每次重新检索都换一批内容回来造成 Agent前后不一致。可以给换入内容加稳定性约束如会话级固定片段。五、结语上下文工程是 Agent 的操作系统课把 Agent 的上下文窗口当成一块有限、昂贵、需要调度的内存很多看似玄学的问题就有了抓手为什么它越聊越傻因为工作集被长尾稀释了。为什么加长上下文反而变贵变慢因为你把磁盘当内存用了。未来的 Agent 竞争力未必在于谁家模型上下文标到 10M而在于谁能把有限窗口调度得又准又省——像好的操作系统一样让正确的数据在正确的时刻出现在正确的位置。上下文工程说到底是一门给智能体分配注意力预算的手艺。
返回列表