dwguard-dsh-hmos
HarmonyOS delivery orchestration for DSH: freezes a four-dimension acceptance pack whose measurable criteria carry machine-checkable assertions, runs an adversarial pre-review before dispatch, hands the work to DevEco Code in Goal mode, then audits the delivery with independently gathered evidence (
Install
dsh plugin --profile web add dwguard-dsh-hmos
Sandbox test results
| Stage | Result |
|---|---|
| 1 install | ✓ |
| 2 list | ✓ |
| 3 mount | ✓ |
| 4 boot | — |
Four stages run in an isolated sandbox: install (network on) → list → mount → boot (last three with no network).
README
DwGuard-Dsh-Hmos



DSH 侧的鸿蒙双 Agent 编排与外部审计插件。 它把「DSH 编排 + DevEco Code 执行」的协作方式,从一份提示词文档变成一组有闸门的工程动作:任务包冻结、派发前对抗预审、Goal 模式派发、四维外部审计、返工单、验收报告、知识沉淀。
0.6.2–0.7.0 在此之上加入设计参考与范式包闭环:dwguard_design 先 recommend 最多 3 套方向,brief 注入品牌/原则/模式;实现经四维审计 + 用户确认后 capture-pack 冻结范式包,registry/supersedes/feedback/benchmark 让下一轮推荐持续变好。
核心主张只有一句:交付物必须自己证明自己,DSH 不采信执行者的自述结论。
English: [README.en.md](README.en.md) · 变更记录:[CHANGELOG.md](CHANGELOG.md)
为什么需要它
让一个 Agent 自己写、自己测、自己说"完成了",等于没有验收。这个插件把 DSH 的职责钉死在三件事上:
1. 先把"做完"定义清楚:功能 / 审美 / 性能 / 无障碍四维判据,每条都必须可证伪、有独立验证方式。写不出来就不许派发。
2. 派发前先自我攻击:从性能、生命周期、并发、API 兼容四个视角质询任务包,阻断项必须经历一次反驳尝试。
3. 交付后自己取证:截图、布局树、日志、测量值,一条判据一段证据。四维没覆盖、must 判据没证据,闸门就不开。
架构
flowchart TD
U["用户需求 / 品牌色 / 模块"] --> DR["dwguard_design<br/>recommend:最多 3 套候选"]
DR --> CH["用户选方向<br/>可要求新方向"]
CH --> S["dwguard_spec<br/>冻结任务包(四维判据)"]
S --> P["dwguard_prereview<br/>对抗预审(四视角 + 反驳)"]
P -- 阻断项未清 --> S
P -- 通过 --> D["dwguard_dispatch<br/>生成 Goal 简报"]
S --> B["design-brief<br/>品牌 / 原则 / 模式"]
D --> E["DevEco 执行闭环<br/>理解任务包 → 编码 → 构建 → 推设备 → 自验"]
B --> E
E --> C{"自评 / 澄清<br/>双方无异议?"}
C -- "实现层分歧" --> E
C -- "任务包层分歧" --> S
C -- 无异议 --> A["dwguard_audit<br/>独立取证(截图/布局树/日志/数值)"]
SH["增量② 影子审查<br/>只读中间代码与产物"] -. 结构性风险 .-> C
A -- 未通过 --> R["tasks/rework-n.md<br/>返工单"]
R --> E
A -- 通过 --> ACC["artifacts/acceptance-report.md<br/>验收报告"]
ACC --> K["dwguard_knowledge<br/>沉淀经验"]
ACC --> CF["dwguard_confirm<br/>用户确认"]
CF --> CP["capture-pack<br/>范式包 v2:cards + registry + evidence"]
CP --> LIB[("design-library<br/>cards / packs / feedback")]
LIB -. 检索 / 排序 .-> DR
FB["pack-feedback / benchmark"] -.-> LIB
Q["dwguard_status<br/>阶段 / 未读交付 / 下一步"] -.-> S
Q -.-> A
Q -.-> CP
K --> U
主环仍是四维验收;设计参考层是旁路:recommend 给方向、brief 给规则,capture-pack 只在审计通过 + 用户确认后冻结范式包;preview 不是判据。
两个回环,不要混:
- 实现层(Spec 没问题,是实现偏差)→ 回「编码实现」,出返工单/返工项;
- 任务包层(Spec 歧义、判据不可达、架构方向错)→ 停线 → 改任务包、升版本 → 重跑预审 → 重新派发,执行者回到「理解任务包」;
- 影子审查(增量②)的结论先落到「自评 / 澄清」这个闸门:双方无异议才交付,有分歧先澄清再决定回哪一层。
与原始框架文档的四个增量一一对应:
文档中的增量 · 本插件里的落点
① 派发前架构预审 · dwguard_prereview(阻断项需 rebuttal,未关闭不得派发)
② 并行影子审查者 · 编码期只读巡检 → 风险分层:任务包层停线改包重预审(回「理解任务包」),实现层记返工项(回「编码实现」);dwguard_status 汇总
③ 外部审计(不采信自验) · dwguard_audit(逐条 checks + 独立证据 + 四维覆盖闸门;四维各派一个子代理并行取证)
④ 知识沉淀 · dwguard_knowledge(按主题归档,索引去重)
0.6.2–0.7.0 新增设计参考层(不在原始四增量内):dwguard_design 先 recommend 最多 3 套方向,选定后 brief 注入品牌/原则/模式;实现经四维审计 + 用户确认后 capture-pack 冻结范式包;registry/supersedes/pack-feedback/benchmark 让下一轮推荐优先命中。它只提供方向与对照,不替代四维判据。
安装
要求:DSH 0.2.1-rc.x(engines.dsh: >=0.2.1-rc.0 <0.3.0)。插件以 bundle 形式安装,注册一个 host 行。
npm 包:dwguard-dsh-hmos(当前 0.7.1)。
0.7.1 是文档补丁:只修正 README / 注释与发布说明,不改运行逻辑;npm 最新版以 registry 为准。
从 npm 拉取(推荐)
注意:安装插件不是npm install。npm install只会把包放进node_modules,不会注册到 DSH 的 profile;正确入口是 DSH 的插件安装器,由它从 npm 拉取并注册。
入口 · 命令 / 操作
桌面版 · 侧栏 插件 → 添加插件,包名填 dwguard-dsh-hmos(固定版本 dwguard-dsh-hmos@0.7.1)
命令行 profile · dsh plugin --profile web add dwguard-dsh-hmos@0.7.1
没有 dsh 命令 · npx @deepseek-ai/dsh@0.2.1-rc.5 plugin --profile web add dwguard-dsh-hmos@0.7.1
安装器会从 npm registry 解析版本;想跟最新版就省略版本号。下文分别说明桌面版与 CLI profile 的细节。
先确认你跑的是哪种入口——desktop profile 由桌面应用独占管理,命令行改不了它(dsh plugin --profile desktop … 会被明确拒绝),所以两种入口的安装方式不同:
启动方式 · profile · 安装入口
桌面应用(DeepSeek Harness.exe,默认场景) · desktop · 侧栏 插件 → 添加插件(应用内)
命令行 dsh web / dsh tui / dsh headless · web / tui / … · dsh plugin --profile <name> add …
桌面版:应用内安装
1. 左侧栏打开 插件 → 右上 添加插件;
2. 包名填 dwguard-dsh-hmos(固定版本就填 dwguard-dsh-hmos@0.7.1)→ 安装、选配置层、确认;
3. 装完按提示重启应用(托盘里也要退出)。
同一个对话框里的 安装第三方插件 也接受 Git 仓库地址和本地目录,所以「GitHub 直装 / 本地 checkout」在桌面版也走这里。
命令行 profile:CLI 安装
# 需要在 PATH 上有 pnpm —— dsh plugin 会把参数转发给 pnpm dsh plugin --profile web add dwguard-dsh-hmos # 固定版本 dsh plugin --profile web add dwguard-dsh-hmos@0.7.1 # 机器上没有 dsh 命令时,用 npm 上的 CLI 包 npx @deepseek-ai/dsh@0.2.1-rc.5 plugin --profile web add dwguard-dsh-hmos
也可以从 GitHub 或本地目录装(同样只适用于命令行 profile):
# 在仓库根目录执行;把 . 换成绝对路径也可以 dsh plugin --profile web add . dsh plugin --profile web add https://github.com/Dogwind221/dwguard-dsh-hmos
确认装好了
- 桌面版:插件 页出现
DwGuard-Dsh-Hmos; - 命令行:
dsh --profile web --dump-config里能看到# == dwguard-dsh-hmos。
装好后,新开的会话都会拿到 15 个工具、4 个 skill 和一段策略提示词。让 DSH「给鸿蒙做个 XX 页面」,它会自动加载 dwguard-hmos skill。已经打开的旧会话如果没热加载到新工具,新开一个会话即可(工具表在会话开始时就固定了)。
可选:独立的 Agent 预设
Bundle 已经全局注册,预设只是让新会话选择器里多一个「DwGuard 鸿蒙双代理」入口(工具集偏向编排与取证,不含实现类工具):
# 方式一:作为叠加层启动一次(命令行 profile;桌面版用方式二;在仓库根目录执行) dsh --profile web --patch "preset/dwguard-hmos.cordis.yml" # 方式二:把 preset/dwguard-hmos.cordis.yml 里 - insert: 的整段粘贴进 # %USERPROFILE%\.dsh\profiles\<desktop 或 web>\cordis.patch.yml,然后重启
预设依赖部署里有 @deepseek-ai/dsh-agent-preset(Web 版自带)。不想用就不装,工具照常可用。
卸载
- 桌面版:插件 → 已安装插件 →
DwGuard-Dsh-Hmos→ 移除; - 命令行 profile:
dsh plugin --profile web remove dwguard-dsh-hmos(tui等换成对应 profile 名)。
界面入口:DshHoms(右侧栏看板)
侧边栏新增一行 DshHoms,位置在 插件(order 0)与 自动化任务(order 10)之间(本插件 order 5)。
点它不会顶掉对话:看板以标签页形式开在 右侧栏(tab 标题 DshHoms),主区域保持当前会话。左侧再点一次会复用已打开的标签,不会重复开。
点击路径有两条,因为右侧栏的 openTab 依赖「对话占据主列」时的会话 surface:
1. 点图标:拦截侧栏行的点击(stopPropagation),直接 openTab,主区域完全不动;
2. 点行/文字:行会先选中本插件在主区域的启动器面板——启动器在
…(truncated)
Rendered from the README published on npm. Formatted only, not edited.
Versions
Published on npm::9,最后更新 2026-11-04