harnessmm-dsh
Guarded decision reuse for the DeepSeek Harness: the model authors already-decided tool actions once, and receipt-supported ones execute through the native tools without another reasoning request. Ships a read-only decision-reuse panel with per-number data provenance.
一句话定位
Guarded decision reuse for the DeepSeek Harness: the model authors already-decided tool actions once, and receipt-supported ones execute through the native tools without another reasoning request…
安装方式
在 DSH 的 web profile 中执行下面的命令;装完刷新页面即可。
$ dsh plugin --profile web add harnessmm-dsh@1.2.5
兼容的 DSH 版本
>=0.2.1-rc.1
作者与热度
Xiuxiu-6 · ★ 2 · 更新于 2026-11-05
关于这个插件
harnessmm-dsh
Guarded decision reuse for the DeepSeek Harness. The model writes down already-decided
tool actions once; when the previous tool result satisfies the guard it wrote for them,
those actions run through the native tools without another reasoning request.
> This is a derivative work of [HarnessMM](https://github.com/YuhuaJiang2002/HarnessMM)
> by Yuhua Jiang (Apache-2.0). See [Provenance](#provenance) — the attribution is not
> boilerplate. This plugin re-implements one part of that research codebase for a general
> harness, and it does not inherit its benchmark claims.
---
The problem
An agent loop pays a full model request before every tool call, even when the model already
knows exactly what the next three calls are:
step 1 request → "read a.ts, then b.ts, then run the tests" ← pays once step 2 request → "ok, read a.ts" ← pays again, said nothing new step 3 request → "ok, read b.ts" ← pays again step 4 request → "ok, run the tests" ← pays again
Steps 2–4 are not decisions. They are the model re-deriving something it already decided.
What this plugin does
slow actor (one request, already paid for)
├─ visible text: {candidates:[...]}
└─ one native tool call ← the "root"
│
▼ real tool result (the receipt)
guard checked deterministically against the receipt
│
├─ holds → run the stored action through the SAME native tool
│ no model request at all → certificate
└─ else → the slow actor runs normally
Three moments:
| Moment | Boundary | What happens |
| --- | --- | --- |
| Author | llm/stream | After the model answers, its `` bank is validated against the live tool catalog and recorded. |
| Substitute | llm/stream | If exactly one stored action's guard holds, the request is answered with that exact tool call and no model call happens. |
| Certify | tools/post-execute | The action runs through the original tool definition; a certificate is recorded only after the real result is in hand. |
Anything else — no bank, failed guard, ambiguous successors, graph exhausted, a native
error, a non-conversation request, or the plugin disabled — calls next() unchanged, so
the harness behaves exactly as it would without the plugin.
The decision-reuse panel
The plugin ships a read-only observability panel. Nothing to install separately, nothing
to configure — restart the harness and it is there.
Two ways to open it:
1. Right sidebar tab — a HarnessMM tab in the conversation's right sidebar.
2. Standalone page — open http://127.0.0.1:/plugins/harnessmm/panel
in any browser tab. Useful when you want the panel full-width, or when the sidebar is
not available.
It follows the conversation. The panel counts only the conversation you have open:
- Open conversation A → you see A's skipped requests, certificates and action banks.
- Switch to B → the numbers switch to B's immediately; A's numbers never linger.
- Start a new conversation → everything is 0, with an explicit "this conversation has not
been recorded yet" note.
The chip in the top-right corner toggles the scope:
[ This conversation · 3f2a1b8c ] default — one conversation only [ All conversations ] click to see the process-wide total
The choice is remembered (localStorage: harnessmm.scope), and the sidebar tab behaves
exactly like the conversation-header tab. The session id comes from the host's
uiSession.current, which is the same UUID the engine records as sessionId.
同分类对比
同一分类下 Star 最高的 5 个,便于横向比较。
| 插件 | 作者 | Star | 版本 | 更新 |
|---|---|---|---|---|
| dsh-our-free-model | Ebony-Vinyl | 68K | 2.1.0 | 2026-11-10 |
| next-ai-draw-io | DayuanJiang | 36.9K | 0.4.10 | 2026-11-09 |
| MemOS | MemTensor | 12.3K | 0.0.0 | 2026-11-09 |
| bisheng | dataelement | 12.2K | 0.0.0 | 2026-11-10 |
| webnovel-writer | lingfengQAQ | 7.9K | 0.0.0 | 2026-11-07 |