任务完成报告

← 返回任务目录 交互 DAG 总览 README 差异分析报告

任务完成报告:DeepSeek Harness 插件级 DAG 知识库 RC2 → 0.1.7-rc.2 全量重建

留档日期:2026-09-27 | 复杂度:17/20(Deep)| 轨道:plan + build | 库:0927-dsh-plugin-dag-017rc2

一、当时情况

用户需求:把 0927-dsh-plugin-dag-017rc2 的插件分析更新到最新版 dsh,并同步更新到 GitHub 仓库;建议先做架构审查。

探索后确认的环境事实:

关键量化事实(本次任务的性质判定依据):

项值
commits 跨度6875
packages/227 → 312(+102 / −17)
共有包源码变化210 / 210 = 100%
仅版本号变化包0
.ts 源码量1248 → 2026(+62%)
装配文件base 451→528 行、web-app 445→562 行(E3 变了,历史上一直是字节级一致)

二、制定计划

架构审查(产出级,按 architecture-judgment 的「评审与设计裁决」档;规模三问命中 Q2):

用户拍板四项:① 两个库都更新;② 目标版本 dsh-v0.1.7-rc.2;③ 全量重推导 + 用好委派并行;④ 新建 v0.1.7-rc.2 分支并切换为默认分支。

(后续追加约束:子 Agent 并行上限 3。)

执行计划 P0–P7:基线冻结 → 管线自建 → 分级重采集 → 21 分片并行分析 → 数据层重建 → 页面重生成 + 门控 → 文档收口 → GitHub 同步 → 维护图融合同步。

三、执行情况

P0 基线冻结

P1 管线自建(不复活旧管线)

旧脚本依赖跨任务的 Windows 路径 D:\Opencode_Download\...\PACKAGE-MAP.json、stage-00-l2-inventory.json、stage-01-l3-r4.json 等,且其输入在 0.1.7 下全部失效。故新建自包含确定性管线(07-checkpoint/v017-*.py):

v017-inventory.py(解 bundle patch + 枚举 321 包)→ v017-facts.py(逐包扫 src 提 E1 import 含行号 / E2 inject·ctx·事件 / 插件导出特征)→ v017-classify.py(分类 + 分组)→ v017-make-shards.py(21 片)。

过程中修掉两个自身 bug(均为「静默污染」型):

  1. id 规范化多剥一层 dsh- 前缀 → 全部 E1 边指向错误 id。复核时发现并修正。
  2. type_only 判定把「类型导入 + 运行时 ctx 调用」误判为纯类型 → 56 条运行时边被排除出分层,图层被压平成 6 层。改为「机制含 E2/E3 一律不算纯类型」后恢复为 19 层。

P2 21 分片并行分析(子 Agent 上限 3)

P3 数据层重建

P4 页面重生成 + 门控

P4b headless 验证暴露并修复 3 个既有缺陷

  1. 交互图 URL 路由缺失:三张下钻截图字节数完全相同 → 发现 ?drill= 从未生效;而旧脚本的断言 zcount>0 在无路由时也成立 ⇒ 历史上一直是假绿。已补齐 ?drill=/#Gxx 深链并把断言改为「下钻视图 ≠ 组级视图」。
  2. 图例统计取错数据源:图例从 L1-only 的 core-dag.json 取数,显示「90 个 / 32 组」,而实际 DATA 是 239 / 50。已改为从 webapp-dag.json 取数并动态列组名。
  3. 门控判据对象不匹配:原用全边做环检测,与「type-only 不参与拓扑」的分层策略冲突(TS 类型环合法)。已改为运行时边必须无环 + 类型环仅 WARN。

P5 文档收口

README 全量重写、index.html 统计与说明更新、RC2-0.1.7-DIFF-REPORT.md 新建、05-source/.../README.md 新建(解压与复现)。

四、完成情况

检查项结果证据
官方源码下载 + SHA256✅761df167eaccc337bcee864579fd578ecb0f3cb5dbc7b1d36761508faaec455a
管线 8 个脚本✅07-checkpoint/v017-*.py,可重放
21 分片分析回盘复验✅239/239 条目,0 错误
DAG 数据✅239 节点 / 1077 边 + 536 seam 边 / 19 层 / 50 组 / 73 seam
分层不变量✅运行时边 0 违例
页面全量重生成✅312 插件页 + 50 组页 + 8 特殊模块页 + MD 镜像
quality-gate-l3.py✅ ALL PASS0 error / 1 warning(类型环,仅上报)
headless DOM(非空断言)✅组级 51;下钻 G01 → 10 且 zmode 切换
视觉确认✅图例 239/73/50、面包屑、seam 虚线边正常
差异报告 / README / 报告✅RC2-0.1.7-DIFF-REPORT.md / README.md / 本报告
GitHub 同步✅新分支 v0.1.7-rc.2 + 切默认分支
留档迁移✅整仓 0822-… → 0927-dsh-plugin-dag-017rc2(31338 文件 / 456MB 全量核对一致,git 与远端不变)
部署升级(追加决策)✅本机 dsh 0.1.5-rc.2 → 0.1.7-rc.2(build exit 0 / --version 0.1.7-rc.2 / systemd 3080 首页 HTTP 200);插件继续不挂
维护图(dsh-architecture-map)同步✅官方层 + 自定义层 + 第 4/5 期 changelog(见该库 UPDATE-LOG)

最终数据:239 节点(L1 90 / L2 82 / L3 67)/ 1077 节点间边 + 536 seam 边 / 19 层 / 50 组 / 73 seam / 8 特殊模块 / 312 插件页。

五、反思/分析/建议

  1. 「增量升级」的地基是「多数包没变」,这个前提必须每轮重测。本轮 210/210 全变 ⇒ 省力优化直接失效。判据应由实测推导,不能由历史轮次外推——这正是本轮先做架构审查、用逐包哈希先量化再决策的价值。
  2. 旧管线的「可复用」是假象:脚本能跑 ≠ 输入有效。跨任务绝对路径(D:\...)与旧中间产物(stage-00/01-*)让旧管线在换版本后静默失效。自建管线时把路径本地化 + 输入自产作为硬约束,是这次能一次跑通的原因。
  3. 子 Agent 自述必须回盘复验,但复验要给对判据:本次两次实质缺陷(id 前缀、type-only 误判)都是主流程自己的脚本 bug,子 Agent 无从发现;而「分片条目数 / 证据格式」这类契约项,子 Agent 自检与回盘结果完全一致。⇒ 复验的重点应放在主流程的组装与判据上,而非重复核对子 Agent 已自检的项。
  4. 门控「全绿」必须逐条追问判据对象:旧的 headless 下钻断言在无路由时恒真(假绿),旧的图例统计取错数据源。二者都是门控存在但不检查该检查的东西。已改为非空断言 + 正确数据源,并新增两项一致性检查。
  5. 公开库的仓库卫生要有明确取舍:解压树入库让仓库 5 周内膨胀到 200MB+,收益(可离线 diff)远低于 tarball + SHA256(同样可复现)。已在 .gitignore 与 05-source/README.md 固化该约定。
  6. 遗留建议:① 把 07-checkpoint/v017-* 的「分片 → 委派 → 合并」流程固化为可续跑 SOP(当前 21 片委派是人工编排);② 交互图可对 type_only 边加虚线样式,供人工区分运行/类型依赖;③ headless-verify 可加「点击组节点」的真实交互路径(当前走 URL 深链)。
  7. 下一步(可选):把本机 dsh 部署从 0.1.5-rc.2 升到 0.1.7-rc.2,并按 dsh-architecture-map 的融合单流程重跑自定义层(~/.dsh 8 插件)兼容性审计——本次未涉及部署升级。

六、追加决策:留档迁移 + 本机部署升级

6.1 留档目录迁移(用户决策)

6.2 本机 dsh 部署升级(用户决策:升到 0.1.7-rc.2,插件继续不挂)

七、增补:主页排版 · 索引设计 · 主 DAG 默认布局改版(2026-09-27)

本轮为页面层改版(不动 DAG 数据层,239 节点 / 1077 边不变),范围锁定三个页面:根主页 index.html、组索引 03-groups/index.html、主交互图 04-interactive/index.html。流程 = 需求对齐(3 轮 question)→ 只读原型 09-prototype/ 评审 → 并行执行 → 双门控 + headless 复验 → 收口。

7.1 当时情况

用户原始诉求:「主页排版、索引设计和主 DAG 图各节点默认位置有问题,先对齐需求。」

三个页面的改造前实测问题:

页面改造前实测问题
根主页 index.html统计条用 inline-block 排布,「312 HTML 插件页」被挤成孤行;存在死卡(无点击目标);入口缺失(关键页无直达入口)
组索引 03-groups/index.html50 组 chip 墙无层级、整页高达 5444px;seam 列表整块渲染成 cordis ·(根因:01-dag-data/external-seams.json 73/73 条 description 为空)单列撑到 2371px
主交互图 04-interactive/index.htmldagre LR 布局使 51(50 组 + EXT)节点包围盒达 3416×5608;自动 fit 后 zoom 0.154 不可读;#graph{right:0} 被 300px 侧栏遮挡

(改造前取证:index.html 统计卡为 .stat{display:inline-block;margin:4px};04-interactive/index.html 为 cy.layout({name:'dagre',rankDir:'LR'…}) + #graph{position:fixed;left:0;right:0} 与 #side{width:300px;right:0};external-seams.json 经脚本复核 count=73、empty_desc=73。)

7.2 制定计划

需求对齐(3 轮 question 的决策点):

  1. 索引设计范围 —— 裁定三者都算(主页 + 组索引 + 主图),作为同一套入口体系一并改,避免各改各的。
  2. 主页定位 —— 重排为仪表盘:统计卡等宽自适应、零孤行、全部可点、关键页显式入口。
  3. 主图目标 —— 一屏可读 + 按区排布 + 保留按组高亮(不牺牲既有交互能力)。
  4. 落地方式 —— 改脚本 + 补生成器,产物一律由生成器派生、不手改(主页此前为手工维护,本轮补出唯一生成器)。

关键「数据实测否决」过程(两版分区方案被实测否决):

候选分区方案实测数据结论
按「域」分区组与 packages/<域> 为 1:1无效(分区即分组本身,无信息增益)
按「拓扑层」分区组级图 35/51 节点成环、且组跨层(如 G06 跨 L0–L18)无良定义(有环图不存在良定义拓扑分层)
装配来源 L1/L2/L3 三区 + 9 功能簇二级 + 确定性 preset 网格一级 = L1/L2/L3(EXT 独立列);二级 = F1–F9 固定功能簇;坐标全部 Python 侧算好、渲染零随机采纳

流程约束:先出只读原型 demo(落 09-prototype/,不碰任何生产页)供评审,通过后才全量改生产页与生成器。

7.3 执行情况

并行子 Agent 分工与集成收口:

事故与回滚(02:43):

假绿返工(下钻视图第一轮判据):

7.4 完成情况

交付物明细:

序号文件角色
107-checkpoint/gen-root-index.py主页仪表盘唯一生成器(新建;此前手工维护)
207-checkpoint/gen-overview.py04-interactive/index.html 权威生成器(新排布)
307-checkpoint/gen-html-l3.py插件页 / 组页 / 组索引 / 特殊模块生成器
407-checkpoint/inject-data-l3.py交互图 DATA 幂等注入器
507-checkpoint/headless-verify-l3.py下钻几何强判据 headless 门控
607-checkpoint/quality-gate-readable.py可读性 / 可点性门控
707-checkpoint/gen-report-html.py本报告 report.md → report.html 派生器
807-checkpoint/_demo/*.py3 个只读原型 demo 生成器(随原型目录统一升为 09-prototype/)

实测数字对比表(阈值 — 改造前 — 改造后):

项阈值 / 目标改造前改造后
主图包围盒一屏可读3416×56081373×853
主图 fit zoom≥ 0.900.1540.92
主图内容填充率≥ 0.80自动 fit 不可控0.93(0.9258)
主页统计条零孤行「312 HTML 插件页」孤行6 卡等宽零孤行
主页三断点行计数无孤行未控1280 / 800 / 520 → 6 / 3+3 / 2+2+2
组索引页高压缩5444px3169px
组卡可点性整块可点存在死区50 组整块可点(面积占比 1.0)
seam 卡网格无硬断词cordis · 单列 2371px73 卡 4 列网格,硬断词 0
下钻(50 组 + EXT)全量强判据含标签重叠重叠 0 / 出界 0 / zoom ≥ 0.9
下钻边默认强调不糊屏opacity 0.95opacity 0.12
hover 差异化与数据源一致无橙 22 / 绿 3 / 双向 3 / 暗 22,并集 28 == 数据源独立算出的期望邻域
确定性同输入同字节—管线两次 md5 一致
门控ALL PASS—双门控 ALL PASS

文件清单(本轮新增 / 修改):index.html、03-groups/index.html、04-interactive/index.html、07-checkpoint/gen-root-index.py、07-checkpoint/gen-overview.py、07-checkpoint/gen-html-l3.py、07-checkpoint/inject-data-l3.py、07-checkpoint/headless-verify-l3.py、07-checkpoint/quality-gate-readable.py、07-checkpoint/_demo/(3 个 demo 生成器)、README.md。

7.5 反思/分析/建议

  1. 无 argparse 的生产脚本不可试探执行。gen-html-l3.py --help 因无 argparse 被忽略而全量执行,冲掉 239 页注入层。建议:生成器一律默认 dry-run + 显式 --write 才写盘,并把写盘范围收窄到最小目录。
  2. 事后注入层是「重跑即静默丢失」点。生成器重跑会覆盖注入内容且不报错。建议:重跑生成器必须补跑注入器(gen → inject 成对),并为注入层设专用覆盖判据(缺 dyn-dag 即 FAIL)。
  3. 判据断言范围窄于被检对象的完整渲染形态 ⇒ 假绿。includeLabels:false 只测节点框、放过标签碰撞。对称失效:哑火门控(判据对象已被删除 → 恒 FAIL),quality-gate-readable.py 在干净基线上就 FAIL 属此类。建议:判据落地前先实测对象存在性 + 内置负向自测(负例必须 FAIL、正例必须 PASS)。
  4. 有环图无良定义拓扑分层,确定性几何反推比自动 fit 更可靠;并行产出的依赖方须由主 Agent 收口。组级图 35/51 成环 ⇒ 自动分层与自动 fit 都不可控,改「Python 侧算坐标 + preset」后一屏可读(zoom 0.92);主页依赖组索引锚点属并行竞态,由主 Agent 在全部任务结束后重跑依赖方收敛。建议:几何布局走确定性算路 + 断言,跨任务依赖统一在末尾收口。