DeepSeek Harness Plugin Hub

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

探索

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

社区

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

相关链接

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

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

DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins

@playform/hook-dsh-test-suggester

Hook Dsh Test Suggester

test-suggester hook:一个 DeepSeek Harness 插件,用于根据测试任务意图返回目标集合。当模型搜索证据时(例如 grep 查找 PASS/FAIL/error TS、读取 Test.ts、使用 bash 扫描错误),该 hook 会以确定性方式对调用进行分类

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

npx -y @deepseek-ai/dsh plugin --profile web add @playform/hook-dsh-test-suggester@0.2.1
README兼容性版本

兼容性与来源证明

Hook Dsh Test Suggester 以 @playform/hook-dsh-test-suggester 发布,当前版本为 0.2.1。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
any
发布来源
npm
Registry 更新时间
2026/11/4

版本

0.2.1stable
2026/10/28
0.2.0stable
2026/10/25
0.1.0stable
2026/10/25

相关插件

正在加载相关插件…

最新版
0.2.1
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
47.2 kB
文件数
44
Surface
any
许可证
CC0-1.0
发布源
npm
GitHub
★ 2
周下载
304
安全扫描
✓ v0.2.1 扫描通过
最近提交
2026/11/4
查看源码 ↗项目主页 ↗
README Badge

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

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

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

认领这个 Plugin →
报告问题

相关插件

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

Better Sidebardsh-better-sidebarBetter Sidebar for DSH — 在一列中提供文件树、编辑器、变更、任务和侧边聊天,并为每个对话单独显示。同时提供服务,供其他插件注册侧边栏标签页和文件查看器。Client Ui Git Graph@linxin666/dsh-client-ui-git-graph外部 dsh Web GUI 插件:空会话 Git 分支选择器和 Git 图,包含实际的主机端 Git 操作与防护,作为 dsh 配置文件包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 更新;可通过设置图标旁侧边栏中的触发器启动,并显示发布说明面板

README

@playform/hook-dsh-test-suggester

v0.2.1 - UNPUBLISHED - plan: SEARCH-SUGGESTER-PLUGIN

The role

The test-suggester hook is a DeepSeek Harness plugin that answers the test task intent with a target set.

When the model searches for proof (a grep for PASS/FAIL/error TS, a read of a Test.ts, or a bash error sweep), the hook classifies the call deterministically and names the likely targets before the model finishes searching.

It is the test consumer of the suggester family (SEARCH-SUGGESTER-PLUGIN.md, sections 3, 4, 8): a hook with no public API, an embedded pattern pack (the two-consumer extraction rule, with no shared core service until the family proves two consumers), and one delivery surface.

The surfaces

  • The tools/post-execute waterfall listener (plain registration, after the ccr's {prepend: true} listener) adds one additionalContexts notice and never a content replacement.
  • The agent/pre-step listener resets the note counter for each turn.
  • There is no tool and no provided service, and the reconciliation is read-only (node:fs reads, never a write).

How it works

  1. The post-execute listener.

    The tools/post-execute listener (waterfall, plain registration, runs after the CCR's { prepend: true } listener) calls next() first.

    Then the deterministic classifier runs over the call probe (tool name + arguments JSON), the gate applies, and one additionalContexts notice is prepended to the downstream decision.

    Content is never replaced, so a ccr-compressed result is unaffected.

  2. The pre-step listener.

    The agent/pre-step listener resets the note counter each turn when a user message enters.

Every listener is fail-open: on any error a warning is logged and the downstream decision is returned unchanged.

A note never fails a tool call.

The pack

IntentThresholdTrigger shapeTargets
Suite0.75PASS|FAIL|error TS|assert|suite, Source/Test/ pathsSource/Test/<Suite>/Test.ts, the suite README, Maintain/Run-Smokes.mjs, the README badge
Counts0.80N PASS, expected/PASS count, badgeREADME badge, SCHEME.md, the site content counts

Confidence is sigmoid(Σ weights − 0.6) (the plan §3.5).

Every candidate carries a one-phrase reason, and a candidate without a reason is never emitted.

The intents are pack-driven: the built-in pack (this monorepo's default) lives in @playform/lib-dsh-pack and is projected here as the test/ domain.

A repository that ships .dsh/pack.yml (or a user-layer pack at ~/.dsh/playform/workspaces/<slug>.yml) gets its OWN test/ intents, and a repository without a pack stays silent.

The reconciliation

On a judged call in a package, the package's smoke claims are reconciled with the tree it actually has (the completion spec's wave 2c re-spec, 03-SUGGESTERS.md): each Source/Test/<Folder>/README.md's ## Expected count, the folders that exist, each folder's Test.ts, the aggregate runner's roster (Target/Test/<Folder>/Test.js), and, when the workspace graph service is present, its Test nodes for the package.

A drift (a folder without a README count, a README count whose Test.ts is gone, a suite the runner never runs, or a graph node whose file is gone) emits ONE note naming the drifted files and the expected/actual counts.

It is read-only: node:fs reads, never a write.

A consistent tree logs one clear line per package root and stays silent, and the note is gated exactly like the intent notes (workspace pack, enabled, cooldown, dedupe, per-turn cap).

The noise controls

  • Confidence gate: k ≥ max(threshold, intent threshold) (default 0.75).
  • Cooldown: no second note for the same intent within cooldownCalls (6) judged calls, per agent.
  • Per-turn cap: at most maxNotesPerTurn (3) notes between user turns.
  • Exclusion: candidates under Target/, node_modules, .git, dist are never suggested (the build mirror is generated, never edited).
  • Fail-open and abstention: an empty surviving candidate set logs <name>: abstained ambiguous <Intent> <k> and emits nothing.
  • Workspace gate: a call that belongs to another workspace (no pack whose signature matches, and the built-in default is Documentation/ARCHIVE-STYLE.md) logs abstained foreign-workspace and emits nothing, while a target absent from the workspace is dropped before the gate (abstained no-companions when the intent's whole target set is gone).

Every activation, refusal, and suggestion is a ledger line in the hook's own ledger (one log per module), asserted byte-exactly by the end-phase smokes.

The ledger

test-suggester: activated (bundle 0.2.1, intents 2, threshold 0.75)
test-suggester: disabled (enabled=false)
test-suggester: suggest Suite 0.84 4 candidates call grep
test-suggester: abstained ambiguous Suite 0.62
test-suggester: abstained no-companions Suite 0.62
test-suggester: abstained foreign-workspace Suite 0.62
test-suggester: suppressed cooldown Suite
test-suggester: suppressed cap Suite
test-suggester: reconciliation clear <package> (<e> expected, <a> actual)
test-suggester: reconciliation drift <n> drifts <package> (<e> expected, <a> actual) call <tool>
test-suggester: reconciliation skipped deduped <package>
test-suggester: reconciliation skipped cooldown <package>
test-suggester: reconciliation skipped cap <package>

The configuration

See SCHEME.md for the full table.

Every knob is volatile (hot-editable without remounting).

The hook ships disabled (enabled: false in cordis.patch.yml), because the acceptance rate must be measured (the plan §10.3 kill criterion) before it is trusted.

The build and the tests

The build is pnpm prepublishOnly (Source/prepublishOnly.sh): the plugin build (ESM Target/, Test tree excluded), the Test build, the harness selfcheck, and the Test type-check.

The smoke folders are Loader-And-Activation, Pack-Driven, Pipeline-And-Gates, Reconciliation, and Workspace-Gate.

The plan

  • SEARCH-SUGGESTER-PLUGIN - sections 3, 4, 8, the test consumer.
  • Completion-Spec/03-SUGGESTERS - the wave 2c re-spec (the reconciliation).
  • The package, the Source, the smoke suites (five folders), and the build pass are complete, and the reconciliation landed.
  • The ETS twin and the live activation (the profile row flip and the restart) are the remaining end-phase steps (Documentation/Plans/POC-BRIEF.md section 8).

License

CC0-1.0.