# ADR-0011:0.7.0 不做 Harness 内只读 UI 面板(P2-08 决策门:不通过) - 状态:Accepted(P2-08 决策门结论:0.7.0 不做,0.8/1.0 按标准重评) - 日期:2026-11-03 - 编号说明:编号承接规划期 ADR-0001–0010(不在本仓库),本仓库内自 0011 起。 - 相关:REFACTOR-PLAN v1.1 §4 Phase 2 P2-08;AUDIT-2026-11;`docs/MARKET.md` ## 背景 P2-08 原计划做一个 **Harness 内只读 UI 面板 spike**(复用渲染数据):列出项目/模块、展示状态与漂移。评估时需回答 "面板相对现有交付形态是否提供不可替代的价值"。 现有已交付能力: - **单文件交互架构图**(`normify_render` → `normify.html`):逐层下钻、悬停介绍、中英切换、深链接、API 直连箭头、 跨层聚合、缩放;零外部依赖,可归档/发人/离线打开。 - **跨 agent CLI**:`normify`(init/validate/build/verify/render/diff/change…),JSON 输出 + 稳定退出码,CI 可门禁。 - **插件工具面**:0.7 起默认 7 原语(op 枚举),agent 在会话内即可读写/校验/编译,不依赖额外 UI。 做一个 Harness 内面板需要新增:client 插件构建链与 HMR、slot/生命周期契约、宿主 UI 安全面(把用户结构数据渲染进 宿主)、Windows/Linux/macOS 的 UI 测试矩阵、随 DSH client 契约变化的兼容维护。相对收益主要是"不用打开 HTML 文件"。 ## 决定 - **0.7.0 不做 Harness 内 UI 面板**,也不引入 client 插件包/新运行时依赖。 - 保持三入口:**插件工具面(agent 内)+ CLI(终端/CI/其他 agent)+ 单文件 HTML(人读)**。 - 0.7.0 把资源投入默认工具面切换、评测(n≥3)、市场分发与文档,而不是 UI。 - 本 ADR 即 P2-08 的决策门产出;不创建 UI 面板 spike 分支。 ## 理由 | 维度 | 结论 | | --- | --- | | 覆盖度 | 人读场景已由 `normify.html` 覆盖(下钻/双语/深链/API 直连),且可离线归档;面板未提供新的信息架构 | | 成本 | 新增 client 构建链 + HMR + 平台矩阵 + 宿主契约跟踪,维护面约等于一个额外插件 | | 风险 | 宿主 UI 安全面(渲染用户数据)、DSH client 契约漂移、打包体积/性能回归;收益与风险不匹配 | | 需求证据 | 审计与社区反馈中**没有**"必须在 Harness 内看面板"的强诉求;0.7.0 剩余工作清单也未包含 UI | | 替代方案 | CLI + HTML 已可组合出"列表/详情/漂移"(`normify ls/get/search/check/drift` + `render`) | ## 重评标准(0.8/1.0) 出现以下**任一触发条件**才重评;重评前不做原型: 1. 一个月内 ≥3 个不同用户明确要求 Harness 内查看,且其场景无法用 CLI/HTML 满足(需附案例)。 2. DSH client 插件契约连续 ≥2 个 minor 稳定,且官方文档/示例覆盖 slot、生命周期、打包与安全。 3. 有数据证明"打开 HTML/走 CLI"是主要使用摩擦(例如交付路径被频繁跳过)。 若触发,spike 范围与验收(先 spike,不直接进主线): - 范围:**只读**——`listProjects` / `getProject` / `status` / `drift`;数据来源复用 `structure-manifest.json` / `tree.json`;不写项目、不发网络请求、可灰度禁用。 - 架构:作为**独立可选包**,不进入 dsh-normify 主包依赖;无 inspector 的 profile 不受影响。 - 验收:首屏 < 1s(本地结构数据);包体积增量 ≤ 主包 10%;Windows + Linux CI 通过;失败可降级到 CLI; 安全审查(只读断言/无网络/路径包含性)通过;在真实 DSH 0.2.x 上 pack-smoke 通过。 - 不达标 → 继续不做,并更新本 ADR 的结论与证据。 ## 后果 - 0.7.0 不增加 UI 维护面,安装体积与兼容风险保持最小。 - 市场材料以"单文件交互图 + 跨 agent CLI"为卖点;文档明确"0.7.0 无 Harness 内面板"(避免用户预期错位)。 - 若未来接入,按独立 ADR/包处理,不在本仓库主包内堆代码。