File size: 1,283 Bytes
acc5630
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# 记忆(三层存储)

记忆提供线程安全的存取、检索、巩固与衰减。

## 1. 三层结构

| 层 | 容量 | 角色 |
|---|---|---|
| `working` | 256 | 当前任务上下文,可被巩固提升 |
| `longterm` | 100,000 | 跨任务沉淀,带强度与标签 |
| `archive` | 1,000,000 | 稳定事实与参考,不衰减 |

## 2. 记忆项(MemoryItem)

每条记忆含:`key`、`value`、`kind`、`tags`、`ts`(时间戳)、`strength`(强度)。

## 3. 核心操作

- `put(key, value, kind, tags, strength)`:写入,超容量时自动淘汰最弱项;
- `get(key)`:按键精确取值;
- `recall(query, k)`:按 token 重叠 + 标签命中打分,返回前 k;
- `consolidate(min_strength)`:足够强的工作记忆提升为长期记忆;
- `decay(rate)`:工作/长期记忆强度衰减,归档不衰减。

## 4. 检索打分

```

score = Jaccard(query_tokens, item_tokens) + 0.1 · strength

```

## 5. 持久化

支持 `to_dict` / `load` 的 JSON 序列化,便于跨会话恢复。

## 6. 用法

```python

from holoaeon.memory import Memory

m = Memory()

m.put("k", {"a": 1}, kind="working", tags=["x"])

m.consolidate()

print(m.get("k"))          # {'a': 1}

print(m.recall("x"))

```