AI Agent(AI智能体) 记忆管理系统设计 — 从向量库边界到生产级 Memory(记忆) 架构

0 阅读1分钟

AI Agent(AI智能体) 记忆管理系统设计 — 从向量库边界到生产级 Memory(记忆) 架构 🧠

本文深入剖析 AI Agent(AI智能体) 记忆管理的生产级设计方案。从 Vector DB(向量数据库)的三大边界问题(精确查询失效、语义噪声污染、时间盲区)出发,提出平行记忆架构(精确通道 + 摘要通道 + Sliding Window(滑动窗口)),引入双时间戳状态管理(Valid Time(有效时间) + Transaction Time(记录时间))解决状态错乱,最后通过 Workflow Memory(工作流记忆)机制实现经验固化与自进化,形成一整套让 Agent(智能体)具备可靠记忆与持续进化能力的生产级方案 🚀


1. 向量库的边界与核心痛点 🚧

🚧 Note(提示): 本章剖析以 Vector DB(向量数据库)为核心的 Agent(智能体)记忆方案在生产环境中的三大边界问题

1.1 边界一:精确查询失效 🔍

Vector DB(向量数据库)的核心价值在于语义 Similarity(相似度)检索——给定一个 Query Vector(查询向量),返回语义上最相近的 Top-K(前K个)结果。但这种能力在面对确定性查询时反而成为噪声源。

什么是精确查询失效? 当 Agent(智能体)需要查询一个具有精确唯一标识符的信息(如手机号、订单号、用户 ID、邮箱地址)时,Vector DB(向量数据库)返回的是"最相似的片段",而非"精确匹配的记录"。例如:

Query: "用户 138xxxxxxxx 的订单号是多少?"
Vector DB 返回: 
  - "用户 139yyyyyyyy 的订单记录" (相似度 0.92) ❌
  - "用户 138xxxxxxxx 的联系方式" (相似度 0.88) ❌
  - "用户 137zzzzzzzz 的订单号是 ORD-2024-001" (相似度 0.85) ❌

根本原因 🧬:Embedding(嵌入)将离散标识符映射到连续向量空间时,数值接近的标识符(如 138xxxx 与 139xxxx)在向量空间中天然邻近,但语义上可能是完全不同的实体。这种"近邻≠精确匹配"的悖论是语义检索的内在缺陷。

核心洞见 💡:对于确定性信息(ID、订单号、时间、金额、状态枚举),Vector DB(向量数据库)的 Recall(召回率)率和 Precision(精确率)率都无法达到生产级要求。这不是 Vector DB(向量数据库)的实现问题,而是语义检索范式的边界约束。

参考资料:

1.2 边界二:语义噪声与检索污染 📢

语义检索的另一个问题是"检索污染"——当你需要一条精确信息时,相似但不相关的片段会被同时拉出,增加了 Agent(智能体)的判断负担。

典型场景:假设 Agent(智能体)记录了多条用户偏好信息:

# Vector DB 中存储的两条记录语义高度相似
Record 1: "用户在上海工作,常驻地址为上海市浦东新区"
Record 2: "用户已搬到北京,现地址为北京市海淀区"

当 Query(查询)为"用户的居住地是哪里?"时,两条记录在语义上都是"居住地"(similarity > 0.9),都会被召回。Agent(智能体)无法判断哪一条是当前有效状态——需要额外的优先级信号(如时间戳、优先级标签)才能区分。

为什么这是 Vector DB(向量数据库)的边界? 🤔 因为 Vector DB(向量数据库)只负责"根据语义 Similarity(相似度)召回",不负责"根据逻辑状态过滤"。生产级方案需要将"召回"和"裁决"分离——Vector DB(向量数据库)只做召回,上层裁决器根据额外 Metadata(元数据)(时间、状态、来源等)做取舍。

1.3 边界三:时间盲区 ⏰

时间盲区(Temporal Blind Spot)是 Vector DB(向量数据库)最隐蔽但破坏力最大的边界问题。当 Agent(智能体)记录了同一实体的多个时间分片信息时,语义检索无法区分"哪一条是当前有效状态"。

典型例子:用户从上海搬到了北京。

  • 周一:Agent(智能体)记录"用户居住在上海"
  • 周四:Agent(智能体)记录"用户居住在北京"
  • 周五:Query(查询)"用户住在哪里?"

Vector DB(向量数据库)可能同时返回两条记录(语义 Similarity(相似度)均为 0.95+),Agent(智能体)无法判断哪条是"当前真相"。如果第一条记录因为关联上下文更丰富导致 Embedding(嵌入)更突出,甚至可能获得更高的 Similarity(相似度)分数,导致 Agent(智能体)输出错误的状态

三个时间盲区症状 ⚠️:

症状表现后果
状态滞留Agent 使用过期状态(如旧地址)错误决策
状态冲突新旧状态同时召回,无法裁决Agent 困惑、输出不一致
时序反转旧状态因语义更匹配反而排在新状态前系统性错误

参考资料:

1.4 边界问题的核心矛盾 🎯

总结 Vector DB(向量数据库)在生产级 Agent(智能体)记忆中的三大边界:

精确查询 → Vector DB 无法做到"见人就亮"的确定性命中
语义噪声 → 相似但不相关的信息污染检索结果
时间盲区 → 无法区分新旧有效状态 → 状态错乱

这三大边界共同指向一个核心结论:Agent(智能体)记忆系统不能用单一 Vector DB(向量数据库)来承载。生产级架构需要"分层治理、各司其职"——让每种 storage(存储)做它最擅长的事,而不是用一个 Vector DB(向量数据库)解决所有问题。

参考资料:


2. 平行记忆架构设计 🏗️

🏗️ Note(提示): 本章提出平行记忆架构(Parallel Memory Architecture),用多条独立 memory channel(记忆通道)解决单一 Vector DB(向量数据库)的边界问题

2.1 核心设计思想 💡

平行记忆架构(Parallel Memory Architecture)的核心思想只有一句话:不同性质的信息走不同的 Channel(通道),用不同的检索方式,匹配不同的使用场景

类比人类记忆 🧠:

  • 语义记忆(知道什么)→ Vector DB(向量数据库)通道
  • 情节记忆(经历了什么)→ 摘要通道
  • 程序记忆(怎么做)→ 结构化通道
  • 工作记忆(当前在处理什么)→ Sliding Window(滑动窗口)

Agent(智能体)的平行记忆架构可以抽象为三层:

┌─────────────────────────────────────────────────────┐
│                   Memory Router                      │
│   (读取策略:何时用哪个 channel,如何 Merge 结果)      │
└─────────────────────────────────────────────────────┘
           │                │                │
           ▼                ▼                ▼
┌─────────────────┐ ┌──────────────┐ ┌────────────────┐
│  精确通道        │ │  摘要通道     │ │  滑动窗口       │
│  Exact Lookup   │ │  Summary     │ │  Sliding Window │
│  (Key-Value DB) │ │  (LLM摘要)   │ │  (原始上下文)   │
│                 │ │              │ │                 │
│ 精确命中         │ │ 主题+实体提炼  │ │ 本轮完整对话     │
│ 用户档案/订单    │ │ 跨会话故事线  │ │ 当前 Task 上下文 │
└─────────────────┘ └──────────────┘ └────────────────┘

2.2 通道一:精确通道(Exact Lookup(精确查询) Channel)🔑

职责:处理所有确定性查询——用户 ID、手机号、邮箱地址、订单号、配置参数、枚举状态等。

技术选型

  • Key-Value(键值) Store:Redis、DynamoDB、LevelDB(适用于高吞吐、低延迟的精确查询)
  • Relational DB:PostgreSQL、MySQL(适用于需要结构化查询的场景,如"查询用户近 30 天订单")
  • Graph DB:Neo4j(适用于实体关系的精确推理)

设计原则

读取:走精确介质查找,绝不经过语义检索
  → Input: userId = "U-2024-001"
  → 直接查 Key-Value DB 返回 UserProfile 记录
  → 确定性命中,不存在"近似匹配"的噪声
  
写入:来源可以是 LLM structure extraction
  → 从对话中 Extracted 的结构化信息 → 写入精确通道
  → 示例:{"action": "update_address", "user": "U-001", "address": "北京"}

为什么这是必要的? 🎯 消除确定性查询的语义噪声。当一个 Agent(智能体)需要查询"用户 138xxxxxxxx 的订单号",它不应该依赖"语义最相似"的结果,而是应该直接命中该用户的订单记录。精确通道确保:需要精确时,一定精确

2.3 通道二:摘要通道(Summary Channel)📝

职责:将多次对话/交互压缩为主题意图和关键实体的轻量表示,保留语义走向但大幅压缩信息密度。

技术选型

  • LLM(大语言模型) 压缩生成:每次对话结束后,由 LLM(大语言模型)生成结构化摘要
  • Vector DB(向量数据库) 存储摘要:摘要以 Vector(向量)形式存入 Vector DB(向量数据库),支持按主题语义检索

摘要生成策略

# 对话结束后的摘要更新,数据流动:raw_conversation → LLM → summary
summary_update_prompt = """
基于已有摘要和新对话内容,生成更新后的用户会话摘要。

已有摘要:
{existing_summary}

新对话内容:
{new_conversation}

请以结构化格式输出更新摘要:
1. 核心主题(当前正在处理的主要问题)
2. 已确认事实(用户提供的确定性信息)
3. 待确认事项(对话中提到的待办)
4. 关键实体(涉及的人、事、物)
5. 情绪与意图(用户的沟通倾向)
"""

与 Vector DB(向量数据库)的配合 🔗:摘要通道仍然使用 Vector DB(向量数据库)做底层存储,但存储的不是原始对话片段,而是经过 LLM(大语言模型)压缩的结构化摘要。这带来两个好处:

  1. 信息密度提升:一次对话的原始内容可能是 10K Token,摘要可以压缩到 500 Token(20x 压缩比)
  2. 检索质量提升:摘要本身就聚合了关键信息,Vector DB(向量数据库)检索到的片段本身就是精炼信息,减少了"检索到无关片段"的概率

2.4 通道三:滑动窗口(Sliding Window(滑动窗口))🪟

职责:只负责当前这轮交互的原始上下文。超出窗口上限的数据自动淘汰,不做持久化。

设计要点

窗口大小: 通常是最近 N 轮对话(经验值 N=3~5)
存储形式: In-Memory(内存中)(RTC 内存缓存)
淘汰策略: FIFO(先进先出),窗口滑动后旧数据不再保留
生命周期: 仅在当前会话期间有效

为什么需要 Sliding Window(滑动窗口)? 🤔

  • 摘要通道虽然压缩了信息,但丢失了原始交互细节(如用户情绪变化、决策过程)
  • 精确通道只存储确定性信息,不存储过程性内容
  • Sliding Window(滑动窗口)保留"正在进行中"的上下文,给 Agent(智能体)提供"此时此刻"的全景视图

通道对比总结 📊:

维度精确通道 🔑摘要通道 📝滑动窗口 🪟
存储介质Key-Value/Relational DBVector DB (存储摘要)In-Memory(内存中)
检索方式精确 Key 查询语义 Similarity(相似度)顺序读取
查询确定性100%(精确命中)高(摘要聚合)极高(原始数据)
持久化长期长期不持久化(会话级)
信息密度高(结构化)中(压缩)低(原始)
适用场景用户档案/订单/配置跨会话故事线/偏好当前 Task 上下文

参考资料:


3. 双时间戳状态管理 ⏱️

⏱️ Note(提示): 本章引入双时间戳(Bi-Temporal(双时间戳))机制解决 Agent(智能体)记忆的时间状态错乱问题

3.1 状态错乱的本质 🎯

在第 1 章中我们分析了"时间盲区"问题——当同一实体在不同时间点有不同状态时,Vector DB(向量数据库)无法区分哪条是当前有效状态。

传统方案的应对方式通常是"加一个 updated_at 时间戳",但这在实践中远远不够:

问题 1:覆盖写入丢失历史
  Record: "user_location = 上海, updated_at = 周一"
  → 周四写入 "user_location = 北京, updated_at = 周四"
  → 上海记录被覆盖,Agent 无法追溯"用户之前在上海住过"
  
问题 2:延迟写入引发时序混乱
  用户周一搬到北京,Agent 周四才记录 "user_location = 北京, updated_at = 周四"
  但事实是:valid_time 从周一开始,transaction_time 是周四
  两个时间戳应该独立记录

3.2 Bi-Temporal:双时间戳设计 🕰️

双时间戳(Bi-Temporal(双时间戳))概念源自数据库理论中的"双时态(Bitemporal)"模型,在 Agent(智能体)记忆系统中得到新的应用场景。它维护两个独立的时间轴:

┌────────────────────────────────────────────────────────────┐
│                   每一行数据记录                           │
├────────────────────────────────────────────────────────────┤
│ Valid Time (有效时间)                                       │
│   → 这条信息在现实世界里从何时开始有效,何时结束             │
│   → 由业务事实决定,而非写入时间                            │
│                                                            │
│ Transaction Time (记录时间)                                  │
│   → 这条信息是什么时候写入系统的                            │
│   → 由系统操作时间决定                                      │
└────────────────────────────────────────────────────────────┘

关键区别 ✂️:

Valid Time(有效时间)Transaction Time(记录时间)
定义现实世界中信息有效的时间段信息被写入系统的时间
由谁决定业务事实系统操作
是否可变不可变(反映事实)不可变(记录操作历史)
典型值"2026-03-01 ~ 2026-06-15""2026-06-16 14:30:00"
用途过滤当前有效状态审计、追溯、回滚

3.3 具体实现机制 🛠️

更新操作不是覆盖或新增近似记录,而是:

步骤 1:发现"用户搬到北京"(事实时间:2026-07-01)
步骤 2:将"居住地=上海"的 Valid Time 截止到 2026-06-30UPDATE record SET valid_to = '2026-06-30' WHERE user='U-001' AND attr='location'
步骤 3:插入新记录 "居住地=北京",Valid Time2026-07-01 开始
  → INSERT INTO user_attributes (user, attr, value, valid_from, valid_to, txn_time)
    VALUES ('U-001', 'location', '北京', '2026-07-01', NULL, NOW())
步骤 4(可选):记录变更原因
  → reason: "用户告知已搬家,并提供北京新地址"

读取规则 🔍:系统始终按 valid_time 过滤,只取当前有效的新旧信息:

-- 查询用户的当前有效居住地
-- 数据流动:WHERE valid_from <= NOW() AND (valid_to IS NULL OR valid_to >= NOW())
SELECT value FROM user_attributes
WHERE user = 'U-001'
  AND attr = 'location'
  AND valid_from <= NOW()
  AND (valid_to IS NULL OR valid_to >= NOW())
ORDER BY valid_from DESC
LIMIT 1;

这种设计确保了:

  1. 读取永远只拿当前有效状态 — 不会再出现"上海北京同时被召回"的问题
  2. 历史状态可追溯 — 需要时可以查询"用户 2026-03 月的居住地"
  3. 写入不覆盖历史 — 旧记录保留在原位,只是逻辑上"退休"了

3.4 隐私合规场景:View 隔离 🛡️

在 GDPR/个人信息保护等合规场景中,用户要求删除个人信息时,传统做法是物理删除数据。但双时间戳模型给出了更优雅的方案:通过 View(视图)过滤而非物理删除

用户要求"删除我的所有记录"

物理删除方案 ❌:
  DELETE FROM user_attributes WHERE user = 'U-001'
  → 数据丢失,无法回溯,可能影响其他关联服务

View 隔离方案 ✅:
  1. 在当前记录上加一个 deletion_flag(或将其 valid_to 设为删除时间)
  2. 正常读取时加入过滤条件 WHERE deletion_flag IS NULL
  3. 审计/合规需要时可以查看"已删除"记录
  4. 真正的物理删除只在数据生命周期到期时执行

  这相当于在数据库层面做了逻辑隔离:
  - 应用视图:SELECT * FROM active_user_attrs → 看不到已"删除"记录
  - 审计视图:SELECT * FROM audit_user_attrs → 可以看到所有记录及其变更历史

核心原则 ⚖️:合规要求的是"对外表现为数据已清除",而非系统内部必须物理删除。通过 View(视图)隔离,既满足合规要求,又保留了数据可追溯性。

参考资料:


4. 经验固化与自进化机制 🔄

🔄 Note(提示): 本章讨论如何通过 Workflow Memory(工作流记忆)机制将 Agent(智能体)的成功经验固化为可复用的 workflow

4.1 从事实记忆到经验记忆 🔄

前几章讨论的记忆类型(精确通道、摘要通道、Sliding Window(滑动窗口))本质上都是事实记忆(Factual Memory)——"保存 Agent(智能体)知道什么"。但要让 Agent(智能体)真正具备持续进化能力,还需要经验记忆(Experiential Memory)——"记录 Agent(智能体)从过去的行动中学到了什么"。

区别在哪里?🤔

事实记忆经验记忆
存储什么事实数据(地址、订单、聊天内容)行为 Pattern(模式)(成功路径、失败原因)
查询方式精确/语义检索Metadata(元数据)匹配、任务类型触发
更新方式随时间推移增加/修改随成功执行次数增加而强化
使用场景回答"用户信息是什么"指导"这类任务应该怎么做"
学习能力无(被动记录)有(从结果中学习)

4.2 Workflow Memory(工作流记忆)的核心机制 🧩

Agent Workflow Memory(AWM)(Agent 工作流记忆)是目前最有代表性的经验记忆实现方案,由 CMU 等研究机构在 2024 年提出:

AWM 的核心思想:从 Agent 的成功执行轨迹中提取可复用的 workflow,下次遇到同类任务时直接加载执行,减少从头推理的开销。

工作原理 🛠️:

阶段 1:采集(Collection)
  Agent 执行任务 → 记录完整 action trajectory(每一次 tool call、LLM 推理、决策分支)
  → 形成原始 execution trace

阶段 2:归纳(Induction)
  对多条同类任务的 execution trace 进行分析
  → 提取共有的 action pattern → 归纳为通用的 workflow template
  → 示例:{ "task_type": "order_refund", "steps": ["validate_order", "check_refund_policy", "process_refund", "notify_user"] }

阶段 3:固化(Consolidation)
  将 workflow template 存入结构化存储
  → 标记适用的 task_type、required parameters、success rate
  → 下次同类任务触发时直接加载执行

阶段 4:进化(Evolution)
  每次执行后,对比 workflow 预定义的步骤与实际执行的步骤
  → 如果发现更优路径 → 更新 workflow
  → 如果发现失败模式 → 标记风险点

4.3 离线 + 在线双模式 ⚡

AWM 支持两种场景,覆盖了生产环境的完整需求:

离线模式(Offline Learning(离线学习)) 📚:

  • 用一批标注好的 training examples(任务 + 成功执行轨迹)进行 workflow induction
  • 初始化阶段使用,建立 Agent(智能体)的基础能力库
  • 适用于有历史数据积累的场景(如客服系统有大量历史工单)

在线模式(Online Learning(在线学习)) 🚀:

  • Agent(智能体)在执行任务过程中实时学习
  • 每完成一个任务,将 execution trace 与已有 workflow 进行 Pattern(模式) matching
  • 发现新的成功路径 → 自动创建新的 workflow 或扩展现有 workflow
  • 适用于持续迭代的生产环境

4.4 效果数据与落地价值 📊

根据 AWM 论文在 WebArena 和 Mind2Web 上的 Benchmark(基准测试)结果:

指标Baseline+AWM提升
WebArena Success Rate(成功率)~38%~58%+51.1%
Mind2Web Success Rate(成功率)~51%~63%+24.6%
平均执行步数较高减少更高效

这意味着:Agent(智能体)不需要每次都从头推理。固化后的 workflow 就像内部流程文档,让 Agent(智能体)的行为越来越贴近熟练员工——见多识广,行云流水 🎯

与前面章节的关系 🔗:

精确通道 + 摘要通道 + 滑动窗口
  → 解决"Agent 能不能记住"的问题(事实记忆)
  
双时间戳 + View 隔离
  → 解决"Agent 记住的东西对不对"的问题(状态准确)

Workflow Memory(经验固化)
  → 解决"Agent 能不能越用越好"的问题(能力进化)
  
→ 三者共同构成完整的生产级 Agent 记忆体系

参考资料:


5. 生产级架构总览 🎯

🎯 Note(提示): 本章整合前述所有 layer,给出完整的生产级 Agent(智能体)记忆系统蓝图

5.1 完整架构分层 🏛️

将前 2~4 章的所有设计整合在一起,生产级 Agent(智能体)记忆系统的完整架构如下:

┌────────────────────────────────────────────────────────────────────┐
│                       读取策略层(Memory Router)                    │
│  Determine: 当前任务需要哪些 channel 的数据                          │
│  Strategy: 精确优先 → 摘要补充 → 滑动窗口兜底                       │
│  Merge: 多 channel 结果按优先级 + 时间戳组合                        │
└──────────┬──────────────┬────────────────┬─────────────────────────┘
           │              │                │
     ┌─────▼──────┐ ┌────▼───────┐ ┌──────▼───────┐
     │ 精确通道    │ │ 摘要通道    │ │ 滑动窗口      │
     │ Key-Value  │ │ 向量摘要    │ │ 原始上下文     │
     │ 确定性查询  │ │ 语义检索    │ │ 当前会话       │
     └─────┬──────┘ └────┬───────┘ └──────┬───────┘
           │              │                │
     ┌─────▼──────────────▼────────────────▼────────┐
     │          状态管理层(Bi-Temporal)            │
     │  Valid Time + Transaction Time 双时间戳       │
     │  View 隔离(隐私合规/数据清理)               │
     └──────────────────┬───────────────────────────┘
                        │
     ┌──────────────────▼───────────────────────────┐
     │          经验进化层(Workflow Memory)         │
     │  成功路径采集 → Workflow Induction → 固化     │
     │  执行反馈 → 进化 → 下次更快更好               │
     └──────────────────────────────────────────────┘

5.2 读取策略的核心逻辑 🧠

Memory Router(Memory Router(记忆路由器))是架构的"大脑"——它决定了什么时候读什么 Channel(通道),以及如何 Merge(合并)结果。

优先级规则 ⚡:

Case 1: 需要确定性信息(订单号、用户ID、金额)
  → 走精确通道,绝不经过语义检索
  → 如果精确通道已返回,不再查询其他 channel

Case 2: 需要了解用户上下文(偏好、历史意图)
  → 先读摘要通道,获取压缩后的跨会话上下文
  → 摘要不足以决策时,补查精确通道的结构化档案

Case 3: 当前交互正在进行(需要完整上下文)
  → 滑动窗口兜底,提供"此时此刻"的全景视图
  → 窗口内数据优先于摘要(因为更实时)

Case 4: 任务策略型问题("这类任务一般怎么做")
  → 走 Workflow Memory,加载已固化的经验 workflow
  → 匹配 task_type 后直接执行,无需重新推理

5.3 数据视图隔离 🛡️

在隐私合规场景中,不同角色对同一数据需要有不同的可见性。通过双时间戳中的 View(视图)隔离机制实现:

┌─────────────┐     ┌──────────────┐     ┌─────────────┐
│ 应用视图     │     │ 审计视图      │     │ 合规视图     │
│ (active)    │     │ (audit)      │     │ (compliance)│
│             │     │              │     │             │
│ 只看到当前   │     │ 所有记录      │     │ 已删除       │
│ 有效数据    │     │ 含删除标记     │     │ 记录         │
└─────────────┘     └──────────────┘     └─────────────┘
  • 应用视图(active_view):Agent(智能体)运行时使用的默认视图,只返回 valid_to IS NULL 的记录,即当前有效状态
  • 审计视图(audit_view):管理员/运维使用,包含所有历史记录及变更原因
  • 合规视图(compliance_view):GDPR 审计使用,显示哪些数据已被标记为"已删除"

5.4 面试要点总结 🎯

以下是整篇文档的核心知识点,也是一场大厂面试中应该掌握的关键话术:

Q1: 向量库的边界在哪里? Vector DB(向量数据库)擅长语义检索,但三种场景暴露了它的边界:(1) 精确查询失效——标识符类信息(手机号、订单号)无法做到确定性命中;(2) 语义噪声——相似但不相关的片段污染召回结果;(3) 时间盲区——新旧状态同时被召回,无法区分时效性。生产方案需要"召回+裁决"分离。

Q2: 有没有做过平行记忆设计? 做过。采用三层平行 Channel(通道):精确通道(Key-Value(键值)/关系库处理确定性查询)、摘要通道(LLM(大语言模型)压缩对话为结构化摘要,用 Vector DB(向量数据库)做语义检索)、Sliding Window(滑动窗口)(In-Memory(内存中)保留当前轮次原始上下文)。读取时走 Memory Router(记忆路由器)编排策略——精确优先、摘要补充、窗口兜底。

Q3: 时间状态错乱怎么处理? 引入双时间戳(Bi-Temporal(双时间戳))管理——Valid Time(有效时间)记录现实世界有效时段,Transaction Time(记录时间)记录写入时间。状态变更时不是"覆盖"或"新增近似记录",而是截止旧记录的 Valid Time(有效时间),插入新记录。读取时始终按 Valid Time(有效时间)过滤,确保只取当前有效状态。隐私合规场景通过 View(视图)隔离做逻辑删除,不物理清理数据。

Q4: Agent 如何持续进化? Workflow Memory(工作流记忆)机制——从成功执行轨迹中提取可复用的 workflow,下次同类任务直接加载执行而非从头推理。Research 显示在 WebArena 上提升 51.1% Success Rate(成功率),Mind2Web 提升 24.6%。配合事实记忆层(精确+摘要+Sliding Window(滑动窗口))和状态管理层(双时间戳),构成完整的"记得住→记得对→越用越好"的进化闭环。

参考资料:


最后更新时间:2026-07-30