# 织忆 (MemoryWeave) — 独立记忆基础设施 > **Go + Rust 双二进制架构** | port 7821 | 版本 v0.1.0-dev > Gitea: http://192.168.123.11:3000/xiaoxue_admin/memoryweave/ 织忆是多 Agent 系统的共享记忆层。它提供**语义记忆检索**、**知识图谱导航**、**自动蒸馏整合**三大核心能力,为 Hermes Agent、OpenClaw、Obsidian 等多客户端提供统一的记忆读写接口。 **织忆不是小唯系统的子模块——它是独立的基础设施服务。** 小唯系统(xiaowei-system)是上层应用,织忆是底层存储引擎,两者代码独立、仓库独立、进程独立,通过 HTTP API 交互。 --- ## 相关项目关系图 ``` ┌─────────────────────────────────────────────────────────┐ │ 基础设施层(独立仓库,独立进程) │ │ │ │ 织忆 memoryweave TencentDB │ │ /tmp/memoryweave/ ~/.memory-tencentdb/ │ │ port 7821 port 8420 │ │ zhiyid + LanceDB tdai-gateway │ │ + bge-embed Node.js │ └────────────────────┬────────────────────────────────────┘ │ HTTP API(localhost) ▼ ┌─────────────────────────────────────────────────────────┐ │ 上层应用层(小唯系统) │ │ │ │ ~/.hermes/ ← xiaowei-system 仓库(Git 版本控制) │ │ │ │ ┌─────────┐ ┌──────────┐ ┌─────────┐ ┌──────────┐ │ │ │ Soulful │ │ daemon │ │ cron │ │ skills │ │ │ │ 牵挂 │ │ 持久意识 │ │ 定时任务│ │ 仓颉技能 │ │ │ │ 心迹 │ │ L1→L6 │ │ 自检 │ │ 股票投研 │ │ │ │ 画像 │ │ 蒸馏 │ │ 升级 │ │ │ │ │ └─────────┘ └──────────┘ └─────────┘ └──────────┘ │ │ │ │ daemon.py → 统一写入 → llm_context.json(L7统一层) │ └─────────────────────────────────────────────────────────┘ ▲ │ daemon.py 读取 │ ┌────────────────────┴────────────────────────────────────┐ │ 参考架构项目(GitHub/Gitea) │ │ │ │ agent-memory-skill ← tier分层/线性衰减 参考 │ │ memory-os ← 7层记忆架构 参考 │ └─────────────────────────────────────────────────────────┘ ``` --- ## 各项目详情 ### 织忆 memoryweave(底层存储引擎) | 属性 | 值 | |------|-----| | 源码位置 | `/tmp/memoryweave/` | | Gitea | http://192.168.123.11:3000/xiaoxue_admin/memoryweave | | 进程 | zhiyid(port 7821)+ zhiyi-consolidate + bge-embed(port 8000)| | 数据 | LanceDB(memories)+ graph.db(8397 节点图谱)| | API | `http://127.0.0.1:7821/api/v1/` | ### 小唯系统 xiaowei-system(上层应用) | 属性 | 值 | |------|-----| | 源码位置 | `~/.hermes/` | | Gitea | http://192.168.123.11:3000/xiaoxue_admin/xiaowei-system | | 进程 | daemon.py(持久意识) | | 数据 | llm_context.json(L7 统一层)+ soulful/(Soulful 数据)| **Soulful(牵挂/心迹/画像)** 是 xiaowei-system 的子模块,数据文件在 `~/.hermes/soulful/`: - `cares-queue.json` — 牵挂队列 - `heart-traces.jsonl` — 心迹(重要时刻记录) - `user-profile.json` — 用户画像(含 distilled_rules) ### TencentDB memory-tdai(对话记忆) | 属性 | 值 | |------|-----| | 源码位置 | `~/.memory-tencentdb/memory-tdai/` | | Gitea | 无(未版本控制)| | 进程 | tdai-gateway(port 8420,Node.js)| | 数据 | `memory.db`(对话)+ `vectors.db`(向量)| | API | `http://127.0.0.1:8420/` | | 小唯调用 | daemon.py 通过 `/capture` 和 `/recall` 写入/读取 | ### 参考项目 | 仓库 | 用途 | |------|------| | `xiaoxue_admin/agent-memory-skill` | tier 分层、线性衰减架构参考 | | `xiaoxue_admin/memory-os` | 7层记忆操作系统架构参考 | --- ## 安装顺序 ``` 第一步:织忆(底层) ↓ 第二步:TencentDB(对话存储) ↓ 第三步:小唯系统(上层应用,包含 Soulful) ``` **安装顺序:织忆 → TencentDB → 小唯系统。** 三者通过 HTTP API 互联,代码完全解耦。 --- ## 架构依赖 ``` 小唯系统(daemon.py) ├── /capture (TencentDB) ← L3/L4 scenes 存储 │ └── session_key + user_content + assistant_content ├── http://127.0.0.1:7821 ← 织忆 L1/L2 recall │ └── X-API-Key: zhiyi-dev-key-2026 ├── ~/.hermes/soulful/ ← Soulful L5/L6 读写 │ └── cares + heart-traces + user-profile └── → 统一写入 ~/.hermes/llm_context.json(L7) ``` | 项目 | 仓库 | 定位 | 依赖关系 | |------|------|------|---------| | **织忆 memoryweave** | `xiaoxue_admin/memoryweave` | 底层存储引擎(zhiyid + LanceDB + bge-embed)| 被依赖方 | | **小唯 xiaowei-system** | `xiaoxue_admin/xiaowei-system` | 上层应用(daemon + cron + 记忆蒸馏)| 依赖方 | **安装顺序:先织忆,再小唯系统。** 小唯系统通过 `localhost:7821` 调用织忆 API。 ```bash # 小唯系统调用织忆示例 curl -s -H "X-API-Key: zhiyi-dev-key-2026" \ -d '{"query":"牧尘偏好","top_k":3}' \ http://127.0.0.1:7821/api/v1/recall ``` --- ## 架构总览 ``` ┌──────────────────────────────────────────────────────────────┐ │ Hermes Agent (Plugin) │ │ plugins/memory/zhiyi/ — 7 tools + 自动注入 + 社交关闭 │ └──────────────────────────┬───────────────────────────────────┘ │ HTTP (localhost:7821) ▼ ┌──────────────────────────────────────────────────────────────┐ │ zhiyid (Go daemon, port 7821) │ │ │ │ ┌─────────────┐ ┌──────────────┐ ┌──────────────────────┐ │ │ │ REST API │ │ 蒸馏引擎 │ │ 冲突治理 / 缺口检测 │ │ │ │ ~84 端点 │ │ distill/ │ │ conflict + gap │ │ │ └──────┬──────┘ └──────┬───────┘ └──────────────────────┘ │ │ │ │ │ │ │ ┌──────────▼───────────┐ │ │ │ │ SQLiteGraphStore │ │ │ │ │ (7014 节点/61058 边)│ │ │ │ └──────────────────────┘ │ │ │ │ │ │ Unix Socket (/tmp/zhiyi-ipc.sock) │ └─────────┼─────────────────────────────────────────────────────┘ ▼ ┌──────────────────────────────────────────────────────────────┐ │ zhiyi-consolidate (Rust sidecar) │ │ │ │ ┌──────────────┐ ┌──────────────┐ ┌────────────────────┐ │ │ │ LanceDB 原生 │ │ DBSCAN 聚类 │ │ Embedding + │ │ │ │ 读写 │ │ 衰减回归 │ │ Rerank 管线 │ │ │ └──────┬───────┘ └──────────────┘ └────────────────────┘ │ │ ▼ │ │ ┌─────────────────────────────────────┐ │ │ │ /var/lib/memoryweave/ (LanceDB) │ │ │ │ memories: 3510 条 / episodes: 73 │ │ │ └─────────────────────────────────────┘ │ └──────────────────────────────────────────────────────────────┘ ┌──────────────────────────┐ │ bge-embed (port 8000) │ ← Python ONNX 推理 │ BGE-M3 embedding 服务 │ └──────────────────────────┘ ``` ### 语言分工 | 组件 | 语言 | 原因 | |------|------|------| | HTTP API + 业务逻辑 | Go | goroutine 高并发,单二进制 | | LanceDB + 向量管线 | Rust | 原生 `lancedb` crate,零 FFI | | Embedding 推理 | Python (ONNX) | BGE-M3 模型,最佳推理生态 | | Hermes 插件 | Python | Hermes MemoryProvider 接口 | --- ## 功能特性 ### 语义记忆(commit / recall) ``` POST /api/v1/commit — 提交记忆(需 agent_id + content) POST /api/v1/recall — 语义检索(支持 hybrid / keyword / semantic 三模式) ``` - 1024 维向量嵌入(BGE-M3) - MMR diversity 默认 0.3,结果去重 - freshness 生命周期:`fresh` → `verified` - 支持 namespace 隔离 ### 知识图谱(Navigate / Stats) ``` POST /api/v1/graph/navigate — BFS 节点关系遍历 GET /api/v1/graph/stats — 图谱统计 POST /api/v1/graph/query — 精确边查询 GET /api/v1/graph/pagerank — PageRank 排序 ``` - SQLite 存储,7014 节点 / 61058 边 - 自动实体归一化(`n_` 前缀) - 按关系类型分组 + 推荐探索建议 - 自然语言查询(`nl_query`) ### P0 — Recall 降级策略 当 bge-embed (8000) 或 Rust IPC sidecar 不可用时,recall 自动降级到 graph.db 关键词搜索(FallbackTextSearch),返回 `X-Fallback: graph` 响应头。保证单点故障不导致全挂。 ### P1 — 自动注入钩子 + 社交关闭 - `queue_prefetch` 后台线程自动查织忆 + 缓存(TTL 30s) - 社交关闭检测:短消息、纯社交用语("好的" / "ok" / "👍")跳过注入 - 输出标记:`[织忆 Memory]` / `[织忆 Graph]` - 无缝融入 Hermes 对话流 ### P2 — 信任评分 `graph_edges` 表新增三列: | 列名 | 类型 | 默认值 | 说明 | |------|------|--------|------| | `trust_score` | REAL | 0.5 | 信任评分(贝叶斯先验) | | `retrieval_count` | INTEGER | 0 | 被检索次数 | | `helpful_count` | INTEGER | 0 | 被标记有用次数 | 评分公式:`trust_score = helpful_count / retrieval_count`(retrieval_count > 0 时) ### P3 — CREATIVE.md 隔离 `~/.hermes/CREATIVE.md` 存储织忆工作记忆,插件 `system_prompt_block()` 自动加载标注为 `[织忆 工作记忆]`(Ground Truth level 2),解决 memory 工具与织忆 plugin 的双写入冲突。 ### P4 — Ground Truth Prompt SOUL.md 定义 4 级权威层级: 1. **Terminal 实时输出** — curl / 工具调用真实结果 2. **注入记忆** — `[织忆 Memory]` / `[织忆 Graph]`(插件注入) 3. **项目官方文档** — `docs/` / README / INSTALL 4. **训练知识** — 模型权重中存储的通用知识 低层级不可推翻高层级。另有记忆反馈规则确保信任评分闭环。 ### P5 — Wiki 策展管线 `scripts/wiki_curator.py` 自动知识库管线: - 扫描 `~/mc/` 下 `.md` 文件,SHA-256 diff 跟踪 - 启发式提取:headings → 概念,bold / key phrases → 实体 - 写入织忆:概念 `/commit`(category=wiki),关系 `/graph/edge` - 支持 `--dry-run`(预览)、`--force`(全量)、`--llm`(LLM 增强) - 跳过 <500 字符文件和 `_` 前缀文件 ### H1-H6 精度优化 | 编号 | 优化 | 状态 | |------|------|------| | H1 | BM25 关键词评分(0.7 向量 + 0.3 关键词融合) | ✅ | | H2 | LLM Wiki 策展(--llm 模式,回退启发式) | ✅ | | H3 | 自动信任评分(recall 后异步 UpdateEdgeTrustScores) | ✅ | | H4 | 默认 MMR diversity = 0.3 | ✅ | | H5 | 三模式搜索:hybrid / keyword / semantic | ✅ | | H6 | 多级存储:LanceDB → SQLite → 内存三级降级 | ✅ | ### cli-anything 命令行伴侣 织忆原生集成 cli-anything 框架,将 Go 和 Rust API 封装为 CLI 子命令。支持: - `zhiyi commit` / `zhiyi recall` — 记忆操作 - `zhiyi navigate` / `zhiyi stats` — 图谱查询 - `zhiyi health` — 健康检查 - 详见 `cli-anything/` 目录 ### rag-skill 渐进式检索(新增) 三段式检索架构: ``` 用户查询 → keyword 粗筛 → semantic 精排 → rerank 重排序 ``` - 粗筛层:BM25 关键词倒排索引,快速缩减候选集 - 精排层:BGE-M3 语义嵌入,向量相似度排序 - 重排序层:cross-encoder rerank,微调 top-K 结果 - 默认返回 top-K 结果,支持 `top_k` 参数调优 --- ## 快速开始 ### 前置依赖 - Go 1.21+ - Rust 1.75+(仅需构建 zhiyi-consolidate) - Redis 7.0+(可选,默认降级为内存模式) - Python 3.10+(bge-embedding 服务) ### 构建 ```bash # 克隆 git clone http://192.168.123.11:3000/xiaoxue_admin/memoryweave.git cd memoryweave # 构建 Go daemon(zhiyid) make build # 构建 Rust sidecar(可选) make build-rust # 构建 CLI 工具 make build-cli ``` ### 运行 ```bash # 方式一:直接运行 ~/.local/bin/zhiyid # 方式二:systemd(用户级,推荐) systemctl --user enable --now zhiyid systemctl --user enable --now bge-embed systemctl --user enable --now zhiyi-consolidate curl http://localhost:7821/health # 方式三:Docker docker compose up -d curl http://localhost:7821/health ``` ### 验证完整链路 ```bash # 1) 健康检查 curl -s -H "X-API-Key: zhiyi-dev-key-2026" http://localhost:7821/api/v1/health # 2) 提条记忆试试 curl -s -X POST -H "X-API-Key: zhiyi-dev-key-2026" \ -H "Content-Type: application/json" \ -d '{"agent_id":"a06","content":"Hello 织忆","metadata":{"source":"test"}}' \ http://localhost:7821/api/v1/commit # 3) 搜一下 curl -s -X POST -H "X-API-Key: zhiyi-dev-key-2026" \ -H "Content-Type: application/json" \ -d '{"query":"织忆","top_k":3}' \ http://localhost:7821/api/v1/recall # 4) 图谱统计 curl -s -H "X-API-Key: zhiyi-dev-key-2026" http://localhost:7821/api/v1/graph/stats ``` ### Hermes 插件安装 ```bash cp -r plugins/hermes-zhiyi ~/.hermes/hermes-agent/plugins/memory/zhiyi uv pip install websocket-client cd ~/.hermes/hermes-agent python3 -c "from plugins.memory.zhiyi import HermesZhiYiMemoryProvider; \ p = HermesZhiYiMemoryProvider(); \ print(f'可用: {p.is_available()}, 工具数: {len(p.get_tool_schemas())}')" ``` --- ## 配置参考 ### 环境变量 | 变量 | 默认值 | 说明 | |------|--------|------| | `PORT` | `7821` | API 监听端口 | | `STORAGE_BACKEND` | `lancedb` | 存储后端:`lancedb` / `sqlite` / `memory` | | `SQLITE_PATH` | `/var/lib/memoryweave/memoryweave.db` | SQLite 数据库路径 | | `LANCEDB_SOCKET` | `/tmp/zhiyi-ipc.sock` | Rust IPC socket 路径 | | `GRAPH_PATH` | `/var/lib/memoryweave/graph.db` | 图谱数据库路径 | | `API_KEY` | — | API 认证密钥 | | `VLLM_ENDPOINT` | — | Embedding 模型端点 | | `BGE_MODEL_DIR` | — | BGE-M3 ONNX 模型目录 | | `RERANK_ENDPOINT` | — | Rerank 模型端点 | | `LLM_ENDPOINT` | — | LLM 端点(蒸馏/自动修复用) | | `LLM_MODEL` | — | LLM 模型名称 | | `LLM_API_KEY` | — | LLM API Key | | `STATIC_DIR` | 内置静态文件 | Web UI 静态文件目录 | | `ZHIYI_WEB_UI_ROOT` | 内置 HTML | Web UI 入口路径 | --- ## API 速查表 > 所有 `/api/v1/*` 接口需要 Header: `X-API-Key: ***` ### 健康检查 | 方法 | 路径 | 说明 | |------|------|------| | GET | `/health` | 健康检查(无认证) | | GET | `/api/v1/health` | 健康检查(需认证) | ### 核心记忆 | 方法 | 路径 | 说明 | |------|------|------| | POST | `/api/v1/commit` | 提交记忆 | | POST | `/api/v1/recall` | 语义检索(支持 mode=hybrid\|keyword\|semantic) | | POST | `/api/v1/batch-commit` | 批量提交 | | GET | `/api/v1/memories` | 列出记忆(分页) | | POST | `/api/v1/feedback` | 反馈(useful / not-useful / deprecate) | ### 统计 | 方法 | 路径 | 说明 | |------|------|------| | GET | `/api/v1/stats` | 系统统计(total_memories, episodes 等) | ### 知识图谱 | 方法 | 路径 | 说明 | |------|------|------| | GET | `/api/v1/graph/stats` | 图谱统计(节点数 / 边数 / 密度) | | POST | `/api/v1/graph/navigate` | BFS 节点遍历(entity + max_hops) | | POST | `/api/v1/graph/query` | 精确边查询 | | POST | `/api/v1/graph/nl_query` | 自然语言图谱查询 | | POST | `/api/v1/graph/edge` | 添加关系边 | | POST | `/api/v1/graph/edge/feedback` | 边信任评分反馈 | | GET | `/api/v1/graph/pagerank` | PageRank 节点排名 | | POST | `/api/v1/graph/export` | 导出图谱 | | POST | `/api/v1/graph/cleanup` | 脏数据清理(支持 dry_run) | | GET | `/api/v1/cache/stats` | 图谱缓存命中率 | ### WebSocket | 方法 | 路径 | 说明 | |------|------|------| | WS | `/api/v1/ws/{agent_id}` | 实时记忆流订阅 | ### 管理接口 | 方法 | 路径 | 说明 | |------|------|------| | POST | `/api/v1/admin/consolidate` | 手动触发记忆整合 | | POST | `/api/v1/admin/forget` | 删除记忆 | | POST | `/api/v1/admin/backup` | 创建备份 | | GET | `/api/v1/admin/backups` | 列出备份 | | POST | `/api/v1/admin/restore` | 恢复备份 | | POST | `/api/v1/admin/distill/force` | 强制蒸馏 | | GET | `/api/v1/admin/audit` | 审计日志 | ### 冲突治理 | 方法 | 路径 | 说明 | |------|------|------| | GET | `/api/v1/conflicts` | 列出记忆冲突 | | POST | `/api/v1/conflicts/resolve` | 解决冲突 | ### 缺口检测 | 方法 | 路径 | 说明 | |------|------|------| | GET | `/api/v1/gaps` | 列出记忆缺口 | | POST | `/api/v1/gaps/detect` | 检测缺口 | | POST | `/api/v1/gaps/repair` | 修复缺口 | | POST | `/api/v1/gaps/close/{id}` | 关闭缺口 | ### 蒸馏管理 | 方法 | 路径 | 说明 | |------|------|------| | GET | `/api/v1/distill/status` | 蒸馏状态 | | GET | `/api/v1/distill/queue` | 蒸馏队列 | | GET | `/api/v1/distill/quota` | 蒸馏配额 | ### L3 世界模型 | 方法 | 路径 | 说明 | |------|------|------| | GET | `/api/v1/l3/worldmodel` | 获取世界模型 | | POST | `/api/v1/l3/worldmodel` | 更新世界模型 | --- ## 目录结构 ``` memoryweave/ ├── go/ # Go daemon(zhiyid) │ ├── cmd/zhiyid/ # 主入口 │ ├── internal/ │ │ ├── api/ # HTTP 路由 + 端点(~84 端点) │ │ │ └── routes/ # 路由实现(core, graph, ws, l3, ...) │ │ ├── governance/ # 冲突治理、图谱存储、自动扩展 │ │ ├── storage/ # 存储引擎(lancedb, sqlite, redis, recall, ...) │ │ ├── models/ # 数据模型 │ │ ├── distill/ # 蒸馏引擎 │ │ ├── consolidate/ # 记忆整合客户端 │ │ ├── selfoptimize/ # 自优化管线 │ │ ├── distributed/ # 分布式支持 │ │ └── metrics/ # 监控指标 │ └── zhiyid-new # 编译产物 ├── rust/ # Rust sidecar(zhiyi-consolidate) │ └── src/ │ ├── main.rs # IPC 监听 + 调度 │ ├── lancedb_ops.rs # LanceDB 原生读写 │ ├── embed.rs # Embedding 推理 │ ├── rerank.rs # Rerank 管道 │ ├── cluster.rs # DBSCAN 聚类 │ ├── decay_calibrate.rs # 衰减校准 │ ├── graph_prune.rs # 图谱剪枝 │ ├── quality_backtrace.rs # 质量回溯 │ └── report.rs # 报告生成 ├── plugins/ │ ├── hermes-zhiyi/ # Hermes MemoryProvider 插件(7 工具) │ │ └── __init__.py # v1.1.0: 自动注入 + 社交关闭 │ └── obsidian/ # Obsidian 侧边栏插件 ├── scripts/ # 运维脚本 │ ├── wiki_curator.py # P5 Wiki 策展管线 │ ├── three-way-check.sh # 三方交叉健康检查 │ ├── verify-p0p1p2.sh # P0/P1/P2 一键验证 │ └── daily-check.sh # 每日巡检 ├── deploy/ # 部署配置 │ └── systemd/ # systemd service 文件 │ ├── zhiyid.service │ ├── bge-embed.service │ └── zhiyi-consolidate.service ├── cli-anything/ # CLI 命令行伴侣集成 ├── carriers/ # 载体(Obsidian / 飞书等) ├── proto/ # Protocol Buffers 定义 ├── web-ui/ # Web 管理界面 ├── docs/ # 设计文档 / 方案文档 ├── tests/ # 集成测试 ├── backups/ # 备份目录 ├── skills/ # Hermes skills 定义 ├── docker-compose.yml # Docker 编排 ├── Makefile # 构建入口 ├── DESIGN.md # 完整架构设计(v3.8) ├── INSTALL.md # systemd 详细安装步骤 ├── BENCHMARK.md # 性能基准测试 └── VERSION # 版本文件 ``` --- ## 运维 ### 进程管理 ```bash # 查看所有相关进程 ps aux | grep -E 'zhiyi|bge' | grep -v grep # 查看端口 ss -tlnp | grep -E '7821|8000' ``` ### systemd 操作 ```bash # 状态检查 systemctl --user status zhiyid systemctl --user status bge-embed systemctl --user status zhiyi-consolidate # 日志 journalctl --user -u zhiyid -f journalctl --user -u bge-embed -f journalctl --user -u zhiyi-consolidate -f # 重启 systemctl --user restart zhiyid ``` ### 健康检查 ```bash # 一键三方交叉验证(进程 + 端口 + 端点) bash scripts/three-way-check.sh # 或手动 curl -s -H "X-API-Key: zhiyi-dev-key-2026" http://localhost:7821/api/v1/health curl -s http://localhost:8000/health # bge-embed ``` ### 日志位置 | 进程 | 日志 | |------|------| | zhiyid | `/tmp/zhiyid.log` / `journalctl --user -u zhiyid` | | Rust sidecar | `/tmp/zhiyi-sidecar.log` / `journalctl --user -u zhiyi-consolidate` | | bge-embed | `journalctl --user -u bge-embed` | --- ## 相关项目 - **Hermes Agent** — 织忆的主要消费者。通过 `memory.provider: zhiyi` 配置自动集成 7 个记忆工具。 - **OpenClaw** — 第二消费者。通过 `openclaw-zhiyi-plugin/` 集成织忆记忆。 - **Obsidian** — 知识管理前端。通过 `plugins/obsidian/` 侧边栏插件交互。 - **cli-anything** — 命令行伴侣。将织忆 API 封装为 CLI 子命令。 - **Memory-OS** — 竞品对比参考(7 层记忆架构)。详见 `docs/memory-os-7-layer-comparison.md`。 --- ## 文档 - [DESIGN.md](DESIGN.md) — 完整架构设计 v3.8 - [INSTALL.md](INSTALL.md) — systemd 详细安装步骤 - [Makefile](Makefile) — 构建入口(`make build` / `make build-rust` / `make build-cli`) - [docker-compose.yml](docker-compose.yml) — Docker 编排 - [BENCHMARK.md](BENCHMARK.md) — 性能基准 - [docs/](docs/) — 方案文档与竞品分析