DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

Touchstone — DeepSeek Harness 插件(DSH Plugin)
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins
T

dsh-touchstone

Touchstone

DSH 试金石:给「自改造」补上评测这一环——用一套金标准用例,把改动前 vs 改动后跑一遍、打分、对比,好就留、不好就撤。

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add github:Hwayn-pixel/dsh-touchstone#f5248d6928d5399df2fb656c8cff530c5b50ee70
README兼容性版本

兼容性与来源证明

Touchstone 以 dsh-touchstone 发布,当前版本为 0.2.0。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
web
发布来源
github
Registry 更新时间
2026/10/3

版本

0.2.0stable
2026/10/3

相关插件

正在加载相关插件…

最新版
0.2.0
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
未提供
文件数
未提供
Surface
web
许可证
MIT
发布源
github
GitHub
★ 0
周下载
0
最近提交
2026/10/3
查看源码 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题

相关插件

继续浏览 developer-tools 分类下经过校验的插件。

Ssh@linxin666/dsh-sshdsh Web GUI 的远程 SSH 操作:主机配置存储(~/.dsh/dsh-ssh.json,可从 ~/.ssh/config 导入)、支持跳板主机的持久化 ssh2 连接池、exec / PTY Web 终端 / SFTP 传输 / 本地端口转发隧道 / 集群执行Update@linxin666/dsh-update用于 dsh Web GUI 的自更新插件:探测 npm 上是否有更新的系列版本,并在原地运行所属配置的 pnpm 更新;可通过设置图标旁侧边栏中的触发器启动,并显示发布说明面板Tui@deepseek-harness-tui/dsh-tui用于 DeepSeek Harness 智能体、会话和工具的交互式终端界面。Cc Safety Netcc-safety-net编码代理 CLI 钩子——阻止破坏性命令和访问机密文件

README

dsh-touchstone

The missing evaluation half of DeepSeek Harness's self-evolution. You changed something — did it actually get better? Run the same golden cases against the current config and a candidate, score them, and get a before→after report. Keep it if it improved; revert if it did not.

DeepSeek Harness plugin · MIT · works on desktop and web

English | 简体中文


Contents

  • What it is
  • Why you want it
  • Quick start (5 minutes)
  • A worked example
  • The four ideas
  • How to write checks
  • What a run does
  • Settings and where data lives
  • What it does not do (limits)
  • FAQ
  • Development

What it is

A touchstone for your agent. Whenever you make a change — add a house rule, swap a prompt, tweak a preset — instead of going on a hunch, it runs that change against the same set of golden cases, side by side with "before", and hands you a scorecard:

case            current   candidate   change
lead-with-answer   0%       100%      +100%

and closes with an evidence-based verdict: ✅ Better, keep it. / ❌ Regressed, revert. / ➖ No real difference.

The score only speaks for these cases — the final call is still yours.

Why you want it

DSH's whole bet is "everything is a plugin": prompts, tools, presets, even the agent loop are meant to be swapped at will. And the official account names the missing piece:

DSH has already split the agent into locatable, replaceable components — but it still lacks a complete learning loop: propose a change, and use Eval to judge whether that change actually worked.

The ecosystem already has undo / rollback (recover from a bad change) but no evaluation (measure before you commit). dsh-touchstone fills exactly that gap.

It is deliberately thin: it only uses the public ctx.llm.stream() seam, never patches the harness, and depends on no internal services — so it runs on both DSH 0.1.x (web) and 0.2 (desktop).

Quick start (5 minutes)

  1. Install (pick a profile):

    dsh plugin --profile desktop add dsh-touchstone      # desktop app
    dsh plugin --profile web add dsh-touchstone          # web UI
    

    Restart DSH afterwards.

  2. Open it: Settings (desktop: bottom-left account menu → 设置, or Ctrl + ,) → click 🪨 试金石 on the left.

  3. Add a case — under "金标准用例 (golden cases)", click + 加一条用例:

    • name: for you, e.g. "lead with the answer".
    • prompt: the sentence you would send to the agent, e.g. "Introduce artificial intelligence in one sentence."
    • check: click + 加一条检查项, choose 必须包含 (must contain), and type the word you expect.
  4. Add a candidate — under "候选方案", click + 加一个候选:

    • name, e.g. "add a prefix rule".
    • prompt: the text you want to try, e.g. "Every answer must begin with exactly the four characters 「笔记:」."
    • mode: append (on top of current) or replace.
  5. Run: click 跑一遍 (Run) next to the candidate.

  6. Read the report — scroll to 对账 (Report) for per-case scores and the verdict.

💡 Fields save on blur: after typing, click elsewhere (or press Tab) and it saves automatically.

A worked example

You want to add an "opening format" rule, but you don't know if the model will obey it.

FieldValue
case · nameopening format
case · promptIntroduce artificial intelligence in one sentence.
case · checkmust contain → 笔记:
candidate · nameprefix marker
candidate · promptEvery answer must begin with exactly 「笔记:」, then continue normally.
candidate · modeappend

Click Run. A few seconds later:

prefix marker        current 0% → candidate 100%
case             current   candidate   change
opening format      0%        100%     +100%
✅ Better, keep it.

It adds evidence to the sentence you otherwise would not have: not "I think it works", but "under the current config the instruction had no effect; under the candidate it did."

The four ideas

IdeaWhatNote
Caseone prompt + some checksa question you want the agent to stay solid on
Checkan assertion about the outputmust contain / must not contain / regex / LLM judge
Candidate (variant)a prompt you want to tryappend or replace; the control is the built-in "current (no change)"
Reportcandidate mean − baseline meanper-case delta + overall verdict

How to write checks

KindDecisionWhen to use
must containthe output contains this textcheapest and most reproducible; "a word / conclusion / format must appear"
must not containthe output does not contain this textprohibitions, e.g. "no 'Sorry'"
regexthe output matchesformat checks, e.g. ^笔记:
LLM judgea second model call answers PASS / FAIL + one linesubjective criteria, e.g. "conclusion first, then reasons"

Rule of thumb: prefer rule checks over the LLM judge — rule scores are the most trustworthy and reproducible; the judge is also a model, with its own bias. Checks can carry a weight (default 1); the score is a weighted pass rate.

What a run does

  1. Take every enabled case × the candidates you ticked (plus the always-on control "current").
  2. For each pair, build one model call — system = the candidate's prompt, messages = the case prompt — and collect text and usage via ctx.llm.stream().
  3. Score: rule checks in-process; the LLM judge makes one more model call.
  4. Store the run and return the report.

The whole thing only reads config and calls the model — it never touches your files.

Settings and where data lives

  • Which model to run — configure provider / model / temperature / maxOutput for dsh-touchstone in DSH settings, plus optional judge model (judgeProvider / judgeModel; blank = same as the runner).
  • Data — $DSH_HOME/touchstone/bench.json (DSH_HOME defaults to ~/.dsh); stores cases, candidates, and the last 40 runs.
  • To reset, delete that file (it is recreated).

What it does not do (limits)

  • This is a text-level evaluation: it compares "the model's output under the same prompt", not a full agent loop.
    • Best for: changing a prompt / a house rule / a preset's wording.
    • Not for: "changing a tool's implementation" that needs real side effects — it gives no evidence there.
  • The judge is also a model and has bias; rule checks are the most reproducible. Treat the score as evidence, not a verdict.
  • The score only speaks for your cases — write them poorly and you measure the wrong thing.

FAQ

Q: How long / how expensive is a run? A: One model call per case × candidate (plus one more if you use an LLM judge). Few cases, short outputs → fast and cheap. Start with one or two cases.

Q: Can I compare two candidates instead of candidate-vs-current? A: Each candidate is compared against "current". For candidate-vs-candidate, read the two reports side by side (same cases, same baseline).

Q: Why did my input box garble Chinese? A: An early development build had this bug — the input posted on every keystroke and wrote the server value back, which fights the IME. This version is fixed: text edits stay local and save on blur.

Q: Will it touch my files? A: No. It only reads config and calls the model.

Development

npm install
npm run build      # src/index.ts -> lib/index.js ; src/client/index.ts -> lib/client.js
npm run typecheck
npm test           # pure-logic unit tests (run against the built bundles; no DSH needed)
  • Host half (src/index.ts): storage + run engine + routes + settings schema.
  • Browser half (src/client/index.ts): the "试金石" settings page.
  • Local iteration: node build.mjs --watch, then refresh the page (client half reloads instantly).

Authors & license

  • Author: Hwayn (幻弈)
  • Collaborator: Yucheng Xiao (肖宇成) — direction, requirements, testing
  • License: MIT