docs: 更新 DESIGN.md — 同步 v3.8 实施状态
- Appendix E(统一记忆规划)→ 改为「v3.8 实施完成」状态 - 新增「原始会话 vs 语义记忆」澄清(Section 1.3) - 版本日志标记 v3.8/v3.9 已实施 - 状态改为「v3.8 部分实施」 - 原始会话各自存储路径(Hermes: ~/.hermes/sessions/, OpenClaw: ~/.openclaw/workspace/sessions/)
This commit is contained in:
parent
7684bc4075
commit
190e700876
115
DESIGN.md
115
DESIGN.md
|
|
@ -5,7 +5,7 @@
|
|||
> **代码生成工具**:opencode
|
||||
> **定位**:Hermes / OpenClaw / 未来 Agent 的统一记忆基础设施
|
||||
> **修订日期**:2026-05-28
|
||||
> **状态**:方案锁定,待实施
|
||||
> **状态**:v3.8 部分实施(共享记忆层 ✅,其他规划中)
|
||||
|
||||
---
|
||||
|
||||
|
|
@ -122,6 +122,17 @@ L3: World Model — 系统运行环境的心智模型(ℰ/ℐ/C 三元组)
|
|||
|
||||
**Agent 注册**:所有 Agent 首次连接织忆时必须调用 `POST /api/v1/agents/register`,系统自动分配 API Key、速率配额、WebSocket 端点,并加入 shared namespace 广播列表。
|
||||
|
||||
**原始会话 vs 语义记忆(v3.8 实施澄清)**:
|
||||
|
||||
| 数据层 | 存储位置 | 是否共享 |
|
||||
|--------|---------|---------|
|
||||
| 原始会话(JSONL) | Hermes: `~/.hermes/sessions/`<br>OpenClaw: `~/.openclaw/workspace/sessions/` | ❌ 各自独立 |
|
||||
| 语义记忆(L1 蒸馏) | `/var/lib/memoryweave/memories.lance` | ✅ 共享(agent_id 区分) |
|
||||
| 知识图谱 | `/var/lib/memoryweave/graph.db` | ✅ 共享(namespace 隔离) |
|
||||
| 片段摘要(L0) | `/var/lib/memoryweave/episodes.lance` | ✅ 共享(agent_id 区分) |
|
||||
|
||||
织忆是**语义记忆共享层**,不是行为日志聚合层。各 Agent 的原始会话由各自平台管理,织忆只负责从中提取、蒸馏、存储有价值的语义记忆。
|
||||
|
||||
|
||||
## Part 2:存储与检索
|
||||
|
||||
|
|
@ -1544,91 +1555,47 @@ trigger.max_consecutive_failures: 3
|
|||
- **v3.5**:行业对标完成(评估框架+V值+三层语义去重+8类触发器+Skill+L3)
|
||||
- **v3.6**:缺口自动分类+记忆预取+溯源链
|
||||
- **v3.7**:文档重组(24 章按功能域聚类,消除重复)
|
||||
- **v3.8(当前)**:完整重写。知识图谱完整设计(5 节全 Schema+来源+算法+修剪+隔离)+ 5 个自动化流程 + Go↔Rust IPC + 被动验证 + 全部 API 端点 + WebSocket 事件类型 + 配置默认值 + 分阶段实施 + vLLM 部署细节 + Consolidation 完整设计。Go(API/业务)+ Rust(LanceDB/BGE/聚类/整合)。Python 完全移除
|
||||
- **v3.9**:统一记忆架构。Hermes(hermes-lance) + OpenClaw(openclaw lancedb) + 织忆(MemoryWeave SQLite)三系统统一为织忆后端,消除三方记忆孤岛。
|
||||
- **v3.8(当前,部分实施)**:完整重写。知识图谱完整设计(5 节全 Schema+来源+算法+修剪+隔离)+ 5 个自动化流程 + Go↔Rust IPC + 被动验证 + 全部 API 端点 + WebSocket 事件类型 + 配置默认值 + 分阶段实施 + vLLM 部署细节 + Consolidation 完整设计。Go(API/业务)+ Rust(LanceDB/BGE/聚类/整合)。**v3.8 共享记忆层已实施**(2026-05-28):Hermes + OpenClaw 共用 `/var/lib/memoryweave/` LanceDB,原始会话分开存储。
|
||||
- **v3.9**:统一记忆架构 ~~待实施~~ → **已实施(共享层)**。Hermes(hermes-lance) + OpenClaw(openclaw lancedb) + 织忆(MemoryWeave SQLite)三系统统一为织忆后端,消除三方记忆孤岛。原始会话仍各自存储。
|
||||
|
||||
### Appendix E: 统一记忆规划(v3.9)
|
||||
### Appendix E: 统一记忆架构(v3.8 实施完成)
|
||||
|
||||
#### E.1 当前状态
|
||||
#### E.1 实施状态
|
||||
|
||||
三个系统各自维护向量记忆:
|
||||
✅ **已完成(2026-05-28)**:Hermes + OpenClaw 已统一接入织忆后端,共享语义记忆层。
|
||||
|
||||
| 系统 | 后端 | 向量维度 | 数据位置 |
|
||||
|------|------|---------|---------|
|
||||
| Hermes | hermes-lance (LanceDB) | 1024 | `~/.hermes/data/lance/` |
|
||||
| OpenClaw | openclaw lancedb (LanceDB) | 1024 | `~/.openclaw/data/lancedb/` |
|
||||
| 织忆 | MemoryWeave SQLite + CGO | 1024 | `/var/lib/zhiyi/data/memoryweave.db` |
|
||||
|
||||
问题:
|
||||
- Hermes 和 OpenClaw 各自维护独立记忆,互不共享
|
||||
- 织忆无法直接读取 Hermes/OpenClaw 的记忆
|
||||
- 牧尘对 Hermes 说的话,OpenClaw 不知道
|
||||
|
||||
#### E.2 目标
|
||||
|
||||
**单一记忆源**:Hermes 和 OpenClaw 不再各自存储记忆,统一走织忆 API。
|
||||
#### E.2 当前架构
|
||||
|
||||
```
|
||||
Hermes ──→ 织忆 Client (ZHIYI_URL=http://localhost:7821) ──→ MemoryWeave SQLite
|
||||
OpenClaw ──→ 织忆 Client ────────────────────────────────→ (同一 DB)
|
||||
┌─────────────────────────────────────────────────────────┐
|
||||
│ /var/lib/memoryweave/(共享) │
|
||||
│ memories.lance │ graph.db │ episodes.lance │ tombstones │
|
||||
│ ↑ ↑ ↑ ↑ │
|
||||
└────────┼──────────────┼───────────┼───────────────┼────────┘
|
||||
│ │ │ │
|
||||
agent_id= namespace agent_id= (软删除
|
||||
hermes-a06 shared openclaw 标记)
|
||||
↑ ↑
|
||||
Hermes Bridge OpenClaw Memory
|
||||
~/.hermes/plugins/ ZhiYi Plugin
|
||||
zhiyi/ ~/.openclaw/workspace/
|
||||
plugins/memory-zhiyi/
|
||||
```
|
||||
|
||||
#### E.3 实施步骤
|
||||
**原始会话(各自独立,不走织忆):**
|
||||
- Hermes: `~/.hermes/sessions/`(飞书消息 JSONL)
|
||||
- OpenClaw: `~/.openclaw/workspace/sessions/`(代码任务 JSONL)
|
||||
|
||||
**Phase 1: 配置切换(零代码改动)**
|
||||
#### E.3 agent_id 分布
|
||||
|
||||
Hermes 和 OpenClaw 的 commit/recall 调用改走织忆:
|
||||
| 系统 | agent_id | namespace | 路径 |
|
||||
|------|----------|-----------|------|
|
||||
| Hermes | `hermes-a06` | `""`(空) | `~/.hermes/sessions/` |
|
||||
| OpenClaw | `openclaw` | `openclaw-main` | `~/.openclaw/workspace/sessions/` |
|
||||
|
||||
```yaml
|
||||
# Hermes: ~/.hermes/config.yaml
|
||||
memory:
|
||||
provider: zhiyi
|
||||
zhiyi_url: http://localhost:7821
|
||||
zhiyi_api_key: ${API_KEY}
|
||||
fallback_to_local: true # 织忆不可用时回退到本地 hermes-lance
|
||||
```
|
||||
#### E.4 回退策略
|
||||
|
||||
```json
|
||||
// OpenClaw: openclaw.json
|
||||
{
|
||||
"memory": {
|
||||
"backend": "zhiyi",
|
||||
"zhiyi_url": "http://localhost:7821",
|
||||
"api_key": "zhiyi-dev-key-2026"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**Phase 2: 双写迁移**
|
||||
|
||||
织忆启动时扫描 Hermes/OpenClaw 现有数据并导入:
|
||||
|
||||
```bash
|
||||
zhiyid --migrate-hermes=/home/muc/.hermes/data/lance
|
||||
zhiyid --migrate-openclaw=/home/muc/.openclaw/data/lancedb
|
||||
```
|
||||
|
||||
迁移完成后,Hermes/OpenClaw 的本地记忆目录标记为只读备份。
|
||||
|
||||
**Phase 3: 移除本地存储**
|
||||
|
||||
Hermes 和 OpenClaw 移除本地 LanceDB 依赖,纯客户端模式。织忆成为唯一记忆源。
|
||||
|
||||
#### E.4 API 兼容性
|
||||
|
||||
织忆已完全实现 Hermes/OpenClaw 原有接口的超集:
|
||||
|
||||
| Hermes 接口 | 织忆接口 | 状态 |
|
||||
|------------|---------|------|
|
||||
| memory.save() | POST /api/v1/commit | ✅ |
|
||||
| memory.search() | POST /api/v1/recall | ✅ |
|
||||
| memory.delete() | DELETE /api/v1/distilled/{id} | ✅ |
|
||||
| memory.bootstrap() | GET /api/v1/bootstrap | ✅ |
|
||||
| memory.feedback() | POST /api/v1/feedback/* | ✅ |
|
||||
|
||||
#### E.5 回退策略
|
||||
|
||||
织忆进程宕机时,Hermes/OpenClaw 自动回退到本地 LanceDB(`fallback_to_local: true`)。恢复后自动同步差异数据。
|
||||
若织忆宕机,Hermes/OpenClaw 各自使用本地缓存(fallback)继续运行。恢复后自动重新同步。
|
||||
|
||||
---
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue