DeepSeek Harness Plugin Hub

Publish and manage complete Harness Profiles. Discover Plugins for your next setup.

Explore

PluginsPresetsDocsNews

Community

Publish a pluginContactReport an issue

Resources

Plugin Hub on GitHubDeepSeek HarnessSystem statusPrivacy notice
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

Independent and unofficial. Not affiliated with, authorized by, or endorsed by DeepSeek.

Review Gate — DSH Plugin for DeepSeek Harness
← Plugins
R

@dsh-external/dsh-review-gate

Review Gate

Hand finished derivations and code to an independent reviewer subagent and feed the verdict back to the main model. 把设计推导与代码成品交给独立审查子代理,并把结论回注给主模型。

The plugin will be installed here. Keep web if you are unsure.

npx -y @deepseek-ai/dsh plugin --profile web add github:ttxs66666/dsh-review-gate#369875c9a475fdf2a8f9a6fb42b715ff6cd1f30b
READMECompatibilityVersions

Compatibility and provenance

Review Gate is published as @dsh-external/dsh-review-gate and currently resolves to version 0.1.0. The Hub verifies its manifest and preserves the exact installation source for reproducible installs.

DSH compatibility
*
Runtime surfaces
web
Release source
github
Registry updated
9/11/2026

Versions

0.1.0stable
9/11/2026

Related plugins

Loading related plugins…

Latest
0.1.0
DSH
*
HMR
Process restart
Tree shaking
Safe tree shaking not declared
Unpacked size
Unavailable
Files
Unavailable
Surface
web
License
BSD-3-Clause
Source
github
GitHub
★ 1
Weekly downloads
0
Last push
9/11/2026
View source ↗
README badge

Click the badge to copy Markdown for your README.

Do you maintain this Plugin?Claim benefit · Priority security scan

Verify the GitHub repository declared in package.json to manage this listing. After you claim it, Hub will prioritize a security scan of the current version and publish the result when it passes.

Claim this Plugin →
Report an issue
DeepSeek Harness Plugin Hub
ProfilesPluginsCategoriesNewsDocsSign inManage Profiles
ProfilesPluginsCategoriesNewsDocsSign in

Related plugins

More verified plugins in agents-orchestration.

Headless@deepseek-ai/dsh-headlessThe dsh one-shot bundle: a direct core Agent/Session runner over dsh-base with no Host, HTTP, or browser layerExperimental Agent Team Web Profile@deepseek-ai/dsh-experimental-agent-team-web-profileExperimental Web profile layer for Agent Teams Remote and UI pluginsSubagent Codex@deepseek-ai/dsh-subagent-codexOne-shot Codex subagent provider over the official app-server protocolSubagent Claude Code@deepseek-ai/dsh-subagent-claude-codeOne-shot Claude Code subagent provider over the official Agent SDK

README

dsh-review-gate

English | 中文

Hand finished derivations and code to an independent reviewer subagent, and feed the verdict back to the main model.

Trigger authority stays with the model. The plugin auto-sends nothing and guesses nothing from keywords: it injects two editable reminders and exposes one explicit tool.

  • A — periodic reminder. Every N real user messages (always on a session's first message; 0 injects on every message), remind the model to hand math derivations, research code, and paper drafts to a subagent for independent review, and to fix according to its findings.
  • B — research discipline. Text appended to the outgoing prompt when a review is dispatched: every parameter must have a reason — nothing may appear or be assigned without stating its source, unit, and valid range.
  • review_gate_check — the model (or a human) explicitly requests one review. A child subagent is dispatched, and its structured verdict (pass / needs_fixes / fail, with findings and required fixes) is rendered back into the conversation.

Install

dsh plugin --profile web add github:ttxs66666/dsh-review-gate

Restart dsh web afterwards. Requires DSH on the @deepseek-ai/dsh-* 0.1.x line, 0.1.5-rc.1 or newer (^0.1.5-rc.1 || ^0.1.6-rc.1 — the explicit prerelease branches are there because a range without one silently excludes every prerelease build; see peerDependencies).

What you get

Three surfaces, all bound to the same settings namespace, so they can never disagree:

SurfaceSlotContents
Settings → Review Gatesettings.section (id review-gate, order 60)The full page: master switch, A/B toggles and texts, injection cadence, reviewer configuration (provider / persona / tool whitelist / artifact limit / logging / log path), composer-toggle visibility, in-process stats polled every 5s
Composer + menuconversation.input.leftA/B quick toggles, hidden by the page's + switch
Settings → Pluginssettings.plugin.item (key review-gate)Compact card: status, master switch, pointer to the page

Screenshots (optional, for storefronts): drop assets/screenshot-1.png … into your repository and list them in screenshots.json next to package.json — ["assets/screenshot-1.png"], 1–8 entries, paths relative to that file.

Settings

Namespace review-gate (applies: live — every change takes effect immediately, no restart).

GroupFields
A / Benabled injectA injectB promptA promptB promptAEvery showComposerToggles
Reviewerprovider reviewerPersona reviewerTools maxArtifactChars verboseLog logFile

The reviewer group resolves as schema defaults → this plugin's composition config (base layer) → user layer: a value set in your profile config stays the effective default, the settings page overrides it, and clearing a field falls back to that config.

Host route: GET /review-gate/api/status (loopback only, no auth) returns the resolved settings, the available subagent providers, B's real delivery surface, and the process counters. The page shows host unreachable when the route does not answer, and host version is older when it answers without the newer fields (i.e. the host half has not been restarted yet).

Behaviour worth knowing

  • The tool whitelist is resolved against the calling agent's scope. In a Web profile the tools live on an agent preset's standing scope rather than in the global layer, so a tool that exists can still be invisible to a global lookup. Names that are not visible are skipped with a log line; if the configured list is non-empty but entirely invisible, the review is refused instead of silently degrading into "no restriction". Dispatch itself retries with decreasing capability, so a whitelist the runtime rejects cannot fail the whole review.
  • Provider capabilities are gated before dispatch. persona, toolFilter and outputSchema are only sent to providers declaring them; when persona is unsupported the role text is prepended to the prompt instead, and the verdict says so.
  • B's reach is reported, not assumed. Kernels since 0.1.5-rc.1 removed subagents.registerContinuableSetup, so B currently reaches review subagents only; the status API reports review-only and the page renders that truth. If the API returns, the plugin goes back to continuable+review by itself.
  • Counters live in process memory and reset when the plugin reloads.

Development

npm install
npm run check      # typecheck + build + smoke probes
npm run build      # host (tsc) → lib/index.js, client (tsdown) → lib/client.js
npm run probe      # zero-dependency smoke probes against the built artifacts

lib/ is committed on purpose: DSH installs plugins from a git checkout without running a build, so the shipped bundle has to be in the repository. After changing src/, run npm run build and commit lib/ together with it.

To develop against a local checkout instead, npm run build:sh links the peer dependencies out of an installed DSH (DSH_CHECKOUT=<checkout> bash scripts/build.sh) and then compiles both halves.

The probes under test/ are plain node scripts. probe-review-gate.mjs drives the compiled host half through a fake context (whitelist resolution, config-error routing, capability downgrade, malformed verdicts, counters); probe-client.mjs renders the compiled client half through a miniature React with a fake window/fetch (all three surfaces, plus both host-status paths). test/fixtures/quota-design.ts is not part of the plugin — it is a deliberately flawed derivation kept around to exercise the gate itself.

License

BSD-3-Clause.