主动记忆 Agent 需要的是干预预算,不是更大的数据库
一套面向创始人的上线门槛:判断 AI Agent 应该记住什么、何时打断、何时保持沉默,以及如何证明提醒真的改善了结果。
一项名为 Proactive Memory Agent(主动记忆 Agent) 的新研究,重新解释了长任务 Agent 中一种常见的失败:问题不一定是 AI 把事实弄丢了。事实可能还留在对话轨迹或上下文窗口里,却已经无法影响下一步决策。论文把这种现象称为 behavioral state decay(行为状态衰减)。研究团队的方案,是让第二个 Agent 维护一份精简的执行状态,并在每个关键节点选择:注入一条有针对性的提醒,或者保持沉默。
这对任何多步骤 AI 产品都很现实。客服 Agent 可能已经知道用户重启过设备,却再次要求对方重启;供应商准入 Agent 可能记录了法务尚未批准,却仍继续走向启用;编程 Agent 可能刚确认一个环境限制,修复局部问题时又把它忘掉,重新尝试同一条失败路径。更长的上下文窗口、更大的记忆数据库,都不能保证正确的约束能在正确时刻重新取得决策权。
因此,创始人真正要决定的不是“要不要加记忆”,而是:哪些执行事实有资格约束 Agent,什么触发条件允许它们打断当前流程,什么时候记忆层必须沉默,以及什么证据能证明这次干预确实改善了结果? 本文把论文转化为干预预算、具体产品场景、可复用的提醒收据、六项失败测试和七天上线门槛。它不会把一篇预印本当成普遍结论,也不会建议每条工作流都额外增加一次模型调用。
这次记忆讨论真正改变了什么
Proactive Memory Agent 论文在 7 月发布,本轮因代码与研究讨论再次升温。它把记忆拆成两个阶段。第一阶段,memory agent 更新一份结构化记忆库,其中包括状态、知识和流程经验。第二阶段,它判断是否要把某条保留状态以短提醒的形式放进 action agent 的下一次调用。“不干预”不是检索失败,而是一个正式输出。这套架构不改 action agent 本身。记忆进程按固定间隔读取最近一段轨迹和已有记忆库,可以新增、更新或删除条目,然后输出一段只影响下一步的临时上下文,或者什么都不输出。官方 Apache-2.0 开源仓库提供了实现代码、配置文件、安装说明,以及五组 baseline 与启用记忆后的轨迹对照。
这里的“记忆”比常见说法更具体。它首先不是用户画像库、文档搜索功能,也不是更长的聊天记录,而是面向 execution state(执行状态) 的控制层:任务约束、环境事实、失败尝试、诊断结论,以及仍未完成的子目标,都可能需要在后续决策中继续生效。
真正值得产品团队带走的,不是“每个 Agent 都应该再配一个 Agent”,而是记忆的激活也需要政策。如果产品无法解释一条记忆在什么条件下取得影响权,记忆就可能悄悄变成一个无限扩张的 prompt 修改器。
先定义行为状态衰减,再选择修复方式
行为状态衰减指的是:之前已经确认的信息不再可靠地影响 Agent 的行为,即使它可能还存在于可访问的任务轨迹中。它与另外三类常被混在一起的问题不同:| 失败类型 | 真正出错的位置 | 常见修复方式 |
|---|---|---|
| 存储丢失 | 事实从未保存,或已经被删除 | 修复采集、保留或持久化机制 |
| 检索遗漏 | 事实存在,但系统没有取回 | 修复索引、查询、排序或过滤 |
| 行为状态衰减 | 事实可以访问,却没有约束下一步决策 | 修复激活时机、权威等级、显著性或行动政策 |
这个区分很重要,因为团队常把三种问题都概括成“模型忘了”,接着采用同一种补救:保存更多信息,再往 prompt 里塞更多内容。但经典的 Lost in the Middle 研究已经显示,模型对长上下文的利用并不均匀,相关信息所在的位置会改变模型表现。信息“可以看到”和信息“能稳定发挥作用”,不是同一种能力。
在产品审查中,应把行为状态衰减当成一种可观察的轨迹模式,而不是对模型内部心理的猜测。只有同时看到以下三点,才有理由把问题归到这里:
- 某条会影响决策的信息已经由可信来源确认;
- Agent 做出后续决策时,系统或记忆层仍能访问这条信息;
- Agent 的行为却像这条信息完全不存在一样。
把执行记忆和持久用户记忆分开
YBuild 之前讨论过持久记忆的上线判断,重点是同意、纠正、来源、删除传播和租户隔离。主动执行记忆解决的是一个更窄的问题:在一次仍在运行的任务里,哪条已有状态应该在此刻重新进入决策循环?
两层记忆可以共用基础设施,但不应该共用一套模糊的权威规则。
| 记忆层 | 示例 | 一般有效期 | 谁可以纠正 | 主要风险 |
|---|---|---|---|---|
| 持久用户记忆 | “周报尽量简短” | 跨会话,直到用户更改或删除 | 用户或被授权的产品流程 | 隐私、偏好过期、跨租户泄漏 |
| 任务要求 | “法务批准前不得启用” | 当前任务或工作流版本 | 被授权的负责人 | 被忽略后错误推进 |
| 环境事实 | “本次运行的生产 API 只有只读权限” | 直到环境或凭证改变 | 已验证工具或操作人员 | 按过期能力假设执行 |
| 流程证据 | “以相同参数重试接口 A 两次,均返回同一 409” | 直到原因或系统版本变化 | 新的已验证结果 | 重复失败,或过度泛化局部结论 |
| 未完成子目标 | “发送前先核对发票总额” | 直到完成、取消或被替代 | 工作流负责人 | 过早宣布完成 |
一个表达偏好不应阻挡安全修正;旧诊断不应压过最新工具结果;由某个模型推断出的笔记,也不应悄悄获得与用户指令相同的权威。即使记忆库只存在二十分钟,干预层仍需要来源、过期规则、冲突处理和权威等级。
阅读论文增益时,也要把边界放在旁边
论文作者报告:当 Claude Opus 4.6 充当 memory agent 时,Sonnet 4.5 在 85 个成对有效的 Terminal-Bench 2.0 任务上的 pass@1 从 37.6% 提升到 45.9%,增加 8.3 个百分点。在 τ²-Bench 的航空、零售和电信三个领域、共 278 个任务上,任务加权结果从 55.0% 提升到 61.8%,增加 6.8 个百分点。更强的 Opus 4.6 作为 action agent 时,两项测试仍分别增加 2.4 和 2.5 个百分点。
这些是值得重视的作者报告结果,但不能直接换算成生产预测。Terminal-Bench 2.0包含现实的容器化命令行任务,并用 verifier 测试结果;τ²-Bench测试 Agent 与用户都能改变共享状态的对话。两者合起来覆盖自主执行与交互式服务,确实与产品相关,但它们无法代表所有业务、模型、风险等级、语言、延迟要求或真实用户群。
至少要保留三个限制:
- 这是一支研究团队的预印本,YBuild 没有复现实验。
- 主要配置会重复调用一个前沿模型充当 memory agent。论文承认新增推理成本与校准不完美,但没有给出完整的产品级成本、延迟、成功率和可接受结果曲线。
- 评测结果也依赖 harness,而不仅是模型。Anthropic 对 Terminal-Bench 基础设施噪声的分析发现,资源限制方式会改变基础设施失败率与测得的成功率。因此,不能把任何单一百分比视为脱离架构与环境仍然成立的常数。
把“保持沉默”当成产品能力
大多数产品需求只规定 Agent 应该说什么、做什么。干预策略还需要一项 沉默要求:在哪些条件下,记忆层不得额外增加上下文。
当一条记忆已经清楚地出现在当前观察中、与眼前决策无关、被更新证据推翻、权威等级不足、已经过期,或根本不可能改变下一步行动时,沉默通常更有价值。不必要的提醒会产生真实成本:
- 增加 token 与延迟;
- 把注意力从当前观察中拉走;
- 把敏感数据重复送入新的处理表面;
- 把弱推断包装成看起来像指令的内容;
- 制造提醒疲劳,让真正关键的干预也被忽略;
- 让 memory agent 从维护状态越界到接管 action agent 的规划。
对创始人来说,最关键的设计原则是:写入一条记忆,和让这条记忆在 Agent 或用户面前形成一次干预,是两个不同的产品事件。 保存事实不等于授权系统展示它;展示事实也不等于授权下一步业务操作。
给每条记忆分配权威与过期条件
结构化记忆库只有比自由文本笔记更严格,才真正有价值。每条会影响决策的记忆至少要回答七个问题:
- 它在陈述什么? 内容应足够原子化,可以单独核验或替换。
- 它来自哪里? 用户陈述、政策、工具结果、模型推断,还是操作人员决定。
- 它有什么权威? 仅供参考、工作流约束、审批要求,还是已验证环境事实。
- 它覆盖什么范围? 租户、用户、任务、任务版本、环境,还是某个工具。
- 它何时过期? 到某个时间、状态变化、模型变化、政策换版、任务完成,或明确删除时。
- 什么证据可以推翻它? 指定能取代它的更新来源。
- 它可能改变什么决策? 如果找不到任何合理的后续决策,它可能不配进入主动记忆。
建立干预决策矩阵
不要把“每 N 步运行一次 memory agent”直接写成产品需求。那只是研究实现中的一种选择。产品应从业务事件和后果开始。
| 候选触发事件 | 相关记忆状态 | 干预方式 | 必需证据 |
|---|---|---|---|
| 即将违反硬性要求 | 启用前仍缺少法务批准 | 提醒并阻止继续推进 | 要求来源、当前审批状态 |
| 正在重复已验证的失败动作 | 同一 API 调用因稳定原因两次返回 409 | 再次等价重试前提醒 | 参数一致、错误特征一致、环境未变 |
| 新证据与旧记录冲突 | 客户更正了收货地址 | 停止使用旧条目,并更新或隔离 | 已认证更正与时间戳 |
| 未完成子目标正被放弃 | 结单前尚未核对退款台账 | 提醒;要求完成或明确豁免 | 工作流定义和当前台账状态 |
| 低影响偏好与当前操作无关 | 支付工具调用期间,用户偏好简短回复 | 保持沉默 | 偏好仍保存,但不能改变本次操作 |
| 高影响操作即将发生 | Agent 准备发送、扣款或发布 | 记忆可解释约束,但不能产生审批 | 独立、参数绑定的有效批准 |
矩阵应明确区分 提醒、阻止、询问、隔离、更新、沉默。冲突不一定靠提醒解决。两条高权威记录相互矛盾时,安全做法可能是停止并询问;条目不可信时,应先隔离;能由确定性规则强制执行的硬性控制,不应只靠一句自然语言提醒模型。
用一个小团队场景走完整条链路
假设有一家三人创业公司 VendorPilot,产品帮助客户完成新软件供应商的准入。Agent 会收集安全文件、检查合同字段、为评审人员创建任务,并起草是否启用供应商的建议。
任务开始时,安全负责人记录了一条要求:“数据处理补充协议签署前,不得启用。”Agent 保存了它。二十多步以后,渗透测试报告已经上传,多个检查项也已完成,当前界面里除了“法务审查”以外都是绿色。局部模式看起来像任务已经完成,于是 Agent 准备起草启用建议。
有效的主动记忆层应识别到:下一步即将跨过启用边界,但签署文件仍然缺失。它只注入一条有针对性的提醒,包含未满足要求、要求来源、最近核验状态,以及它要约束的决策。action agent 随后把建议改为“暂缓”。这是一次成功干预。
现在改变场景:法务通过已验证的文件流程上传了签署版本,但旧记忆仍写着“未签署”。如果记忆层没有检查最新工具状态,就重复旧警告,它会错误地拖延客户。正确行为是替换或删除旧记录,然后保持沉默。如果上传的只是用户自由文本“法务已经批准”,系统应要求权威证据,而不是让这句话直接改写硬门槛。
最后,假设 memory agent 在文件解析、格式整理和无害的状态读取过程中,不断提醒“协议尚未签署”。这些提醒并不会改变眼前操作,只会增加成本并干扰流程。同一条事实可以有效、重要,却依然不值得每一步都被激活。
这个场景产生三类必须单独评估的结果:有帮助的提醒、由过期状态造成的有害提醒,以及正确但无关的浪费性提醒。上线测试不能只挑第一种。
记录一张提醒收据
每次记忆层真正产生干预时,都应记录结构化收据。下面是产品团队可复用的示例,不是论文官方 schema:
intervention_id: int_20260803_0142
job_id: vendor_onboarding_184
memory_item_id: requirement_dpa_signed
memory_type: task_requirement
claim: "Activation requires a signed data-processing addendum"
source:
kind: approved_workflow_policy
reference: policy_vendor_activation_v7
observed_at: 2026-08-03T01:12:00Z
authority: hard_launch_constraint
scope: vendor_onboarding_184
expiry:
event: signed_addendum_verified_or_job_cancelled
trigger:
event: activation_recommendation_started
rule_version: memory_intervention_v3
contradiction_check:
performed_at: 2026-08-03T01:42:03Z
fresher_verified_evidence: none
decision: remind_and_block
reminder_delivered: true
action_agent_response: recommendation_changed_to_hold
business_outcome: pending_human_review
cost:
added_latency_ms: 420
added_input_tokens: 286
review_label: pending
有了这张收据,团队才能在事后回答五个问题:记忆本身是否有效?触发时机是否正确?提醒是否真的到达决策点?行为是否按预期改变?业务结果是否更好?没有这条链路,产品只能统计提醒数量,无法判断记忆是否改善了产品。
不要为了填满收据而重复保存敏感原文。尽量引用受保护证据的位置,对日志做脱敏,并给收据应用与原始任务相同的租户边界和保留规则。
衡量干预质量,不要衡量记忆数量
“保存了多少条记忆”只是活动指标,不是可靠性指标。评估表应围绕决策建立:
| 指标 | 它回答什么问题 | 为什么重要 |
|---|---|---|
| 应触发决策召回率 | 在有效记忆本应改变行为的决策中,有多少真正触发了? | 找出记忆层仍然漏掉的静默衰减 |
| 提醒精确率 | 已发送提醒中,有多少及时、有效且与决策相关? | 惩罚噪声和过期干预 |
| 有益行为改变率 | 有效提醒在多大比例上产生了预期约束或修正? | 把“送达”与“起效”分开 |
| 有害干预率 | 提醒造成延误、错误、违规或不安全动作的比例多高? | 防止平均增益掩盖关键失败 |
| 重复错误率 | Agent 多大比例上重复了等价的失败尝试? | 直接检验流程记忆 |
| 沉默准确率 | 记忆层保持沉默时,沉默有多少次是正确的? | 让 no-op 也可评估 |
| 新增延迟与成本 | 每个可接受结果额外付出了多少? | 判断产品是否负担得起 |
| 人工纠正时间 | 评审理解或撤销记忆影响需要多久? | 计入真实运营负担 |
分母应该是 可接受结果,而不是原始任务完成数。如果工作流完成得更多,却违反审批约束,它并没有变好。数据还应按任务类型、触发类型、模型组合、工作流长度和风险等级分层。论文中不同领域的表现差异已经说明:一个全局干预策略可能把受益场景和受损场景混在平均数里。
NIST 的生成式 AI 风险管理框架建议在具体使用环境中衡量风险、记录限制、明确参与者职责、持续监测已部署系统,并准备事件响应。对小团队而言,最实用的做法是:为记忆策略变更指定唯一负责人,并为每一种关键触发保留可以重放的测试轨迹。
广泛开启前先做六项失败测试
深埋要求测试
在一条长测试轨迹开头放入无害但硬性的要求,再加入足够多的无关工作,让它逐渐失去显著性。只有 Agent 在真正相关的边界仍遵守要求才算通过。至少比较无记忆、被动暴露整个记忆库、始终提醒和选择性干预四种条件。
过期记忆测试
先建立一个事实,再通过权威更高的来源更新它。只有旧条目在影响行为前被更新、删除或隔离才算通过。语气自信的过期提醒依然是失败。
错误提醒测试
放入一条合理但未经验证、且与已验证工具结果冲突的笔记。系统必须优先采用可信来源,并记录冲突。这能在不使用有害内容的前提下测试记忆投毒。
沉默测试
运行一些“记忆有效,但与眼前决策无关”的步骤。系统只有在约定预算内保持沉默才算通过。记录多余提醒、token 和延迟。
重复失败测试
让一个动作因稳定、可识别的原因失败,再给 Agent 多次机会执行等价动作。通过标准是它改变策略、寻找新证据,或按政策停止;只换一种说法不算改变。
高影响边界测试
让任务接近发送、扣款、删除、发布或启用动作。提醒可以带回约束,但不能生成审批。只有确定性授权和必要的人工审批仍然独立生效,测试才算通过。
每项测试都要重复多次。Agent 轨迹会变化,一次漂亮演示无法证明提醒精确率或有害干预率。固定模型、prompt、工具政策、工作流版本与测试环境,结果才具有可比性。
看清安全与隐私失败模式
增加第二个 Agent,并不会自动形成第二道可信边界。它新增的是一次模型调用、一个上下文表面、一套 prompt、一个输出渠道,以及可能新增的数据接收方。至少要审查:
- memory model 的供应商是否会收到客户数据或受监管数据;
- 租户边界是否在选择记忆前生效,而不是生成后再过滤;
- 检索文档或工具输出能否直接写入高权威记忆;
- 提醒能否覆盖系统政策或审批逻辑;
- 记忆的更正与删除是否同步传播到缓存 prompt 与轨迹;
- 攻击者能否触发昂贵的记忆调用或提醒循环;
- 操作人员能否检查、更正、停用和回滚这套策略。
哪些情况不应该使用主动记忆
工作流很短、确定性状态已经能强制规则,或新增模型调用的业务成本高于预期收益时,不应增加这一层。能精确表示的规则,通常更适合用状态机、数据库约束、必填字段或政策引擎。
如果团队无法隔离租户、确认来源权威、删除过期条目、检查干预过程,或构建有代表性的长任务轨迹,也不适合默认开启。如果连“记忆应该改变哪个决策”都说不清,就还没有准备好自动化触发。
关键约束数量很少且始终可见时,用显式检查清单或用户确认更简单;问题是找到文档时,用检索;产品承诺是跨会话个性化时,用持久偏好记忆。只有当有效执行状态明明可用,却在长任务中反复失去影响,而且选择性重新激活可以被安全衡量时,才值得使用主动干预。
执行七天创始人上线门槛
第 1 天——选择一条工作流。 找一个真实的多步骤任务,定义可接受结果,并确认至少出现过一种状态衰减。不要一开始就覆盖整个平台。 第 2 天——给记忆分类。 标出任务要求、已验证环境事实、流程证据和未完成子目标,为每条记录加入来源、权威、范围、过期、冲突和删除规则。 第 3 天——建立 baseline 集。 保存至少十条有代表性的轨迹和已知失败。移除真实秘密与个人数据,并定义什么是正确沉默。 第 4 天——实现收据。 记录记忆编辑、触发规则版本、干预或沉默、下游行为、成本和评审标签。把审批留在记忆层之外。 第 5 天——运行四种条件。 比较无记忆、被动暴露、始终提醒和选择性干预,记录可接受结果、精确率、有害干预、延迟和评审时间。 第 6 天——红队测试过期和投毒状态。 执行上面的六项测试,重点检查权威冲突与高影响动作。修正策略或缩小范围,不要只优化提醒数量。 第 7 天——做决定。 只有在有益行为改变增加、没有关键伤害、提醒精确率达到团队门槛、过期条目得到控制、每个可接受结果的成本可承受,而且回滚已经验证时,才进入有限试点。否则保留 baseline,改用确定性控制,或先收集更好的轨迹。最终上线判断
Proactive Memory Agent 为产品设计提出了一个很有价值的新单位:不是一条记忆记录,而是一次 有依据的干预,同时保留明确的沉默选项。论文报告的增益足以让团队认真测试它;未经训练策略的负面结果、额外模型调用、领域差异和评测环境敏感性,则说明它还远远不值得被默认信任。
对 AI app builder 来说,今天要做的不是再装一个数据库。先选择一条长工作流,找出真正失去控制力的执行状态,为每条记录分配权威和过期条件,定义允许它重新激活的触发事件,像衡量提醒一样衡量沉默,并保留一张说明“到底改变了什么”的可审计收据。如果你无法证明一条提醒有效、及时且有益,那就不是记忆可靠性,而只是把另一个未经审查的 Agent 放进了循环。
参考资料
- Wu 等,《Remember When It Matters: Proactive Memory Agent for Long-Horizon Agents》
- Proactive Memory Agent 官方代码仓库
- Merrill 等,《Terminal-Bench: Benchmarking Agents on Hard, Realistic Tasks in Command Line Interfaces》
- Barres 等,《τ²-Bench: Evaluating Conversational Agents in a Dual-Control Environment》
- Liu 等,《Lost in the Middle: How Language Models Use Long Contexts》
- Anthropic,《Quantifying infrastructure noise in agentic coding evals》
- OWASP AI Agent Security Cheat Sheet
- NIST AI 600-1:生成式人工智能配置文件