98 lines
2.1 KiB
Markdown
98 lines
2.1 KiB
Markdown
---
|
||
version: 1.0
|
||
last-updated: 2026-02-25
|
||
status: design
|
||
---
|
||
|
||
# Memory 迁移计划(SQLite -> Markdown)
|
||
|
||
## 1. 目标方案
|
||
|
||
目标:将记忆语义主存储从 SQLite 迁移到 Markdown,形成可读、可审计、可版本化的 Memory 层。
|
||
|
||
范围:
|
||
|
||
- 记忆条目(success/failure/insight)
|
||
- EvoMap 节点
|
||
- Soul.md 汇总
|
||
|
||
## 2. 当前实现
|
||
|
||
当前数据库:
|
||
|
||
- `sessions`
|
||
- `messages`
|
||
- `settings`
|
||
|
||
现状限制:
|
||
|
||
- 会话数据可持久化,但不等价于长期记忆语义层。
|
||
|
||
## 3. 分阶段实施
|
||
|
||
### 阶段 A:Schema 冻结(文档先行)
|
||
|
||
- 冻结 MD 目录结构与 frontmatter 字段。
|
||
- 定义 `append/recall/updateSoul/updateEvoMap` 接口。
|
||
|
||
退出条件:
|
||
|
||
- 文档评审通过;字段变更冻结窗口生效。
|
||
|
||
### 阶段 B:双写上线
|
||
|
||
- 执行完成后同时写 SQLite 与 MD。
|
||
- 记录双写差异日志(条目数、字段缺失、解析失败)。
|
||
|
||
退出条件:
|
||
|
||
- 连续 7 天写入成功率 >= 99.5%
|
||
- 差异率 <= 1.0%
|
||
|
||
### 阶段 C:切主读
|
||
|
||
- Recall 默认读取 MD。
|
||
- SQLite 仅作为回滚/兼容读取源。
|
||
|
||
退出条件:
|
||
|
||
- 连续 14 天 Recall 成功率 >= 99.0%
|
||
- 用户可见回归事件为 0 个 P0/P1
|
||
|
||
### 阶段 D:收敛
|
||
|
||
- 缩减 SQLite 在记忆语义上的职责。
|
||
- 仅保留会话展示与配置类用途。
|
||
|
||
退出条件:
|
||
|
||
- 回滚演练通过率 100%
|
||
- 文档与实现一致性审计通过
|
||
|
||
## 4. 回滚策略(量化)
|
||
|
||
触发任一条件即回滚到“SQLite 主读”模式:
|
||
|
||
- 24 小时内 MD 读取失败率 > 2%
|
||
- 连续 2 个发布窗口出现 P1 记忆回归
|
||
- Soul/EvoMap 写入失败连续超过 30 分钟
|
||
|
||
回滚动作:
|
||
|
||
1. 关闭 MD 主读开关
|
||
2. 保留双写(若可用)用于诊断
|
||
3. 导出失败样本并进入修复队列
|
||
|
||
## 5. 验收标准
|
||
|
||
- 每阶段都有可量化退出条件。
|
||
- 迁移与回滚都可一键执行(流程化,而非人工临场决策)。
|
||
- 用户侧不出现记忆丢失或偏好错乱的 P0/P1 问题。
|
||
|
||
## 6. 相关文档
|
||
|
||
- [ARCHITECTURE-INDEX.md](./INDEX.md)
|
||
- [ARCHITECTURE-OVERVIEW.md](./OVERVIEW.md)
|
||
- [ARCHITECTURE-STORAGE.md](./STORAGE.md)
|
||
- [ARCHITECTURE-LOOP.md](./LOOP.md)
|