AM
专题网页
Agent Memory
3. Working Memory

工作记忆怎么组装

工作记忆负责把这一轮真正该看的材料摆到模型眼前。它不负责长期存档,但它直接决定模型这一刻到底看见了什么。

很多系统的问题不是没有记忆,而是记忆没有被正确送进当前推理。比较工作记忆时,不能只看“有没有检索”,还要看 top-k 取多少、怎么排序、放进 prompt 的哪个位置,以及 token 预算怎么分。

Plain Explanation

如果说长期记忆像档案室,那工作记忆就像代理此刻真正摆在眼前、准备拿来思考的材料。材料找到了不代表就有用,关键是它有没有被按顺序摆好、有没有挤掉更重要的信息。

When To Use
  • 当系统已经有检索能力,但回答质量仍然不稳定时,通常要回头看工作记忆编排。
  • 当上下文来源很多,比如用户画像、任务状态、检索块、工具输出同时存在时,工作记忆是关键层。
  • 当你发现“明明查到了,却没用上”时,问题往往就在这一层。
Design Questions
  • top-k 是固定值,还是按任务动态调整?
  • 排序看 relevance、recency、importance,还是 source priority?
  • 用户 profile、任务状态、最近窗口、工具输出各占多少 token?
Evaluation Metrics
top-k 改大改小后,结果会不会明显飘
不同槽位各吃了多少 token,值不值
高价值记忆到底有没有稳定进入 prompt
任务一长,当前上下文是不是开始乱跳
Mainstream Mechanisms

先抓住这一页真正主流的机制主线

这一组不是“所有相关概念”,而是这个维度最核心、最值得先理解的主线。带下划线的机制可以直接点开,会弹出一个更细的解释窗。

5. Token Budget Allocation
Pipeline

把这些机制放回一条工作流里看

如果只看孤立卡片,机制之间的关系会很模糊。把它们放回 pipeline 中,就能看清每一步在系统里承担什么角色,以及问题通常出在什么位置。

1

Query

根据当前任务形成搜索或状态查询。

2

Retrieve

取回长期记忆、profile、状态和外部上下文。

3

Rank

按 relevance / recency / importance 做排序。

4

Slot

将不同来源的内容放入固定 prompt 槽位。

5

Budget

按优先级分配 token,决定谁被保留或截断。

6

Inject

把最终工作记忆注入当前推理回合。

Mechanisms

扩展机制与细部取舍

Selection

Top-k Retrieval

从长期记忆中取若干最相关条目送入当前回合。

Strengths

逻辑直接,容易测试与部署。

Risks

k 太小会漏,k 太大会带噪声。

Best Fit

第一版记忆系统与中等复杂度知识 agent。

Relevance + recency + importance

Hybrid Ranking

用多因素排序,而不只依赖单一语义相似度。

Context assembly

Prompt Slotting

把不同来源的记忆放入明确槽位,例如 user profile、constraints、task state。

Examples

把这一章放进真实场景里看

查到了,但没用上

系统从长期记忆里成功召回了用户的团队规范,但 prompt 最终被工具日志和最近闲聊挤满,规范没有真正进到模型当前上下文里。

Takeaway: 工作记忆的问题常常不是“没查到”,而是“没摆好”。

多来源上下文冲突

同一轮里同时有用户画像、任务约束、检索结果和 shell 输出,如果没有明确槽位,它们会争夺 token 预算,最后谁进上下文往往变得随机。

Takeaway: 工作记忆是编排问题,不只是检索问题。
Architecture Notes

从系统设计角度看这个维度

这一部分补充的是更偏 memory system design 的视角:不只看概念本身,而是看这些机制在真实系统里应该放在哪一层、如何被组织、如何被观测。

工作记忆通常是 retrieval pipeline、prompt builder 和 budget allocator 一起决定出来的。
在系统层,最好把 profile、constraints、task state、retrieved memory 分开放,而不是最后一把全混进 prompt。
这一层一定要可观测,至少要知道哪些记忆被召回了、哪些被裁掉了、哪些最终真的进了模型上下文。
Misconceptions

这一章最容易被误解的地方

误解一:检索完成之后,工作记忆的工作就结束了。
误解二:只要 top-k 调大,系统就会更稳。
误解三:工作记忆只是一个 prompt 拼接层,不需要单独设计和观测。
Deep Dive

展开理解这个维度

为什么工作记忆经常被低估

很多人以为“查到了记忆”就万事大吉,但模型最后是按 prompt 工作的,不是按数据库工作的。真正影响输出的,是这些材料有没有被正确摆到模型眼前。

  • 错误的槽位编排会让高价值记忆被埋在低价值上下文里。
  • 排序逻辑单一时,最新但不关键的信息可能压过长期重要事实。
  • token budget 不清晰时,系统行为会随输入长度剧烈抖动。

工作记忆常见设计模式

成熟系统通常会把 prompt 像工作台一样分区,而不是把所有检索结果、最近对话和约束条件胡乱拼成一大段。

  • System / policy instructions 固定预算。
  • Recent interaction 与 task state 保持高优先级。
  • Retrieved memory、profile、constraints 按槽位注入。

为什么很多研究开始做层级化 working memory

长任务里,真正有用的不是把所有 action-observation 全塞进上下文,而是把和当前子目标最相关的那一小部分内容留在眼前,其余内容要么先总结,要么先放到一边。

  • 一种常见思路是按 subgoal 切块,而不是按原始时间顺序平铺历史。
  • 这样做能减少重复日志和低价值观察对当前推理的干扰。
  • 通俗地说,就是别把整本施工日志摊满桌,而是先只拿和当前步骤有关的那几页。

如何评估工作记忆是否足够好

工作记忆好不好,看的是“模型这轮有没有真的用上该用的信息”。这不只是检索质量问题,更是编排质量问题。

  • 相同任务在不同输入长度下是否仍然稳定表现。
  • 长工具链执行后,关键约束是否仍能被模型看到。
  • 个性化信息是否能进入当前回合,而不是只存在数据库里。

用更通俗的话说,工作记忆像什么

如果长期记忆像档案室,那工作记忆就像你此刻摊在桌面上的材料。档案室里资料再多,如果桌面上摆错了顺序、遗漏了关键页,实际做决定时还是会出错。

  • 检索像是把资料从档案室拿出来。
  • 排序和槽位像是决定哪些资料放在桌面正中,哪些放在一边。
  • token budget 则像桌面大小,桌面有限,就必须有取舍。
Failure Modes

常见失败模式

相关记忆召回到了,但没有正确进入 prompt 结构
工具输出挤占 token,导致约束与 profile 消失
排序只看语义相似度,忽略 recency 与 importance
Previous Chapter
2. Long-term Memory

长期记忆怎么存

看记忆底层表示如何承接不同信息类型

Next Chapter
4. Write Policy

何时写入长期记忆

看什么信息被允许沉淀为长期记忆