# 主线路线图（2026-09-14 定稿）

> 唯一"看这里"的文件：回答「千头万绪怎么理」。事项明细在 `TODO-BACKLOG.md`，本文件只讲**主线、依赖、顺序、判据**。
> 用户 2026-09-14 亲述 9 项（QQ 记录）+ 群友脱敏记忆文件报的 3 条工具缺陷，已全部归位到下面四条主线。
> **可视化孪生**：`TODO-GRAPH.html`（同一批事项的图，用户直接看那张；**改排期时两边必须同步**）。

## 0 一句话主脉

所有事项其实在回答**同一个问题**：**记忆从产生到使用，中间哪一步会出错？** 把这条链路摊开，就是六步：

| 步骤 | 出错会怎样 | 对应事项 |
|---|---|---|
| ① 产生（反思/沉淀） | 产生**错误记忆** | B1 晋升标准（8 号）、A1 纠错 |
| ② 存储（文件/索引） | 写坏、超容量、改一下全库重排 | A5 文件卫生（群友报 3 条）、A1 块级缓存 |
| ③ 选取（检索） | 选错/漏选/被旧记忆带偏 | A3 分级精确检索、A6 语义框架（9 号）、A4 会话检索 |
| ④ 注入（进上下文） | 把错的灌进去，**一路走错** | A2 注入上限 + 排除来源（4 号前半） |
| ⑤ 晋升（长期化） | 不可控、不直观、串项目 | B2 skill hand-off（8 号）、B3 可读性（5 号）、B4 晋升开关（3 号） |
| ⑥ 呈现（给人看） | 看不见进展、开关点不动 | C2 graph 集成（1 号目标）、C1 接续开关（1 号）、C3 模型选择（2 号） |

**排序原则**：先做「哪一步最痛」+「哪一步是别人的前置」。据此得出下面四条主线的优先级。

## 1 四条主线

> ⚠️ **编号口径（防混淆）**：本条线里的 `A/B/C/D + 数字`（如 A1、C2）是**主线条目号**，与 `TODO-BACKLOG.md` 历史分区名 `§A/§B/§C/§D`（那 A=阻塞在用户决策、B=下一版三点、C=冷启动、D=分发门面）**无关**。**唯一权威编号是看板号 `P0-①…/P1-⑤…/P2-⑦…`**，每条主线条目后面都标了对应的看板号，两边以看板号对齐。

### A 线｜记忆的正确性（进得对、出得准、错得掉）★最痛
- **A1 错误记忆的废弃与修改**：改正 = 写新记录声明 `supersedes` + 旧记录标 `supersededBy` + 检索过滤；配套**块级向量缓存**（改一条只嵌一条，不再整库重排）。← 3 号/4 号诉求 + 图片里"语义模型需要编号、随便增删会乱、每次都要重新构建"的正解
- **A2 注入上限 + 来源排除**：给注入设压缩上限，并能把某条来源整个排除（坏记忆不再被反复灌进去）。← 4 号前半（含"旧记忆怎么废弃、怎么改"）
- **A3 检索的精确与分级**：Tier-0 目录 → L0 摘要 → 原文，逐层缩窄 + 仲裁规则。← P0-③
- **A4 会话检索可用**：51 个阻塞文件（已取证，四组处方，等拍板施工）。← P0-①
- **A4b 跨会话 / 跨 Agent 检索**（**本会话主线，勿再漏**）：让"我记不清哪版改了什么"真正可查——覆盖 DSH 自身会话历史 + 其它 Agent 的记忆/会话（Claude Code / Codex / WorkBuddy / ZCode）。**路径已选 C（分期版 A）**：先把插件自己承诺的能力做实，再扩到外部 Agent 源。**调研与成本已实测**：DSH 191 个/320MB、Codex 17/45.8MB、WorkBuddy 89/155MB、ZCode 3/80MB（合计约 600MB）；DSH 321MB 压缩 → 解压约 0.67GB → 可索引正文约 0.35GB（压缩比 2.1x、正文占 52%）；解码 11MB 文本 0.7s → 全量扫描约 1 分钟 CPU。**技术结论**：FTS5/BM25 词法为主干 + 可选本地小嵌入做混合（RRF 融合）+ **轮次级（round）分块** + 增量后台索引；LongMemEval-S 实证 BM25-only R@5 86.2% → 混合 95.2% → 纯向量 96.6%。**容错纪律**：逐文件跳过 + 计数 + quarantine，**不得 fail-closed**（这正是本机检索被 51 个文件压死的教训）。落盘=`CROSS-SESSION-SEARCH-RESEARCH.md` + `CROSS-SESSION-SEARCH-PATH-DECISION.md`。**待拍板**：是否开工、先覆盖哪几个源。← P2-⑦
- **A5 记忆文件卫生**：空标题碎片 / 超容量拒写 / 账本被快照段落污染（群友报 3 条；**本机只复现 0 处**，须先查证再修）。
- **A6 语义框架与评估基准**：把检索/语义这条按**规范 RAG 框架**做一遍审计（视频=10 种 RAG 策略），产出"我们的策略清单 + 应加未加 + 评估基准"。← 9 号

### B 线｜记忆的结构（procedural memory 重构）★多个事项的共同前置
- **B1 晋升标准重做**：不只"次数沉淀"，**长时攻关/突破也晋升**为长期 skill 记忆。← 8 号
- **B2 skill 之间的 hand-off**："用完这个常遇到那个" → 两个紧密联系的 skill 可互相写交接。← 8 号
- **B3 技能可读性**："我都不知道是啥技能" → 晋升后要有看得懂的说明。← 5 号
- **B4 晋升开关**：项目记忆 → 全局记忆的晋升可开可关、可手动管理。← 3 号
- **结论**：**3 / 5 / 8 号全部锁在 B 线之后**（用户自己的规划也是如此："得在我重过完 procedural memory 部分以后再进行"）。B 线是第二批的地基。

### C 线｜界面与可见性（白板 / 看板 / graph）
- **C1 白板「接续」开关互锁 + 取消强制接续**：现在"接续"开了之后"强制接续"点不动、要关只能整个白板关掉；且强制接续会让主力 agent 用贵模型（成本诉求）。← 1 号，**功能 bug，可插队先修**
- **C2 graph 集成两个验收目标**：①**不启动 agent 也能单独看到项目总体进展**；②进展**同步注入 agent**，多轮压缩后仍准确掌握。← 1 号目标
- **C3 设置里 sub agent 模型/思考强度选不动**：能读出、选不动、估计也用不上。← 2 号，**功能 bug，可插队先修**
- **C4 手机端首次启动指引太大且关不掉**：远期随 UI 调整。← 6 号
- **C5 日历换开源方案**：调研公开开源日历组件替换自研。← 7 号

### D 线｜工程质量与验收
- **D1 能力可达性验收**：每条对外承诺都要有"默认配置下可达"的证明。← P1-⑤
- **D2 OpenViking 式补全返工**：`l0-index` 接线、Tier 分级、L0 补 `layer/status`。← P0-②
- **D3 群反馈闭环**：已有（@现有问题 / 日报自动销账），只需持续喂。

## 2 推荐执行顺序

**第一批（工程优先，都在"记忆正确性"，一次重启内可交付）**
1. C1 + C3（两个功能 bug，不依赖任何东西，感知强、成本低）
2. A4 会话检索解锁（等拍板 → 施工 → 全量复验 → 一次重启）
3. A1 + A2（错误记忆废弃/修改 + 注入上限/排除）← **用户最痛，且 B4 依赖它**

**第二批（检索质量）**
4. A3 + D2（分级精确检索 + OpenViking 补全）
5. A6 语义框架审计（用规范 RAG 策略清单审 A1/A3 的实现）
6. A5 记忆文件卫生（先查证 3 条，能复现的进本批，不能复现的记档）
7. D1 验收标准返工

**第三批（结构）**
8. B1–B4 procedural memory 重构（连带解锁 3 / 5 / 8 号）
9. C2 graph 集成（把进展可视化 + 注入 agent）

**最后**
10. C4 / C5 + 界面重构与美化

## 3 每条主线的完成判据（可验，不看感觉）

- A1：改一条记忆后，**向量文件不是整体覆写**（只有新增块被编码），且被 supersede 的旧记忆**不再出现在检索结果里**，审计链仍可查。
- A2：注入量可设上限；被排除的来源在后续注入中**0 次出现**。
- A3：同一问题在"目录→L0→原文"三层各能命中，且分层仲裁有明确规则（笔记>日志、被更正项过滤、provenance 可见）。
- A4：51 个文件全部可读 + 索引建立 + `[记忆检索|sessions]` 真出结果。
- A5：三条各自"能复现 → 修复 → 加回归断言"，不能复现也要留下"查过、证据在此"。
- A6：产出一张《我们的检索策略 vs 规范框架》对照表 + 缺失项清单 + 评估基准与当前得分。
- B1/B2：晋升记录里能看到"因攻关而晋升"与"skill 互链"两类真实样本。
- B4：晋升开关默认关（或按用户设定），关闭后项目记忆**不再自动写入**全局记忆。
- C2：不启动 agent 即可打开图看到最新进展；同一条进展在 agent 压缩后的上下文里能被读到。
- D1：把现有对外承诺逐条跑一遍，缺证据的补测试或改文案。

## 4 我先需要你拍板的 3 件事

1. **A4 的施工口径**：C+B（就地修复 51 个 + 索引器加跳过保险）/ 只 B / 只 A / D / E。
2. **4 号里「压缩上限 + 排除用户提示」具体指什么**——是指注入量上限（条数/字符），还是指压缩蒸馏时的取舍规则？我按"注入上限 + 可排除来源"理解并入了 A2，但需要你一句话确认。
3. **A1 的授权边界**：AI 可以**直接改**记忆文件，还是只能给出"建议修改"由你确认？（图片里你说"下个版本看看能不能让 AI 去修改记忆"——这条决定 A1 的交互设计。）

## 5 本路线图与本会话既有结论的衔接（防脱节，2026-09-14 补）

> 这份文件是**追加**在既有工作之上的，不是重来。以下既定结论全部保留、未被本表覆盖：

| 既有结论 | 出处 | 在本表中的位置 |
| --- | --- | --- |
| 会话检索"从没真正开过"（四条硬证据）+ 51 个文件四组构成 + 禁删行（seq 必须等于行序号）+ 真白名单 15 项 | `SESSION-FILE-REPAIR-PROTOCOL.md`、`ACCEPTANCE-20260914.md` 附录 | **A4 / P0-①**（等口径） |
| 跨会话 / 跨 Agent 检索：路径 C（分期版 A）+ 体量实测 + 成本模型 + LongMemEval 证据 | `CROSS-SESSION-SEARCH-RESEARCH.md`、`-PATH-DECISION.md` | **A4b / P2-⑦** |
| 三层记忆的**设计意图**（上层指引"要不要用"、逐层下探、上层出来即缩窄搜索空间）+ 现状三缺（无状态 / 无层级归属 / 无递进闸门） | 用户澄清，项目笔记 | **A3 / P0-③** 的目标形态 |
| 记忆增删 × 索引重排的机制（miv 全量哈希、worker 全量重嵌、块级 ID 已内容寻址却未用作缓存键）+ 方案（块级缓存 / supersede / 差量 / fail-open） | `MEMORY-MUTATION-AND-INDEX-DESIGN.md` | **A1 + A2 / P0-④ 及附** |
| 白板图参照物 = **`miuzel/dsh-graph`**（不是 DSH-Plan-Graph）+ 用户已定"combine 进自己白板"+ 已有 P0→P3 预研与 15 个拍板点 | `WB-GRAPH-DECISIONS-20260914.md`、4 份 `WB-GRAPH-*` | **C2 / P1-⑥** |
| 验收基线：npm 2.5.2 / REL=main=tag=55c3deb / pre `1c06c46` / 71 套件全绿 / m73 flake 已修 | `ACCEPTANCE-20260914.md` | **D1 / P1-⑤** 的起点 |
| 两个界面功能 bug 来自群反馈（接续开关互锁、sub agent 模型选不动） | QQ 群记录（用户转发） | **C1 / P0-A、C3 / P0-B** |
| 过渡投递管道 `TODO-GRAPH.html`（不投入打磨，白板上线后退役） | 用户口径 | C2 的前身，不另立条目 |
