# 方向核对清单 · WB-GRAPH 白板线（2026-09-16）

> **用途**：任务二材料。本文件是**给 GPT 及协作方核对"答题方向"**的清单——不是让 GPT 重新找 bug（那部分见 `GPT-REVIEW-PROMPT.md`），而是**确认修复方向是否正确、优先级是否合理、有没有更该做的事**。
> **前置**：任务一全量粗检已完成，结论见 `AUDIT-WB-GRAPH-FULL-20260916.md`。
> **当前状态**：**尚未动手修**。以下每一项都需要"确认/否决/改方向"三类裁决之一。

---

## 一、给 GPT 的三句话背景

1. 这个插件（`dsh-auto-memory`）已在 npm 有真实用户（年下载约 10,900），**legacy 档必须字节级不变**是硬约束——任何修复都不能让老用户行为漂移。
2. 白板线（WB-GRAPH）是"新功能 + 一键开关回退"，开关默认 `legacy`。用户拍板过"一口气全做完，但线先别急着接"。
3. 15 日下午→16 日凌晨这一批改动**不够严谨**：新代码全在闸门后、回归跑不到，于是 **PASS 95/0/0 完全掩盖了 4 条致命缺陷**。这次核对的核心问题是：**修复方向对不对**。

---

## 二、需要裁决的方向性问题（共 6 条）

### Q1 ★ 注册闸门的修法：三选一

**问题**：`lib/index.js:7633` 是 `export function apply(ctx, config)`（**非 async**），而工具数组在 `apply()` 内**同步**构建（`:8506`），此刻 `engine.config` 仍是 `DEFAULT_CONFIG`（`boardMode:'legacy'`）⇒ 注册闸门**恒假**。

| 方案 | 做法 | 优点 | 风险 |
| --- | --- | --- | --- |
| A1-a | 工具无条件注册，闸门降到 **execute 内** | 改动最小 | legacy 档工具数变 16 ⇒ **违反"legacy 字节级不变"**，模型能看到不可用工具 |
| **A1-b（推荐）** | 新增**同步**读取器 `loadConfigSync()`（`readFileSync`+同合并逻辑），在 tools 构建前调用一次 | 保持 async 语义不动；启动期拿到真配置；闸门仍在注册层 ⇒ legacy 工具数仍 14 | 需保证 `loadConfigSync` 与 `loadConfig` **共用合并逻辑**，否则双源漂移 |
| A1-c | `apply` 改 `export async function apply` | 最"正统" | **需先确认 cordis 是否 await 插件 apply 的返回值**——未证实，风险最高 |

**请裁决**：A1-b 是否可行？有无第四条路（如 cordis 的 `inject`/配置注入机制本该提供启动期配置）？

> 附：本项目此前已把「工具注册须先 `await loadConfig()`」写进项目约定——**该约定本身表述有误**（apply 非 async），本次须一并更正为「启动期需要真配置时必须用同步读取器」。

### Q2 ★ 修复顺序：先改代码还是先补测试？

**问题**：4 条致命里，**BUG-10（id 不一致）**和 **BUG-1（注册闸门）**都能被一条新测试稳定抓住。当前 20 个套件里没有一个测过 "graph 档端到端"。

**两种顺序**：
- **(a) 先补 graph 档端到端套件（红）→ 再修**（TDD 式，修复可信度高，但先要造出能过 `apply()` 的测试夹具）
- **(b) 先修 → 再补套件**（快，但容易重蹈"改完不知道有没有真修好"）

**请裁决**：推荐 (a) 还是 (b)？若 (a)，`apply()` 的测试夹具成本是否可控（现有 20 个套件已能调 `apply(`，说明夹具模式已存在）？

### Q3 ★ 规划里 5 项"未做"（P2-3/P2-4/P2-5/P3-2/P3-3）是否本批一律补齐？

**背景**：这 5 项在 `WB-GRAPH-INTEGRATION-PLAN.md §5` 里**明确列了**，但 16 日凌晨没做。其中：
- **P3-3（三处工具数硬锁 14→16）被规划标为"必须项"**——不补则 graph 档测试必红。
- **P2-5（GUI 放行 `.json`）** 影响用户能否在面板里看到 `index.json`。
- **P2-3/P2-4** 是检索端与注入端的增强，**不做也不影响"能用"**，只是没兑现规划承诺。
- **P3-2** 只是一句 guide 文案。

**请裁决**：是"全补齐（严格按规划）"，还是"先补齐 ①必须项（P3-3）+ ②让功能真正可用的（P2-5），其余（P2-3/P2-4/P3-2）另开批次"？

### Q4 ★ 用户的核心诉求"实时可视化看板"（dsh-graph 接线）该不该在本批做？

**背景**：`vendor/dsh-graph/` 已搬入（MIT，含 NOTICE-VENDOR.md），但**cordis 接线未做**——因为要改**用户 profile 配置**（`~/.dsh/profiles/web/`），属高风险动作，需要先备份 + 用户明确同意。

**关键事实**：**即使前面 9 条全修完，只要 dsh-graph 不接线，用户依然"看不到看板"**——他最初的抱怨就没有真正解决。

**请裁决**：是
- (a) 本批就把 profile 接线做了（先备份，用户同意后执行），还是
- (b) 先把 memory_* 侧修干净、接线另立一步（用户可先验证 sidecar/遍历工具是否好用）？

### Q5 ★ "白板锚点未写入 Markdown"算不算规划未兑现？

**背景**：`WB-FORMAT-CONVENTION §2` 承诺的收益是"**白板内容凭锚点自动进入检索语料**（L0 抽取按锚点切条），无需任何新机制"。实测：`wbEntryIdPre` 只把 `mem_<32hex>` 写进 **sidecar 的 id 字段**，**从未写入 `PLAN.md`/账本的 Markdown 正文**（`WB-FORMAT-CONVENTION §2` 要求标题行下方紧跟 `<!-- memory:mem_... -->`）。

⇒ **该收益目前为零**：白板内容不会因锚点进检索。

**请裁决**：这是"实现 bug（应补写锚点到 Markdown）"还是"可以延期（先让 sidecar 跑通）"？若补写，会改动用户可见的 Markdown 内容，需确认是否可接受。

### Q6 ★ 交付报告的高报要不要更正留痕？

**背景**：`REPORT-WB-GRAPH-NIGHTLY.md` 把 `events.jsonl`、遍历工具返回正文、dsh-graph 接线、工具数硬锁都标 ✅，实际均未完成。

**请裁决**：是
- (a) 直接改写该报告为"如实版"（丢失原始误报的痕迹），还是
- (b) **保留原报告不动 + 追加一份勘误节**（"原始报告哪些项高报、实测如何"）——**倾向 (b)**，因为能保留"为什么会误报"的教训？

---

## 三、我方的初步判断（供对方否决）

| 项 | 我的判断 | 置信度 |
| --- | --- | --- |
| Q1 修法 | **A1-b** | 中（未验证 cordis 是否提供启动期配置，故需 GPT 确认 A1-c 是否更正统） |
| Q2 顺序 | **(a) 先补 graph 端到端套件** | 高（否则无法证明修好了） |
| Q3 范围 | **补 P3-3 + P2-5 必修项；P2-3/P2-4/P3-2 看本批余量** | 中 |
| Q4 接线 | **(b) 另立一步**——但必须让用户明确知道"不接线 = 看不到看板" | 高（改 profile 风险高，且用户硬规矩要求先备份+同意） |
| Q5 锚点 | **算未兑现，建议补**（否则 §2 收益条款是空头承诺） | 中高 |
| Q6 报告 | **(b) 追加勘误节** | 高 |

---

## 四、我方**不做**的事（边界声明）

- 不改用户 profile（Q4 未裁决前）。
- 不 commit/push/publish（代码全留 pre 线）。
- 不重启 dsh web 宿主（用户自行重启）。
- 不为了"让测试变绿"而放宽断言——尤其不能把三处工具数硬锁从 `!== 14` 直接改成"随便多少"。

---

## 五、对方回复的期望格式

请逐条回：

```
Q1: 采纳 <A1-a|A1-b|A1-c|其他:____>，理由 <一句话>
Q2: <a|b>，理由 <一句话>
Q3: 本批范围 = <列出项号>，其余延后
Q4: <a|b>，理由 <一句话>
Q5: <补写锚点|延期>，理由 <一句话>
Q6: <a|b>
补充意见: <如果有我漏掉的方向性问题>
```

---

## 六、附：材料索引

| 文件 | 内容 |
| --- | --- |
| `docs/internal/AUDIT-WB-GRAPH-FULL-20260916.md` | 任务一全量粗检报告（4 致命 + 5 新缺陷 + 规划三态对账 + 修复方案 + 证据清单） |
| `docs/internal/REVIEW-WB-GRAPH-SELF.md` | 16 日凌晨自审（3 致命 + 6 高/中危，**其中 BUG-4 已被本次推翻**） |
| `docs/internal/GPT-REVIEW-PROMPT.md` | 找 bug 的任务书（与本文互补：那份找 bug，这份定方向） |
| `docs/internal/WB-GRAPH-INTEGRATION-PLAN.md` §5 | 改动清单原表（P0-P1/P2/P3 全部条目） |
| `docs/internal/WB-FORMAT-CONVENTION.md` | §2 锚点契约 / §3 索引派生 / §4 写入门 / §8 验收清单 |
| `docs/internal/WB-GRAPH-DECISIONS-20260914.md` §E | 16 日凌晨拍板留痕（A1-A8/B4/B7/P1 范围） |
| `docs/internal/REPORT-WB-GRAPH-NIGHTLY.md` | 交付报告（**含高报项，Q6 待裁决**） |
| `artifacts/_audit-p23-probe.mjs` | 可复跑：BUG-4 推翻 / tag 正则 / 返回契约 / boardMode 解析 |
| `artifacts/_audit-id-repro.mjs` | 可复跑：BUG-10 两条路径 id 对撞 |
| `artifacts/_audit-apply-await.mjs` | 可复跑：apply 函数体花括号配对 + await 深度分布 |
