Kunora Agent Memory 问题定义
摘要
智能体的记忆问题不是“模型忘性大”,而是缺少可治理的长期记忆系统。典型表现有三类:没有长期记忆、关键记忆召回不到、召回了太多无效或过期内容。
Kunora Agent Memory 的目标不是让智能体记住更多,而是让它在正确的时间,以正确的粒度,想起正确且仍然有效的内容。
背景与范围
智 能体正在从一次性问答工具变成长期协作的软件执行者。它需要跨会话、跨任务保留用户偏好、项目规则、业务约束、历史决策、任务状态和失败经验。
本文只定义现状问题,不定义最终架构。后续文档再展开产品目标、记忆类型、生命周期、召回管线、评价方法和 MVP 范围。
问题地图
flowchart LR
A[无长期记忆] --> B[用户反复解释背景]
B --> C[保存历史信息]
C --> D[召回不足]
D --> E[关键约束缺失]
E --> F[扩大召回范围]
F --> G[召回不准]
G --> H[噪声和过期内容污染推理]
| 问题 | 用户感知 | 直接原因 | 根本原因 |
|---|---|---|---|
| 无长期记忆 | “我已经说过很多次了” | 会话结束后上下文消失 | 缺少记忆写入、归属、有效期和更新机制 |
| 召回不足 | “之前讨论过,为什么没想起来” | 记忆没有写入、索引或命中 | 缺少任务、实体、项目、时间之间的结构化关系 |
| 召回不准 | “想起一堆没用的,还被旧信息带偏” | 召回结果过多、过旧或冲突 | 缺少有效性判断、冲突处理、排序和 token 预算控制 |
问题一:无长期记忆
用户长期使用代码智能体维护同一项目,并明确约定:项目使用 TypeScript 和 Fastify;数据库访问必须走仓库层;不要自动引入大型框架;新功能要先补测试。
当前会话里,智能体能遵守这些规则。几天后用户重新打开会话,让它实现新接口,智能体又开始在 route 文件里直接写 SQL,甚至建议引入新的 ORM。
这个问题的直接原因是智能体主要依赖上下文窗口。上下文窗口能支持短期对话,但不是长期记忆系统。会话结束后 ,项目规则、用户偏好、历史决策和任务状态没有变成可复用资产。
根本原因是系统没有“记忆对象”的产品模型。长期记忆必须回答:什么值得记住,属于谁,何时有效,冲突时谁覆盖谁,来源和置信度如何表示,执行任务时如何读取。
问题二:记忆召回不足
用户让智能体继续开发“客户导入”功能。三天前双方已经讨论过:CSV 导入必须支持断点续传,手机号是业务唯一键,重复客户不能覆盖原始来源字段,导入失败记录要生成可下载报告。
新会话中,用户只说:“继续做客户导入,把后端接口补完。”智能体找到了最近修改的文件,却没有召回这些业务约束。结果实现了一个基础接口:没有断点续传,还错误覆盖了客户来源字段。
召回不足通常发生在三个位置:
| 断点 | 结果 |
|---|---|
| 关键约束没有写入记忆 | 后续无从召回 |
| 记忆写入了,但没有按任务、实体、项目组织 | 检索难以命中 |
| 当前请求没有触发正确召回 | 记忆存在但没有进入上下文 |
根本原因是召回被当成文本搜索,而不是任务上下文重建。智能体执行前需要恢复“这件事以前发生过什么、当前到哪一步、哪些约束仍然有效、哪些历史决策会限制当前实现”。