# RC2 → 0.1.7-rc.2 差异分析报告

> DeepSeek Harness 插件级 DAG 知识库 **全量重建**差异分析
> 分析日期：2026-09-27 ｜ 库：`0927-dsh-plugin-dag-017rc2`
> 基线：`dsh-v0.1.1-rc.2`（commit `b150a551`，2026-08-21）→ 目标：`dsh-v0.1.7-rc.2`（commit `477b4f42`，2026-09-24）
> 方法论：`version-upgrade-cascade` 三层差异分析 + **全量重推导**（增量级联假设已证伪，见 §2）

---

## 一、升级范围

| 维度 | RC2 | 0.1.7-rc.2 | 变化 |
|------|-----|-----------|------|
| GitHub 对比 | b150a551 → 477b4f42 | — | **6875 commits**（约 5 周 / 6 个 minor） |
| `packages/` 目录 | 227 包 | **312 包** | **+102 / −17**（净 +85） |
| 版本号 | 0.1.1-rc.2 | 0.1.7-rc.2 | 全包批量升级 |
| **源码实质变化（共有包）** | — | — | **210 / 210（100%）** |
| 仅 tests 变化 | — | — | **0 包** |
| 仅版本号变化 | — | — | **0 包** |
| 源码体量（`.ts` 文件） | 1248 | **2026** | **+62%** |
| bundle | base / headless / web-app | **+ acp-app / sdk-app / sdk-minimal** | +3 |
| DAG 节点 | 180 | **239** | +59 |
| 节点间依赖边 | 578 | **1077** | +499 |
| 外部 seam | 50 | **73** | +23 |
| 分组 | 39 | **50** | +11 |
| 拓扑层 | 17 | **19** | +2 |
| 特殊模块页 | 4 | **8** | +4 |

> 对比历史升级幅度：RC7→RC8 为 536 commits / 61 源码变化包；RC8→RC2 为 207 commits / 43 包。本轮 **6875 commits / 210 包**，是本库建立以来最大跨度。

---

## 二、方法论判定：增量级联不再适用

原「三层差异分析」的省力前提是 **「大部分包仅版本号变化，可跳过」**：

| 轮次 | 源码变化包 / 总包 | 版本号-only 占比 |
|---|---|---|
| RC5→RC7 | 26 / 219 | ~86% |
| RC7→RC8 | 61 / 226 | ~62% |
| RC8→RC2 | 43 / 227 | ~78% |
| **RC2→0.1.7** | **210 / 210** | **0%** |

实测（`07-checkpoint/v017-delta.py`，逐包 src/ 哈希对比）：**210 个共有包 `src/` 全部变化，无一个「仅版本号变化」包**。
⇒ 旧库 180 节点的「实现逻辑 / provides / 依赖边 / 源码行引用」**无一条可原样保留**，增量补丁会产出大面积过期内容。
⇒ 本轮改走**全量重推导**：重新采集装配分层 → 重跑 21 分片源码级分析 → 重建 DAG → 全量重生成页面。

---

## 三、结构 diff：新增 102 包 / 删除 17 包

### 删除（17）

| 包 | 说明 |
|---|---|
| `code-runtime/code-runtime`、`-python`、`-worker-thread` | 代码执行运行时整域下线（由 `ptc-runtime/*` 接替） |
| `e2b/e2b`、`fs-e2b`、`subprocess-e2b` | E2B 远程执行整域下线（由 `ssh/*` 接替） |
| `examples/acp-demo`、`agent-spine-demo`、`jsonrpc-demo` | examples 域整体移除 |
| `host/apiproxy` | 并入 `api/*-controller` 族 |
| `preset/agent-presets` | 拆分为 `agent-preset` + `agent-preset-registry` |
| `session/session-persistence-sqlite`、`settings/settings-file`、`workflow/workflow-worker-thread`、`subagent/tool-subagent-report`、`client/runtime`、`test-support/acp-snapshot` | 被重构/合并 |

### 新增（102，按域）

| 域 | 数 | 代表包 |
|---|---:|---|
| client | 22 | `ui-chat`、`ui-session`、`ui-approval`、`ui-sidebar-files`、`ui-settings-account`、`store`、`shortcuts`、`resources` |
| experimental | 18 | `browser-use-runtime`、`computer-use-cua-driver-native`、`speech-to-text-sensevoice`、`inspector`、`webworker-runtime` |
| util | 10 | `crypto`、`time`、`values`、`chunked-list`、`deque`、`http-proxy`、`lazy-require`、`package-manifest`、`workspace-path`、`code-language` |
| session | 8 | `session-log-deepseek`、`session-format`（+5 个 `v0→v1…v3→v4` 迁移包）、`session-turn-outline` |
| api | 7 | `account/job/session/settings/terminal/workspace-controller`、`workspace-files` |
| llm | 4 | `llm-deepseek-account`、`llm-deepseek-api-key`、`deepseek-llm-api-extensions`、`plugin-package-inventory-deepseek` |
| ssh | 4 | `ssh`、`fs-ssh`、`sandbox-ssh`、`subprocess-ssh` |
| bundle | 3 | `acp-app`、`sdk-app`、`sdk-minimal` |
| boot | 3 | `config-editor`、`hmr`、`plugin-manager` |
| 其余 | 23 | `browser-use`、`computer-use`、`deliverables/*2`、`document/office-to-pdf`、`ptc-runtime/*2`、`webhook/*2`、`mcp-resources`、`win32-process`、`skill-office`、`tool-workspace-dependencies`、`agent-preset(-registry)`、`product-telemetry-otel`、`open-in-app`、`compaction-image-offload`、`credential×2`、`test-support×2`、`workflow-ptc` |

### 新域（0 → 1）

`browser-use` / `computer-use` / `deliverables` / `document` / `ptc-runtime` / `ssh` / `webhook`

---

## 四、装配层（E3）变化

| bundle | RC2 insert 行 | 0.1.7 insert 行 | 变化 |
|---|---:|---:|---|
| base | ~76 | **93** | 显著增行 |
| web-app | ~58 | **85** | 客户端 UI 大规模装配 |
| headless | — | 2（+6 patch 行） | — |
| acp-app | — | 2（新增） | 新增 |
| sdk-app | — | 4（+6 patch 行，新增） | 新增 |
| sdk-minimal | — | 32（新增，**不叠 base**） | 新增 |

> RC2 时 5 个 `cordis.patch.yml` 全部**字节级一致**；本轮 **base 与 web-app 装配文件均变化**（451→528 行 / 445→562 行），装配关系本身即需重建。

---

## 五、分类结果（本轮）

| 类别 | 数量 | 判定规则 |
|---|---:|---|
| **节点** | 239 | 被任一 bundle 装配 ∧ 有 src；或含插件导出特征（`export default` / `apply` / `inject`）且非抽象基座/纯库/测试支撑 |
| **seam** | 73 | 非节点 ∧ 被节点引用 ∧（抽象基座 ∨ 纯库 ∨ 测试支撑 ∨ 未装配变体） |
| **特殊模块** | 8 | bundle 元包 + boot 胶水 → 独立成页 |
| **uncovered** | 1 | 既未装配亦未被引用（记账上报） |

**抽象基座 seam（新语义）**：`dsh-fs`、`dsh-sandbox`、`dsh-spill`、`dsh-jobs`、`dsh-shell`、`dsh-subprocess`、`dsh-attachment`、`dsh-compaction`、`dsh-credentials`、`dsh-session-persistence`、`dsh-session-query`、`dsh-lsp`、`dsh-workflow`、`dsh-browser-use`、`dsh-computer-use`、`dsh-ptc-runtime` 等 —— 本身不装配，由 `*-local` / `*-jsonl` / `*-auto` 等实现包继承注入，形成「实现包 → 抽象包」方向。

---

## 六、依赖边口径

| 口径 | 数量 |
|---|---:|
| 节点间边（`edges`） | **1077** |
| 其中 **纯 type-only**（`import type`，不参与分层） | **281**（26%） |
| 参与拓扑的运行时边 | **795** |
| 反馈边（标记 `soft`，保留展示） | **1**（`dsh-api-remotes` ↔ `dsh-client-ui-plugin-manager` 注册回环） |
| 指向 seam 的边（`seam_edges`，经 `referred_by` 表达） | **536** |

> schema 约定沿用旧库：`edges` 仅节点间边（纯 seam 边入 `edges` 会导致 `gen-html` KeyError）；本轮另在 `webapp-dag.json` 增加 `seam_edges` 顶层键保留 seam 边证据，并纳入门控一致性校验。

---

## 七、本轮修复的既有缺陷

1. **交互图无 URL 路由（RC7 遗留）**：旧 `headless-verify` 的「下钻断言」实际是**假绿**（无路由时组级视图节点数 > 0 也通过）。本轮在 `gen-overview.py` 补齐 `?drill=Gxx` / `#Gxx` 深链 + `history.replaceState` 同步，并把断言改为**下钻视图 ≠ 组级视图**。
2. **交互图图例统计取自 L1-only 的 `core-dag.json`**：导致图例显示「90 个 / 32 组」而实际 DATA 为 239 / 50。本轮改为从 `webapp-dag.json`（实际注入数据）取统计，并动态列出全部组名。
3. **门控判据对象不匹配**：原 [2] 用全边做环检测，与「type-only 不参与拓扑」的分层策略冲突（TS 类型环合法）。本轮改为**运行时边必须无环** + 类型环仅 WARN，并新增「分层方向一致性」与「`seam_edges` ↔ `referred_by` 一致性」两项检查。
4. **门控特殊模块检查硬编码 4 个**：本轮改为读取 `v017/special-modules.json` 全集（8 个）。

---

## 八、验证结果

- **静态门控** `quality-gate-l3.py`：**ALL PASS**（0 error / 1 warning）
  - JSON 84 文件合法 / 运行时边无环（795 条 → 239/239 可达）/ layers 全覆盖 + 方向一致 / HTML 断链 0（373 页）/ vendor 完整 / 插件页 239+73+8 / DATA 239+73+50 / MD 覆盖 239+73
  - 唯一 WARN：含 type-only 边时存在 57 节点类型层环（TS 合法，仅上报）
- **headless** `/snap/bin/chromium --headless=new`：
  - 组级 `zmode=组级 / zcount=51`
  - 下钻 `?drill=G01` → `zmode=G01 · ACP 协议 / zcount=10`（非空断言通过）
  - 三张截图字节数各异，目视确认中文完整、图例 239/73/50、面包屑与 seam 虚线边正常
- **源码溯源**：官方 tarball `dsh-v0.1.7-rc.2.tar.gz`，SHA256 `761df167eaccc337bcee864579fd578ecb0f3cb5dbc7b1d36761508faaec455a`，无魔改

---

## 九、已知保留项

- 各包 `0.1.0-rc.8` / `0.1.1-rc.2` 等为**版本演进历史记录**，按设计保留。
- 交互图中 `type_only` 边与运行时边同色显示（未做虚线区分）；消费者可按 `edges[].type_only` 过滤。
- `05-source/dsh-v0.1.7-rc.2/` 解压树（155MB）不入库，仅 tarball + SHA256 入库，解压命令见该目录 `README.md`。
