第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(经验记忆) 或长期记忆中的历史经验提取提供了基础。