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"))
```
|