memoryweave/IMPLEMENTATION.md

9.8 KiB
Raw Blame History

织忆 MemoryWeave 实施计划 v0.1

目标Python 原型 → Go+Rust 生产级基础设施 代码生成:全部由 opencode 生成,不做手工编码 仓库http://192.168.123.11:3000/xiaoxue_admin/memoryweave


里程碑概览

里程碑 天数 输出 验收标准
M1: 骨架 1-2 go build + cargo build 通过 /health 200 OK
M2: 存储 3-5 LanceDB 集成 + Embedding 管线 recall 延迟 < 200ms本地 BGE
M3: 核心 API 6-10 /commit + /recall + /bootstrap 对比 Python 版本结果一致
M4: 蒸馏 11-15 自动蒸馏 + 质量评分 commit → distill → LanceDB 全链路
M5: 治理 16-20 冲突检测 + 遗忘 + 知识图谱 /conflicts/scan 返回正确结果
M6: 自优化 21-25 仪表盘 + 缺口检测 + 因果追踪 7 项指标产出有效趋势
M7: 分布式 26-30 Redis Streams + CRDT 双实例 doc_count 一致
M8: 切换 31-35 影子部署 → 灰度 → 全量 7821 端口 Go 服务稳定 72h

M1: 项目骨架Day 1-2

任务

ID 任务 文件 预估
M1.1 Go go mod tidy 通过 go/go.mod 0.5h
M1.2 Rust cargo check 通过 rust/Cargo.toml 0.5h
M1.3 /health 端点 + Auth 中间件 go/internal/api/server.go 2h
M1.4 Protobuf 定义 (Go↔Rust IPC) go/proto/consolidate.proto 1h
M1.5 Rust main.rs 参数解析 rust/src/main.rs 1h
M1.6 systemd unit 文件 deploy/*.service 0.5h
M1.7 CI: build + test (Makefile) Makefile 1h

验收

make build                  # go build + cargo build 通过
sudo make install           # systemd 服务安装成功
curl http://localhost:7821/health  # {"status":"ok"}

M2: 存储层Day 3-5

任务

ID 任务 文件 预估
M2.1 LanceDB schema 创建memories/episodes/tombstones go/internal/storage/lancedb.go 3h
M2.2 LanceDB 读写Insert/Search/Update go/internal/storage/lancedb.go 3h
M2.3 bge-m3 编码客户端(本地 vLLM + 模力方舟 fallback go/internal/storage/embedder.go 3h
M2.4 bge-reranker-v2-m3 客户端 go/internal/storage/reranker.go 2h
M2.5 Recall pipeline: encode → LanceDB search → rerank go/internal/storage/recall.go 3h
M2.6 JSONL 分片读写episodes 历史数据) go/internal/storage/jsonl.go 2h
M2.7 Redis 客户端commit store + 事件流) go/internal/storage/redis.go 2h
M2.8 SQLite 初始化distill_queue + graph + audit_log go/internal/storage/sqlite.go 2h
M2.9 Rust LanceDB 原生读写lancedb crate rust/src/lancedb.rs 2h
M2.10 Rust Embedding 管线Candle/ort rust/src/embed.rs 3h

验收

# LanceDB 创建表 + 插入 10 条测试数据 + 搜索 → 返回正确结果
curl -X POST -H "X-API-Key: $KEY" localhost:7821/api/v1/recall \
  -d '{"query":"牧尘的系统配置","limit":5}'
# → 返回 5 条相关记忆,延迟 < 200ms

M3: 核心 APIDay 6-10

任务

ID 任务 预估
M3.1 POST /api/v1/commit — 写入 episode 3h
M3.2 POST /api/v1/recall — 混合检索(向量+图谱+MMR 3h
M3.3 GET /api/v1/bootstrap — 冷启动 1h
M3.4 POST /api/v1/batch-commit — 批量提交 2h
M3.5 GET /api/v1/stats — 统计 1h
M3.6 全端点 Auth 中间件 1h
M3.7 API 对比测试Python vs Go 3h
M3.8 WebSocket /api/v1/ws/{agent_id} — 实时推送 3h

验收

# 与 Python 版本相同输入 → 相同输出
python -m pytest tests/api_compat.py -v
# → 全部通过

M4: 蒸馏引擎Day 11-15

任务

ID 任务 预估
M4.1 硬规则过滤Layer 1 2h
M4.2 LLM 评估蒸馏Layer 2— 5 维度评分 4h
M4.3 commit → 自动触发蒸馏 2h
M4.4 Distilled 写入 LanceDB 2h
M4.5 批量蒸馏(攒 N 条一起处理) 2h
M4.6 每日 LLM 调用限额50 次/agent 2h
M4.7 降级策略LLM 不可用 → 规则提取) 2h
M4.8 /api/v1/feedback/useful + /not-useful 端点 2h
M4.9 质量评分quality_score = useful/(useful+not_useful) 1h

验证

# 提交 3 条 episode → 自动蒸馏 → 检查 distilled 表
curl -X POST /api/v1/commit -d '{...}'  # x3
curl /api/v1/stats | jq '.distilled_count'
# → 3

M5: 治理引擎Day 16-20

任务

ID 任务 预估
M5.1 冲突检测 — entity/fact/decision 三种冲突 4h
M5.2 /api/v1/conflicts 端点 2h
M5.3 冲突自动裁决latest_wins / primary_wins 2h
M5.4 遗忘策略:线性衰减 + 核心记忆保护 3h
M5.5 知识图谱 SQL schema + 建图 4h
M5.6 多跳导航(双向 BFS + 打分) 4h
M5.7 图谱修剪4 条规则) 2h
M5.8 Namespace 隔离shared vs agent-local graph 2h
M5.9 /api/v1/graph/* 端点 2h
M5.10 WebSocket 冲突通知 → 牧尘裁决 2h

验收

# 写入两条冲突事实 → 检测冲突
curl -X POST /api/v1/commit -d '{"content":"Docker used_by hermes"}'
curl -X POST /api/v1/commit -d '{"content":"Docker used_by openclaw"}'
curl /api/v1/conflicts | jq '.count'
# → 1

# 知识图谱多跳导航
curl /api/v1/graph/navigate -d '{"entity":"Docker","max_hops":2}'
# → 返回 Docker → hermes, Docker → openclaw 完整路径

M6: 自优化引擎Day 21-25

任务

ID 任务 预估
M6.1 自优化仪表盘 (GET /api/v1/metrics/self) — 7 项指标 3h
M6.2 知识缺口检测(连续 3 次 miss → gap 3h
M6.3 缺口自动分类Type A/B/C/D 3h
M6.4 Type B/C 自动修复(同义词映射/阈值重试) 2h
M6.5 Type A 学习任务创建 + WebSocket 推送 2h
M6.6 记忆预取 — 共访关系图谱 3h
M6.7 记忆刷新 — freshness 字段 + stale 标记 2h
M6.8 溯源链 — version_history + source + trigger 2h
M6.9 来源信任加权(牧尘 1.0 > 配置 0.7 > LLM 0.4 1h
M6.10 Rust 深度整合DBSCAN + 衰减回归 + 质量回溯) 5h
M6.11 蒸馏质量反向测试L0→L1→L0' cosine 检验) 3h
M6.12 周期性触发器(条件触发 > 24h 定时) 2h

验收

# 仪表盘有数据
curl /api/v1/metrics/self | jq '.recall_useful_rate'
# → 0.85

# 缺口检测正常工作
curl /api/v1/gaps | jq '.count'
# → > 0

# Rust 深度整合
sudo systemctl start zhiyi-consolidate
journalctl -u zhiyi-consolidate | grep "completed"
# → "consolidation completed: 3 clusters, decay calibrated, quality score 0.92"

M7: 分布式部署Day 26-30

任务

ID 任务 预估
M7.1 Redis Streams 事件传播XADD/XREAD 4h
M7.2 CRDT 合并策略(时间戳 + 来源优先) 4h
M7.3 服务发现Redis Hash + TTL 心跳) 2h
M7.4 速率限制per-agent 令牌桶) 2h
M7.5 Nginx 负载均衡配置 1h
M7.6 备份原子性LanceDB checkpoint + SQLite .backup 2h
M7.7 灾难恢复脚本 1h
M7.8 Prometheus metrics 端点 2h
M7.9 双实例 E2E 测试 3h

验收

# 双实例同步
# Instance A commit → Instance B 30s 内可见
# Instance B 宕机重启 → 自动补齐缺失数据
# doc_count 一致

M8: 灰度切换Day 31-35

ID 任务 预估
M8.1 FAISS → LanceDB 迁移脚本 3h
M8.2 影子部署Go 在 7822 运行 48h
M8.3 灰度Nginx upstream 10% → 50% → 100%
M8.4 systemd 切换zhiyi.service → Go 二进制 1h
M8.5 Hermes bridge 验证memory_search/write 正常 1h
M8.6 旧 Python 代码归档7 天可快速回滚) 0.5h
M8.7 Go 版本稳定运行 72h 无回滚

验收

curl http://localhost:7821/health
# → {"status":"ok","service":"zhiyid","version":"1.0.0","uptime":"72h"}

关键路径

M1 → M2 → M3 → M4 → M5 → M6 → M7 → M8
              ↘ M5可与 M4 并行)
                   ↘ M6依赖 M5 图谱)

可并行

并行组 任务
M2.9-M2.10Rust 与 M2.1-M2.8Go并行
M5治理 可与 M4蒸馏部分并行
M7.5-M7.8(运维) 与 M7.1-M7.4 并行

风险

风险 概率 缓解
opencode 限流 核心路径优先;多轮生成
LanceDB Go 绑定不稳定 备选Rust lancedb crate 原生
bge-m3 向量不一致 cosine_sim ≥ 0.99 阈值检验
FAISS 数据迁移丢失 备份 → 迁移 → 数目对比 → 抽查
Rust Candle/ort 编译失败 先 HTTP 调用 vLLMRust 仅用 LanceDB

分支策略

main          ← 稳定版本,只接受 PR
develop       ← 开发主线
feature/m1-*  ← 各里程碑特性分支
release/v1.0  ← 发布分支

Commit 规范

feat: M3.1 POST /api/v1/commit 实现
fix: LanceDB schema timestamp 类型修正
docs: IMPLEMENTATION.md M2 验收标准更新
refactor: recall pipeline 提取为独立模块

版本标签

标签 对应 日期目标
v0.1.0-dev M1 骨架完成 Day 2
v0.2.0-dev M2 存储完成 Day 5
v0.3.0-dev M3 核心 API Day 10
v0.4.0-dev M4 蒸馏 Day 15
v0.5.0-dev M5 治理 Day 20
v0.6.0-dev M6 自优化 Day 25
v0.7.0-dev M7 分布式 Day 30
v1.0.0 M8 全量切换 Day 35