首页 理论 架构 工程 文档 白皮书 著作 研究 案例 下载 博客 关于 开始使用 →

第43章 LongMemory

第43章 LongMemory

LongMemory(长期记忆)是 ICAI Memory 体系中用于保存具有持续价值的历史信息、事实、关系、状态、经验以及长期数据的记忆机制。

如果说 ShortMemory 解决的是:

“当前正在发生什么?”

那么 LongMemory 解决的是:

“过去发生过什么?这些历史信息现在是否仍然有效?”

LongMemory 的核心不是单纯保存大量数据,而是让 ICAI 能够在后续认知、推理、决策和学习过程中调用历史认知结果。


1. 长期记忆

LongMemory 是超过当前任务生命周期后仍然需要保留的记忆。

基本关系:

Memory
│
├── ShortMemory
│   └── 当前任务、当前场景、临时状态
│
└── LongMemory
    └── 历史事实、历史关系、历史状态、长期数据

ShortMemory 生命周期较短:

创建
 ↓
使用
 ↓
更新
 ↓
任务完成
 ↓
清理 / 转移

LongMemory 生命周期较长:

创建
 ↓
保存
 ↓
长期存在
 ↓
读取
 ↓
更新
 ↓
验证
 ↓
归档 / 失效

因此:

ShortMemory = 当前连续性
LongMemory  = 历史连续性

例如 ICAI 当前接收到:

深圳 → 香港
家具
送货上门

ShortMemory 保存当前咨询场景。

如果系统历史上已经记录:

某运输服务:
起点:深圳
目的地:香港
对象:家具
服务:门到门
状态:已完成
时间:2026-08-20

那么这类历史信息就属于 LongMemory。


2. 历史事实

历史事实是 LongMemory 最基本的组成部分。

Fact 表示已经被记录、确认或者经过验证的信息。

例如:

Fact
{
    id: 1001,
    subject: "Service_A",
    property: "origin",
    value: "Shenzhen",
    time: "2026-08-20",
    state: "confirmed"
}

它表达:

Service_A
    origin
        ↓
    Shenzhen

历史事实还可以包括:

对象存在
对象属性
对象状态
发生事件
完成行为
发生时间
发生地点
处理结果

例如:

Customer_A
    ├── location = Shenzhen
    ├── service = FurnitureDelivery
    ├── destination = HongKong
    └── completed = true

LongMemory 保存的不是单纯的文字,而是事实结构

因此可以形成:

历史信息
   ↓
事实
   ↓
LongMemory
   ↓
后续读取
   ↓
再次参与认知

3. 历史关系

对象本身并不足以表达完整历史。

ICAI 还需要保存对象之间曾经存在的关系。

基本关系结构:

Source
   ↓
Relation
   ↓
Target

例如:

Shenzhen
    ↓
departure
    ↓
HongKong

又例如:

Customer_A
    ↓
used
    ↓
Service_A

历史关系可以记录:

关系对象
关系类型
关系方向
发生时间
关系状态
来源
有效期

例如:

RelationMemory
{
    source: "Customer_A",
    relation: "used",
    target: "Service_A",
    time: "2026-08-20",
    state: "confirmed"
}

这样 ICAI 后续就可以判断:

Customer_A
    ↓
过去是否使用过
    ↓
Service_A

历史关系也可能发生变化。

例如:

A → works_for → Company_A

后来:

A → works_for → Company_B

因此 LongMemory 不能简单地覆盖旧关系。

应该保留:

历史关系
    ↓
有效时间
    ↓
当前关系

这样才能区分:

“过去是什么关系?”

和:

“现在是什么关系?”


4. 历史状态

对象状态不是固定不变的。

例如一个订单:

订单
 ↓
创建
 ↓
处理中
 ↓
运输中
 ↓
已完成

LongMemory 可以保存完整状态变化:

Order_001

2026-08-20
state = created

2026-08-21
state = processing

2026-08-22
state = shipping

2026-08-23
state = completed

于是 ICAI 不仅知道:

当前状态 = completed

还知道:

以前状态 = created
以前状态 = processing
以前状态 = shipping

这就是历史状态。

需要特别区分:

Object State

与:

Memory State

例如:

Object State:
shipping

表示对象当前处于运输状态。

而:

Memory State:
ACTIVE

表示这条记忆记录当前有效。

两者不是同一个概念。


5. 长期数据

LongMemory 可以保存长期具有认知价值的数据。

主要包括:

① 长期事实

Fact

例如:

Company_A
    location = Shenzhen

② 长期对象

Object

例如:

Customer_A
Service_A
Company_A
Product_A

③ 长期关系

Relation

例如:

Company_A → produces → Product_A
Company_A → provides → Service_A

④ 历史状态

StateHistory

例如:

Product_A
    available
    unavailable
    available

⑤ 历史经验

Experience

经验可以来源于:

任务执行
行为结果
成功结果
失败结果
错误处理
冲突处理
验证结果

例如:

Experience
{
    task: "delivery_matching",
    condition: "destination = HongKong",
    result: "matched",
    score: 0.92
}

经验不是简单的事实,而是:

历史过程
   ↓
结果
   ↓
经验

6. 读取方式

LongMemory 的读取不是简单地把所有历史数据全部加载出来。

基本过程:

当前输入
   ↓
形成查询条件
   ↓
查询 LongMemory
   ↓
对象匹配
   ↓
属性匹配
   ↓
关系匹配
   ↓
状态匹配
   ↓
时间匹配
   ↓
筛选相关历史
   ↓
返回 Memory Result

例如当前输入:

深圳到香港家具送货

系统可以形成查询:

origin = Shenzhen
destination = HongKong
object = Furniture
service = Delivery

然后读取 LongMemory:

LongMemory
├── Record 001
├── Record 002
├── Record 003
├── Record 004
└── Record 005

通过 Matching:

Record 001 → 0.95
Record 002 → 0.81
Record 003 → 0.42
Record 004 → 0.18
Record 005 → 0.03

然后选择满足条件的历史记录。

这里与第39章 Matching 形成直接关系:

LongMemory
     ↓
Memory Query
     ↓
Matching
     ↓
Relevant Memory

因此 LongMemory 本身不负责理解。

它负责:

保存历史认知资源,并根据查询条件提供历史记忆。


7. 更新方式

LongMemory 的更新比 ShortMemory 更加谨慎。

不能简单采用:

新数据 → 覆盖旧数据

因为旧数据本身可能具有历史价值。

更合理的方式是:

新信息
 ↓
匹配已有记忆
 ↓
判断是否相同
 ↓
判断是否更新
 ↓
判断是否产生新版本
 ↓
判断是否产生冲突
 ↓
保存

例如原来的记录:

Company_A
location = Shenzhen

后来获得:

Company_A
location = HongKong

不能直接删除:

Shenzhen

而应该判断:

旧事实
    ↓
历史有效

新事实
    ↓
当前有效

形成:

Company_A
    location
       │
       ├── Shenzhen
       │   valid_from = ...
       │   valid_to   = ...
       │
       └── HongKong
           valid_from = ...
           valid_to   = null

这样 LongMemory 同时保存:

过去
 +
现在

LongMemory 更新类型

可以分为:

新增

不存在
 ↓
Create

修正

旧事实
 ↓
验证
 ↓
新事实
 ↓
Update

版本化

Version 1
Version 2
Version 3

状态更新

ACTIVE
 ↓
STALE

或者:

ACTIVE
 ↓
INVALID

关系更新

旧关系
 ↓
结束
 ↓
新关系

历史归档

长期有效记录
 ↓
Archive

因此 LongMemory 的更新核心是:

Update ≠ Delete + Insert

而是:

Update
=
验证
+
历史保留
+
当前状态更新
+
关系维护
+
版本维护

LongMemory完整结构

综合本章内容,可以建立:

LongMemory
{
    id
    type
    object
    properties
    relations
    state
    history
    source
    created_at
    updated_at
    valid_from
    valid_to
    memory_state
}

其中:

object
    ↓
对象

properties
    ↓
属性

relations
    ↓
关系

state
    ↓
历史状态

history
    ↓
变化记录

source
    ↓
信息来源

valid_from / valid_to
    ↓
有效时间

memory_state
    ↓
记忆自身状态

ShortMemory 与 LongMemory

两者形成明确分工:

项目 ShortMemory LongMemory
时间范围 当前 长期
主要内容 当前信息 历史信息
当前场景 核心 可作为历史参考
临时数据 支持 通常不保存
历史事实 少量 核心
历史关系 少量 核心
历史状态 当前状态为主 状态历史
生命周期
清理频率
版本历史 通常较少 重要
主要作用 保持当前连续性 保持历史连续性

核心关系:

当前信息
   ↓
ShortMemory
   ↓
当前认知
   ↓
任务完成
   ↓
Memory Evaluation
   ↓
LongMemory

因此可以形成:

                 Memory
                    │
          ┌─────────┴─────────┐
          ↓                   ↓
    ShortMemory          LongMemory
          │                   │
      当前世界              历史世界
          │                   │
          └─────────┬─────────┘
                    ↓
                  Cognition
                    ↓
                 Reasoning
                    ↓
                  Decision

本章核心定义

LongMemory 是 ICAI 用于保存长期有效的历史事实、历史关系、历史状态、长期对象、经验和变化记录,并通过结构化查询、匹配和更新机制,为当前认知、推理、决策和学习提供历史信息的长期记忆机制。

最终形成:

ShortMemory = 记住现在

LongMemory = 记住过去

Memory = 管理现在与过去之间的认知连续性

这也为下一阶段的 ExperienceMemory(经验记忆) 或长期记忆中的历史经验提取提供了基础。

Leave a Reply

Your email address will not be published. Required fields are marked *