Files
agent/learning/agent-memory/active-recall.md
T
2026-07-10 18:01:44 +08:00

6.6 KiB
Raw Blame History

Agent Memory 主动回忆与设计题

使用规则

先闭卷回答,再展开参考答案。每题按下面标准自评:

  • 0:没有答案,或只复述系统名称。
  • 1:能说出概念,但不能解释原因或边界。
  • 2:能给出机制、证据或反例。
  • 3:能迁移到新任务并做出设计判断。

第一轮不追求满分。真正值得记录的是“我在哪种问题上无法自己推导”。

第一组:核心概念

1. Agent memory 和普通 RAG 的根本区别是什么?

参考答案

普通 RAG 主要解决外部知识的查询与注入;Agent memory 还要处理由交互产生的状态如何写入、更新、遗忘并影响未来动作。它与 policy 形成反馈环,一次错误写入会改变后续行为,因此还需要 transition verification、credit assignment 和 governance。

2. 为什么语义相似的两段历史不一定能被压成同一个 memory state

参考答案

因为它们可能要求不同动作。安全合并的判断应是:对当前问题,是否存在一个共同动作,让两段历史的决策损失都在允许范围内。描述相似只是检索信号,不是决策兼容证明。

3. 长上下文已经能放下全部历史时,为什么仍可能需要 memory?

参考答案

可能仍需要降低延迟与 token、减少干扰、跨 session 持久化、支持删除与来源治理、维护执行分支,以及把经验编译成规则。但如果任务短、成本可接受且无需持续学习,长上下文可能就是更好的方案,所以必须作为 baseline。

4. 事实记忆和执行状态有什么区别?

参考答案

事实记忆回答“世界或用户是什么样”,适合主题文档、时间线和结构查询;执行状态回答“任务走到了哪里、哪些约束和分支仍有效”,需要保留动作顺序、子目标边界和错误路径。只用事实检索重建长任务状态容易发生碎片化。

5. 什么经验适合被编译进 prompt 或 skill

参考答案

跨样本稳定、反复出现、可以验证、能明确改变行为边界的经验。例如固定抽取边界、可靠操作流程或失败恢复规则。短期事实、未经验证的反思和高度状态依赖的决策不适合直接固化。

6. 为什么只看最终任务成功不能判断 memory 写入是否可靠?

参考答案

最终成功可能掩盖中间发生的遗漏、破坏或幻觉,这些错误会留在持久状态中,未来才触发;最终失败也无法定位是哪个 update、retrieval 还是回答步骤造成。因此需要 transition-level 检查和局部归因。

第二组:比较与诊断

7. 一个向量库中确实保存了正确答案,但 Agent 仍然回答错误。列出两个不同层面的原因。

参考答案

表示层可能已经丢失问题所需的动作、时序、因果关系;或者存储保留了细节,但 passive retriever 只返回摘要,没有给 Agent 补查原始证据的机会。还可能是证据已正确取回但 actor 推理失败,这应与 retrieval failure 分开。

8. 为什么 stronger retriever 不一定能修复 weak memory manager

参考答案

如果写入阶段已经错误合并主题、删除时序、生成错误摘要或遗漏关键谓词,后续检索面对的是被破坏的表示上限。检索只能选择现有内容,不能恢复从未保存的区别。

9. 什么时候 memory index 的构建成本可能值得?

参考答案

需要同时满足:未来问题所需关系能被 schema 表达;很多问题确实需要跨记录聚合;同一索引会被足够多次查询,从而摊销构建成本。否则 raw evidence 加主动工具读取可能更灵活。

10. 一个 online memory 方法比 vanilla Agent 成功率高 3%,能否说明有效?还缺什么?

参考答案

不能。需要计算 memory induction、retrieval、verification 和注入增加的全部 token、延迟和调用;与使用相同预算增加 actor steps 的 baseline 比较;做多次运行并报告方差;检查收益是否集中在特定域以及是否能跨任务复用。

第三组:设计题

11. 为一个长期运行的 coding agent 设计 memory

场景:Agent 每天修改同一仓库,任务跨 session;它需要记住架构约束、失败的修复尝试、当前 issue 进度和可复用命令。请给出最小设计,并说明每种内容放在哪里。

参考框架
  • immutable log:原始终端、代码 diff、测试结果,负责审计和重新解释。
  • topic documents:模块职责、架构约束、项目惯例,带来源和更新时间。
  • execution state:当前 issue 的计划、完成步骤、阻塞和失败分支。
  • compiled skills:经过多次验证的构建、测试、迁移和修复流程。
  • controller:按任务选择当前状态与相关主题,必要时回查原始日志。
  • verifier:任何架构事实和规则升级前检查证据;代码执行仍以当前仓库和测试为准。
  • baseline:与 repo 文档 + 当前 session 长上下文比较成功率、token、延迟和错误恢复。

12. 设计一次 memory-vs-long-context 实验

要求:至少包含任务集、对照组、主要指标、失败分类和安全检查。

参考框架
  • 固定任务:跨 session 事实更新、长程执行、重复流程迁移各一组。
  • 对照:truncation、full/long context、budget-matched vanilla actor、目标 memory 方法。
  • 指标:task success、总 token、p95 latency、memory size、过期事实率、错误恢复率。
  • 失败分类:write omission/corruption、representation loss、retrieval miss、reasoning failure、action failure。
  • 安全:植入一条外部不可信指令,检查它能否跨 session 触发敏感动作;验证删除请求是否真正传播。
  • 重复运行:至少多 seed,报告均值和方差,不只报告最好一次。

掌握度记录

日期 总分 / 36 最弱环节 能否完成设计题 下一次复习
待填写

建议复习节奏:第一次完成后 1 天、3 天、7 天分别闭卷再答。第二次开始只回答上次低于 2 分的题,并增加一个来自自己项目的新案例。