DeepSeek Harness plugin

dsh-advisor-slhssb

Independent-model advisory review for DeepSeek Harness: after each tool step, a reviewer model audits the agent's operations and injects concerns/guidance into the next step.

Jump to install

Source facts

Repository
slhssb/dsh-advisor
Latest update
Aug 14, 2026
Category
Workflow & Automation
GitHub stars
0
Format
plugin
Catalog evidence
Upstream dsh.bundle evidence
Evidence path
package.json#dsh.bundle
Checked against
0.1.0-rc.8
Upstream check date
2026-08-20

This evidence comes from the upstream catalog. This site has not installed, run, or security-reviewed the plugin.

Install

Start with a prompt that asks an agent to review the GitHub repository and source. Switch to the command if you want to install it yourself.

Copy this prompt into DSH, Codex, or another agent and ask it to review the GitHub repository and source first.

Do not install or run any commands yet. Read this plugin's GitHub repository, README, and relevant source code. Then answer the questions below clearly and directly so I can decide whether it fits my needs:

1. What is this plugin, and what problem does it solve?
2. Who is it for, and what are its typical use cases?
3. How is it used after installation? Include one minimal example.
4. What known limitations or privacy, security, compatibility, or maintenance risks does it have?
5. Give a clear recommendation: recommend, conditionally recommend, or do not recommend, with reasons.

Distinguish statements documented by the repository, inferences from source code, and unknowns. If evidence is insufficient, say so explicitly. Do not guess or simply repeat the README.

GitHub: https://github.com/slhssb/dsh-advisor
Plugin: dsh-advisor-slhssb
Author: slhssb

Check the source files

Read the README and other files from this plugin directory before installing.

File explorer4 files
README.mdSource · read only
README language

dsh-advisor

English | 中文

![npm](https://www.npmjs.com/package/@slhssb/dsh-advisor) ![license](LICENSE)

Independent-model advisory review for DeepSeek Harness.

After each tool step, a separate reviewer model audits the agent's most recent operations. When it finds a real concern (destructive or irreversible operations, contract/schema violations, deviations from the user's explicit request, correctness bugs), it injects a short [advisor] guidance message into the next model call so the agent can self-correct. When the work is sound, nothing is injected and the review costs only the (cheap) reviewer call.

dsh has no built-in advisor; this plugin implements one on the standard agent/pre-step waterfall (the same injection channel used by dsh-agent-instructions and dsh-compaction-basic).

Install

dsh plugin add @slhssb/dsh-advisor

or add to the profile's package.json:

"dependencies": { "@slhssb/dsh-advisor": "^0.1.0" },
"dsh": { "profile": { "bundles": ["@slhssb/dsh-advisor"] } }

Then npm install (or pnpm install) in the profile directory and restart dsh.

Configuration

Defaults target the DeepSeek official API (deepseek-official provider) with the cheap deepseek-v4-flash model. The API key is not handled by this plugin: the deepseek-official adapter resolves it per request from the DEEPSEEK_API_KEY environment variable or the credentials store.

The defaults need no override — they already target the DeepSeek official API (deepseek-official/deepseek-v4-flash). To point the reviewer elsewhere, override in the profile's cordis.patch.yml (last write per row wins). This example routes the reviewer through a third-party relay: the API key is resolved by that provider's adapter (here the TOKENRHYTHM_API_KEY environment variable, per its apiKeyEnv in settings.yaml) — this file never holds keys:

- id: advisor
  config:
    provider: tokenrhythm
    model: deepseek-v4-pro
    maxTokens: 512
    maxHistoryMessages: 40
    interval: 1
    timeoutMs: 30000
KeyDefaultMeaning
providerdeepseek-officialReviewer provider route (any OpenAI-compatible adapter works).
modeldeepseek-v4-flashReviewer model.
maxTokens512Reviewer output cap.
maxHistoryMessages40Most recent derived messages sent to the reviewer.
interval1Review every N steps that contain tool results (1 = every step).
timeoutMs30000Per-review timeout; a timeout degrades silently.

Disable entirely with disabled: true on the row, or set an empty provider/model to fall back to the current request route (agent/session request header, then agent options).

Rules (deterministic checks)

Beyond the LLM review, rules give you zero-cost, deterministic checks that match the latest tool call (tool name + raw arguments JSON) against regular expressions. They never fail and never cost a token; a warn rule injects a [advisor] Rule check: message into the next step, a block rule rejects the step outright (opt-in — default is warn).

- id: advisor
  config:
    provider: deepseek-official
    rules:
      - id: no-recursive-delete
        pattern: 'Remove-Item|rm\s+(-rf|-r\s*-f)|del\s+/[sq]'
        message: '检测到破坏性删除命令,请确认目标路径与用户授权。'
        action: warn            # or block
        tools: ['pwsh', 'bash'] # optional: only run for these tool names
        enabled: true           # optional, default true
KeyDefaultMeaning
idStable rule id (logged when the rule fires).
patternCase-insensitive JS regex matched against toolName + arguments.
messageText injected as [advisor] Rule check: ….
actionwarnwarn injects guidance; block rejects the step.
toolsallOptional tool-name substrings the rule applies to.
enabledtrueDisable without removing the rule.

Invalid rules (missing fields, bad regex) are skipped with a warning; the agent flow is never blocked by a misconfigured rule. Multiple warn hits are merged into one message. block fires before the LLM review — the review is not run for a blocked step.

How it works

1. agent/pre-step (waterfall) fires before every model call. 2. The plugin scans the session log for the newest tool/result event. If none exists, or its seq was already reviewed, the step passes through. 3. Otherwise the reviewer model receives the recent derived history plus the review instruction and streams a response. 4. A non-empty response is wrapped as a user message (source: { kind: 'plugin', plugin: 'dsh-advisor' }, text prefixed [advisor]) and spliced into the step's messages after the claimed messages, before system context — the same insertion point dsh-agent-instructions uses, so the next model call is guaranteed to see it. 5. Review failure (LLM error, timeout, empty output) logs a warning, injects nothing, and advances the reviewed-seq marker so the same batch is not retried on the next step. The agent's main flow is never blocked.

Injected [advisor] messages are ordinary user/message log entries; they never produce tool/result events, so review can never recurse on itself.

Development

npm install
npx tsc -p tsconfig.json
node test/smoke.mjs   # hand-built fakes; no network

lib/ is committed so git-installed consumers work without a build step; node_modules/, test/smoke.mjs, and package-lock.json are gitignored. npm pack ships lib via the files whitelist.

Publish

Published on npm as @slhssb/dsh-advisor; the repository carries the GitHub dsh-plugin topic for discovery. Bump version in package.json, publish, then tag the release:

npm publish --access public
git tag v0.1.0 && git push --tags