@local/dsh-harnessmm
把 HarnessMM(Recursive Self-Improvement for Harness Token Efficiency)的 EDG / GDR / CCS 机制实现为 DeepSeek Harness 的原生插件,并提供会话视图(session view)只读观测面板 (会话视图顶部页签 + 右侧栏两个入口)。GitHub:https://github.com/baipengyan/dsh-harnessmm。
- 宿主侧(
index.js):在 DSH 的模型/工具边界上工作——向系统提示注入可执行决策图(EDG)作者指令, 包装慢模型(slow model)的llm/stream流式输出,并在工具派发前用最近一次回执做守卫复用(GDR)。 满足条件时通过原生工具接口执行认证回调替换(CCS),并给 bash/pwsh 前台结果追加签名回执; 注册只读工具harnessmm_status。 - 客户端侧(
client.js):注册「决策复用」面板的两个入口(会话视图顶部页签与右侧栏页签), 读取宿主注册的harnessmm会话投影,把会话日志中可推导的决策图、守卫判定、替换记录与实测 token 展示出来(只读,不做客户端→宿主 RPC)。 - 零运行时依赖:宿主产物是 Node ESM,客户端产物是浏览器侧 CJS 包装(由 DSH 的 ModuleLoader
加载,React 由宿主提供);二者都不依赖 zod 或
@deepseek-ai/*包——宿主侧自带的 parse 兼容层 替代 zod。上游 Apache-2.0 的sar_v2.mjs/cot_jev.mjs原样 vendored 在src/host/vendor/。
安装(从 GitHub,一键)
公开仓库:https://github.com/baipengyan/dsh-harnessmm

DSH 的插件页支持直接从 Git 地址安装:插件管理器用 pnpm 装包,并把声明了 dsh.bundle 的包追加进
dsh.profile.bundles;profile 重组时 HMR 会挂载它,无需重启 App。
- 打开 DSH Web GUI → 左侧 插件 页;
- 点 添加插件,粘贴仓库地址
https://github.com/baipengyan/dsh-harnessmm; - 点安装,完成后再刷新页面(或等客户端 HMR 推送)。
装好后应能看到:会话视图顶部切页行出现 决策复用(紧跟「轨迹」)、右侧栏出现 决策复用 页签、
系统提示包含 EDG 作者指令、工具列表出现 harnessmm_status,并且可认证的 bash/pwsh 前台结果尾部会多出一行签名回执。
也可以先用 CLI 装包,再在插件页打开 bundle 开关(dsh plugin 只转发包管理器,不写 bundles 列表):
dsh plugin --profile desktop add https://github.com/baipengyan/dsh-harnessmm
# 然后打开 DSH Web → 插件 → 已安装 → HarnessMM 决策复用,把开关切到启用
要求:Node ≥ 22.19、DSH 0.2.1-rc.*(engines.dsh = ">=0.2.1-rc.2 <0.2.2")。仓库已提交构建产物
index.js / client.js,从 Git 安装时无需本地构建。这条 git 安装路径已在临时目录用
pnpm add https://github.com/baipengyan/dsh-harnessmm 实测通过(15.3s,装出 0.2.1,含
index.js / client.js / cordis.patch.yml / locale/ 等运行时文件,详见 docs/verification.md)。
卸载:在插件页把该插件的开关切到停用(这会把它从 dsh.profile.bundles 中移除),或手动删掉
dsh.profile.bundles 里的 @local/dsh-harnessmm(依赖可保留)。
本地开发安装
改源码开发时用 link 方式挂载(幂等,会备份 profile 的 package.json):
cd harnessmm
pnpm install
node scripts/build.mjs
node scripts/install.mjs # 安装 / 修复(link + bundles 条目 + 符号链接)
node scripts/install.mjs --dry-run # 只看将改哪些行
node scripts/install.mjs --uninstall
scripts/install.mjs 会做三件事:
- 在
~/.dsh/profiles/desktop/package.json中登记"@local/dsh-harnessmm": "link:<本目录>"; - 把
@local/dsh-harnessmm追加进dsh.profile.bundles; - 在 profile 的
node_modules/@local/dsh-harnessmm建立指向本目录的符号链接。
DSH 的 HMR 会在 profile 重组时挂载新 bundle,不需要重启 App;刷新 GUI 页面即可看到效果。
如需停用引擎,可在 profile 的 cordis.patch.yml 里为 harnessmm 加一条覆盖项并把
config.enabled 设为 false,或设置环境变量 DSH_HARNESSMM_ENABLED=0。
使用
顶部会话视图页签「决策复用」
会话视图顶部与内置「对话」「轨迹」并列出现「决策复用」页签(slot conversation.view,order 20,
紧跟 Trajectory)。点击后面板占满主视图:头部固定、正文内部滚动、不被输入框覆盖。

右侧栏「决策复用」
打开会话右侧栏 → 「决策复用」(guide 顺序 42)。两个入口渲染同一个面板、读取同一份投影数据。
面板包含:
| 区块 | 内容 |
|---|---|
| 头部 | 启用状态(宿主启用 / 宿主关闭)、当前阶段(idle/slow/fast,启发式)、provider/model/effort 路由、策略 chips |
| Token | 读取 sibling 投影 tokenUsage / contextPressure 的实测输入/输出/缓存 token 与上下文压力 |
| 统计 | turns / toolCalls / slowCalls / substitutions / certificates / guardsPassed / guardsFailed / banks / nodes / planErrors |
| 决策图 | 分层的 EDG:节点 label、tool、参数预览、guard、successors;节点状态目前只会出现 stored(已存储)与 substituted(已替换);点击节点看参数、guard、回执证据与证书 |
| 决策时间线 | 每次工具调用的 substitution(认证替换)或 slow(原始 reasoning callback),附守卫判定 pass/fail/unknown |
| 计划原文 | <CHISEL_PLAN> JSON(能解析时格式化显示,否则显示原文)与解析错误提示 |
| 证书 | 由会话日志推断的替换记录(cert_<seq>);面板注明“证书只表示回调被替换(CCS 已发生),不代表调用成功” |
| RSI / 备注 | 宿主持久化目录里的静态 RSI 快照(v1 通常不可用,字段为 null),以及派生说明 |
| 空态 | 解释 EDG/GDR/CCS 机制与该面板如何获得数据 |
面板支持局部交互:折叠分区、按 all/substitution/slow 过滤决策、缩放与选中节点、复制参数 / callId / 计划 JSON。没有
“节省 token / 成功率”之类逆事实指标;替换记录不代表成功。
工具 harnessmm_status
只读,向 agent 汇报引擎观测计数、当前路由、等待回执的替换 callId、策略与数据目录;不发起模型调用,
也不报告“节省”或“认证成功”。v1 的返回值里 rsi.available 恒为 false。
配置
cordis.patch.yml 默认插入 harnessmm 行并可被 profile patch 覆盖:
- insert:
- id: harnessmm
name: '@local/dsh-harnessmm'
config:
enabled: true
autoImprove: false # v1 不启用 Python RSI 训练
autoImproveAfterTurns: 20
autoImproveCooldownMs: 86400000
iterations: 2
maximumCandidates: 16 # 1..16(引擎取值范围)
maximumFastSteps: 8 # 1..16(引擎取值范围)
maximumPublicBytes: 65536 # 1024..65536(引擎取值范围;上游 v6 公开状态上限为 65536)
audit: true # 审计 sidecar($DSH_HOME/storages/harnessmm/audit/*.jsonl)
enabled=false 或环境变量 DSH_HARNESSMM_ENABLED=0 可整体停用引擎行为(投影仍会注册,便于观察)。
RSI 快照从 $DSH_HOME/storages/harnessmm/stats.json(或 improvement.json)读取,缺失即 null。
引擎交给 vendored 图控制器的是裁剪后的消息投影,不是原始 options.messages:user 文本每段 ≤600
字符、最多最近 32 个 user 回合(计划之后的新 user 消息始终保留,用于让控制器放弃复用)、去掉
DSH 的 source/id 溯源字段。原因是上游 v6 的公开状态上限为
65536 字节(超限即 jev/full-cot 退回慢模型);slow 模型与原生会话日志保持原文不变。
诚实性边界(重要)
- 视图只折叠已提交的会话日志事件,不读宿主内存;宿主侧的审计 sidecar(替换证书、 admission/回退原因、控制器内部事件)不会写入会话日志。
- 因此面板里的“证书”是由
chisel_<sha24>_<label>调用和日志推断的替换记录,不宣称调用成功。 - 回执标记
<HARNESSMM_RECEIPT>的 HMAC 密钥是宿主进程内随机生成的,重启后无法复核;视图只展示 标记里的return_code/stderr并与节点 guard 比对,无标记一律unknown,绝不从 stdout 猜测成功。 - 阶段
slow/fast是根据“最近一次决策类型 + 当前轮是否打开”的启发式展示,不是控制器状态机。 - token 只有实测值(sibling 投影);没有“反事实节省”字段。
- 视图的“目标”只取首条真实人类
user/message(source.kind === "user");DSH 注入的 runtime-context / time-context / approval / mnemon 等提醒不会成为目标。 - 节点 guard 属于前驱边界:在
chisel_*派发时用最近一次回执判定(A 看 root 回执,B 看 A 回执), 而不是节点自己的输出。守卫通过 ≠ 替换成功。 - v1 不包含 Python RSI 训练/自动改进(
autoImprove:false,harnessmm_improve未注册)。
开发
pnpm install # 仅 devDeps:esbuild / jsdom / react(-dom)
node scripts/build.mjs # host index.js + client client.js + preview
node scripts/build.mjs --host # 只构建 host
node scripts/build.mjs --client --no-preview
node scripts/build.mjs --preview # 只构建 preview/bundle.js
npm test # check-host / check-engine / check-client / check-integration
契约与设计文档:
docs/view-model.md—— host 投影 ↔ client 的唯一 wire 契约(事件形状、派生规则、字段表、诚实性约束)。docs/verification.md—— 测试矩阵、安装/HMR 重载机制与实机验证证据。docs/panel-usage.jpg—— 顶部页签 + 右侧栏两个入口同时打开时的实机截图。docs/panel-gui-live.jpg—— 运行中 DSH 右侧栏「决策复用」面板的实机截图。docs/panel-top-tab.jpg—— 顶部会话视图页签(「对话 / 轨迹 / 决策复用」一行)中面板的实机截图。docs/plugin-manager-detail.jpg—— DSH 插件详情页(v0.2.1,组件运行中)。docs/plugin-manager-installed.jpg—— DSH「插件 → 已安装」列表中的 HarnessMM 决策复用(开关为启用)。
目录:
harnessmm/
├── index.js / client.js # 构建产物(host ESM / client CJS+ModuleLoader)
├── cordis.patch.yml # bundle patch:插入 harnessmm 行
├── locale/{zh,en}.json # 插件元数据(bundle 描述)
├── scripts/{build,install}.mjs
├── src/host/ # config / schema shim / protocol / projection model / engine / vendor
├── src/client/ # main / Panel / styles / dict / fixtures / sidebar
├── preview/ # 独立预览(fixture 三态)
├── docs/view-model.md
└── .scratch/check-*.mjs # host / engine / client / integration 测试
变更记录
完整历史见 CHANGELOG.md。
- 0.2.1:新增会话视图顶部「决策复用」页签(紧跟内置「轨迹」);移除输入框旁「决策」按钮; 两个入口(顶部页签 / 右侧栏)共用同一只读面板。
- 0.2.0:首个可用版本——宿主侧 EDG/GDR/CCS 引擎、右侧栏观测面板、安装脚本、测试与设计文档。
许可
本插件:Apache-2.0。src/host/vendor/ 内为 HarnessMM 作者仓库的原始 Apache-2.0 文件,许可证与
NOTICE 一并保留。DeepSeek Harness 的插件 API 以在本机安装的版本(0.2.1-rc.5)为准。
No comments yet. Be the first to write one.