# 织忆 v2 — LLM 驱动的自优化系统 > 版本:v2.0.0-draft > 状态:待评审 > 基于:v1.0.0-stable --- ## 1. 背景与目标 ### 1.1 现状问题 v1 版本中,织忆各个模块(distill、consolidate、recall)各自为政,没有全局感知和自主优化能力: ``` commit → distill(被动,一次一条) ↓ consolidate(定时,固定流程,不感知状态) ↓ 质量回溯(采样20条,不闭环) ↓ recall(独立系统) ``` **核心矛盾**:LLM 没有被用来管理织忆,参数全靠手设,异常靠牧尘发现。 ### 1.2 升级目标 1. **LLM 全局巡检** — 主动发现全流程堵点和异常 2. **参数自动调优** — 基于指标自动调整,无需手设 3. **Hermes 监督汇报** — 我执行操作,牧尘知情,重大决策上报 4. **可回滚** — 任何时候可切回 v1.0.0-stable ### 1.3 设计原则 | 原则 | 说明 | |---|---| | 成本优先 | 无异常不调用 LLM,用指标驱动触发 | | 我执行 | LLM 发现/建议,我执行操作,不让它直连数据 | | 可观测 | 每次决策记录 JSONL + git commit | | 轻量触发 | 规则引擎处理常见情况,LLM 只处理复杂因果 | --- ## 2. 系统架构 ### 2.1 角色分工 ``` ┌─────────────────────────────────────────────────────┐ │ 织忆 v2 独立部署包(可部署在其他机器) │ │ │ │ ┌─────────────────────────────────────────────┐ │ │ │ LLM Agent(独立运行,不依赖 Hermes) │ │ │ │ ├─ 自己的 cronjob(每 60 分钟自检) │ │ │ │ ├─ 规则引擎:自动调参 │ │ │ │ ├─ LLM 巡检:复杂因果自主决策 │ │ │ │ └─ 自主调用织忆 API 执行操作 │ │ │ └─────────────────────────────────────────────┘ │ │ │ │ 决策日志 → git commit → 飞书通知牧尘 │ └─────────────────────────────────────────────────────┘ ↓(飞书通知,仅重大决策) ┌─────────────────────────────────────────────────────┐ │ Hermes(可选,不参与运行) │ │ ├─ 旁听重大决策(飞书收到通知) │ │ └─ 牧尘可通过 Hermes 转发指令给 LLM Agent │ └─────────────────────────────────────────────────────┘ ``` ### 2.2 独立性设计 LLM Agent 脱离 Hermes 独立运行的关键点: - 自己的定时器(systemd timer 或 cronjob) - 自己持有织忆 API 地址和认证 - 自己管理 LLM API(可独立配置模型和端点) - 飞书机器人直接通知牧尘,不经过 Hermes 中转 - 部署时只需修改配置文件,无需改动 Hermes ### 2.3 与 v1 的关系 - v1 的各个 API 和逻辑保持不变,作为执行层 - v2 在 v1 之上加了一层"调度 + 巡检"逻辑 - v2 的调度器用 cronjob 实现,调用 v1 的已有 API --- ## 3. 触发机制 ### 3.1 指标驱动(非定时) 每 60 分钟读取一次状态(现有 cronjob `织忆状态看板`),判断是否触发巡检: | 触发条件 | 说明 | |---|---| | recall 命中率连续 2 次下降 | 需要巡检 recall 质量 | | gap_detected 堆积 > 5 条未处理 | 需要巡检 recall gap | | distill 队列积压 > 20 条 | 需要巡检 distill 瓶颈 | | consolidate 质量分 < 0.6 | 需要巡检聚类/质量回溯 | | 冲突堆积 > 3 条 | 需要巡检冲突处理 | | 规则引擎连续 3 次调参无效 | 需要 LLM 分析复杂因果 | **无异常时完全不调用 LLM**,不花额外费用。 ### 3.2 手动触发 牧尘可以随时说"巡检织忆",我会立即执行一次完整巡检。 --- ## 4. 参数自动调优 ### 4.1 参数列表 | 参数 | 位置 | 默认值 | 正常范围 | 调整粒度 | |---|---|---|---|---| | `dbscan_epsilon` | consolidate | 0.5 | 0.3–1.5 | ±0.1 | | `dbscan_min_points` | consolidate | 3 | 2–10 | ±1 | | `decay_rate` | tuning.go | 0.015 | 0.005–0.05 | 乘/除 1.2 | | `gap_threshold` | tuning.go | 3 | 1–10 | ±1 | | `consolidate_after` | tuning.go | 50 | 20–200 | ±10 | | `prune_threshold` | consolidation_pipe.go | 0.15 | 0.05–0.5 | ±0.05 | ### 4.2 规则引擎调参(无需 LLM) 规则引擎根据指标直接调整参数: ``` IF recall 命中率下降 AND noise_points > 总数 30%: → epsilon += 0.1 IF gap 堆积 > 5 AND gap_threshold 连续 2 次调低无效: → 触发 LLM 巡检 IF distill 质量分下降 AND decay_rate 最近 7 天内未调: → decay_rate /= 1.2 IF 修剪节点数 / 总节点数 > 20%: → prune_threshold += 0.05 ``` ### 4.3 LLM 辅助调参 规则引擎遇到复杂因果时,调用 LLM: ``` 触发条件:规则引擎连续 3 次调参后指标未改善 输入:系统手册 + 当前指标快照 + 调参历史 + 异常事件 LLM 输出: { "analysis": "根因分析", "action": "调参 / 重蒸 / 合并 / 其他", "parameters": { "epsilon": 0.6 }, "reason": "..." } ``` ### 4.4 调参执行流程 ``` 规则引擎判断需要调参 ↓ 读取当前参数值 ↓ 应用调整(写入 tuning.go 或调用 API) ↓ 记录到 llm-tuning-log.jsonl ↓ git commit "llm-tune: epsilon 0.5→0.6" ↓ 下次指标采样时判断是否生效 ``` --- ## 5. LLM 系统手册 ### 5.1 手册内容 触发 LLM 巡检时,注入以下上下文: ``` 你是织忆记忆系统的巡检员,负责发现全流程的堵点和异常。 【系统架构】 - distill:记忆蒸馏,commit 时被动触发,将长对话压缩为记忆 - consolidate:记忆整合,定时(DBSCAN 聚类 + 剪枝 + 衰减校准 + 质量回溯) - recall:记忆召回,查询时向量检索 - graph:图谱管理,实体/关系/冲突 【参数说明】 - dbscan_epsilon:聚类半径,影响聚类数量和 noise 比例 - dbscan_min_points:最小点数,影响核心点判定 - decay_rate:遗忘衰减率,值越大记忆衰减越快 - gap_threshold:recall gap 感测阈值,连续 N 次 miss 才记录 - prune_threshold:图谱剪枝权重阈值 【正常范围】 - recall 命中率 > 70% - noise_points / 总数 < 20% - distill 质量分 > 0.6 - gap 堆积 < 5 条 - 冲突 < 3 条堆积 【约束】 - 不要轻易触发全量重蒸,成本高 - 优先用规则调参,复杂情况才用 LLM - 每次操作记录到 /home/muc/projects/memoryweave/ops/llm-tuning-log.jsonl 【当前状态】 {timestamp} {metrics_snapshot} {recent_events} 调参历史:{tuning_history} ``` ### 5.2 手册存放位置 ``` /home/muc/projects/memoryweave/ops/ops-manual.md ``` --- ## 6. 决策日志 ### 6.1 日志格式(JSONL,每行一条) ```json {"ts":"2026-06-09T03:00:00Z","type":"parameter_tune","param":"dbscan_epsilon","old":"0.5","new":"0.6","reason":"recall命中率下降,noise>30%","trigger":"rule_engine","result":"pending","model":"minimaxai/minimax-m2.7"} {"ts":"2026-06-09T04:00:00Z","type":"llm_inspection","trigger":"gap堆积>5","analysis":"根因是gap_threshold设置过低","actions":["gap_threshold+=1"],"model":"minimaxai/minimax-m2.7"} ``` ### 6.2 文件位置 ``` /home/muc/projects/memoryweave/ops/llm-tuning-log.jsonl ``` ### 6.3 Git 版本化 每次有决策写入后,提交一次: ```bash git add ops/llm-tuning-log.jsonl git commit -m "llm-tune: epsilon 0.5→0.6 (recall下降触发)" ``` --- ## 7. LLM Agent 的运行方式 ### 7.1 自主 Loop(独立于 Hermes) LLM Agent 独立运行,通过 systemd timer 每 60 分钟自检: ``` systemd timer(每 60 分钟): ├─ 读取指标(/api/v1/stats) ├─ 规则引擎判断 │ └─ 可处理 → 自动调参 → 记录日志 │ └─ 复杂因果 → 调用 LLM 巡检 └─ LLM 巡检结果 → 执行操作 → 记录日志 └─ 重大决策 → 飞书机器人直接通知牧尘 ``` ### 7.2 飞书直接通知牧尘 LLM Agent 拥有自己的飞书机器人,重大决策不经过 Hermes 直接通知牧尘: | 决策类型 | 是否通知 | |---|---| | 小调参(epsilon ±0.1) | ❌ 静默 | | 正常调参(decay_rate ±20%) | ❌ 静默 | | 大幅调参(decay_rate ±50%以上) | ✅ 飞书通知 | | 触发全量重蒸 | ✅ 飞书通知 | | 连续 3 次调参无效 | ✅ 飞书通知 | | 发现系统性问题(distill 质量持续下降) | ✅ 飞书通知 | ### 7.3 汇报格式(飞书) ``` 🤖 织忆 LLM 巡检报告 时间:2026-06-09 08:00 发现问题:recall 命中率下降至 62%,连续 2 次调参无效 分析:根因是 DBSCAN epsilon 过小,导致记忆碎片化 操作:epsilon 0.5→0.7,触发 consolidate full 建议:观察 3 天,如未改善考虑扩大 rerank 范围 ``` ### 7.4 Hermes 的位置 Hermes 不参与 LLM Agent 的运行,只在以下场景介入: - 牧尘通过飞书问 Hermes "织忆最近怎么了"→ Hermes 查询日志回答 - 牧尘让 Hermes "帮看看织忆的状态"→ Hermes 调用 LLM Agent 的状态 API - LLM Agent 通知牧尘后,牧尘追问 Hermes → Hermes 解读 --- ## 8. 回滚机制 ### 8.1 回滚到 v1 ```bash cd /home/muc/projects/memoryweave git checkout v1.0.0-stable git reset --hard systemctl --user restart zhiyid ``` ### 8.2 v1.0.0-stable 内容 ``` commit: fix: add clusters_found/noise_points/quality_score to consolidate API tag: v1.0.0-stable ``` ### 8.3 v2 开发分支 ``` 主开发分支:main(当前) v1 稳定版:v1.0.0-stable(tag) v2 发布后打 tag:v2.0.0-stable ``` --- ## 9. 实施计划 ### Phase 1:日志基础设施(v2 前置) - 创建 `ops/llm-tuning-log.jsonl` - 创建 `ops/ops-manual.md` - 实现 git commit 封装 ### Phase 2:LLM Agent Loop - 实现 cronjob 驱动的自主巡检 - 实现规则引擎自动调参 - 实现 JSONL 写入 + git commit ### Phase 3:Hermes 旁听汇报 - 实现飞书重大决策上报 - 实现牧尘手动巡检入口(飞书 → Hermes → LLM Agent) --- ## 10. 待确认问题 1. **调参上限** — LLM 一次调整不超过一个参数,幅度不超过 ±50% ✅ 2. **手动巡检入口** — 牧尘说"巡检织忆"→ LLM Agent 自己的飞书机器人直接响应 ✅ 3. **LLM Agent 用的模型** — 和织忆共用同一个 LLM API(`LLM_ENDPOINT` / `LLM_MODEL` 环境变量)✅ --- ## 11. 实施计划 ### Phase 1:日志基础设施(v2 前置) - 创建 `ops/llm-tuning-log.jsonl` - 创建 `ops/ops-manual.md` - 创建 `ops/llm-agent/` 目录(LLM Agent 代码) - 实现 git commit 封装 ### Phase 2:LLM Agent 独立服务 - 实现 systemd timer + service - 实现指标读取 + 规则引擎调参 - 实现 LLM 巡检调用 - 配置独立飞书机器人 ### Phase 3:部署独立运行 - 配置文件(织忆 API 地址、LLM 端点、飞书机器人) - 部署在其他机器上验证 - 验证脱离 Hermes 自主运行 --- *文档状态:已保存,待将来需要时实现 v2* > **状态说明**:v2 方案已完整设计,但因当前织忆运行正常、规模不大,暂不实现。先用监控报警最小闭环。 > 需要时执行:`git checkout main && cat DESIGN-v2-llm-optimizer.md`