DeepSeek Harness plugin

deepseek-AutoReview

「替我审核」(auto-review) permission preset for DeepSeek Harness: a fourth permission mode beside read-only / workspace-write / danger-full-access. Escalation asks run through a three-tier funnel —

Jump to install

Source facts

Repository
Violet-Evergarden-Xiya/deepseek-AutoReview
Latest update
Aug 17, 2026
Category
Security & Permissions
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/Violet-Evergarden-Xiya/deepseek-AutoReview
Plugin: deepseek-AutoReview
Author: Violet-Evergarden-Xiya

Check the source files

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

File explorer3 files
README.mdSource · read only

deepseek-autoreview

A「替我审核」(review-on-my-behalf) permission preset for DeepSeek Harness: a fourth permission mode beside read-only / workspace-write / danger-full-access. Escalation asks run through a three-tier funnel — a conservative whitelist (zero-token fast approval), a danger blocklist (zero-token interception), and an independent reviewer model for the gray zone. Safe operations auto-approve, unsafe/uncertain ones fall through to the human approval prompt, and obviously malicious asks can be denied outright. Fail-closed by construction, with a user-switchable reviewer model in General settings.

The four modes

PresetSandboxApprovalInside workspaceEscalations
read-onlyread-onlyaskwrites deniedhuman approval
workspace-writeworkspace-writeask✅ silenthuman approval
review (替我审核)workspace-writeask✅ silentwhitelist → blocklist → reviewer model; safe auto-approves, else human/deny
danger-full-accessdanger-full-accessnever✅ silent✅ silent

Install

Requires a dsh profile (~/.dsh/profiles/<name>, new dsh.profile.bundles + cordis.patch.yml structure).

# npm (after publishing)
dsh plugin add deepseek-autoreview
# straight from GitHub
dsh plugin add github:Violet-Evergarden-Xiya/deepseek-AutoReview
# local checkout
dsh plugin add file:/path/to/deepseek-AutoReview

Then register the bundle in the profile's package.json (dsh plugin add only installs the dependency):

{
  "dependencies": { "deepseek-autoreview": "1.1.0" },
  "dsh": {
    "profile": {
      "bundles": ["@deepseek-ai/dsh-base", "@deepseek-ai/dsh-web-app", "deepseek-autoreview"]
    }
  }
}

Restart dsh (no hot reload for the host patch layer):

dsh web

The preset picker then shows the fourth entry「替我审核」.

Usage

Switch a session to「替我审核」:

  • workspace edits run silently;
  • escalations pass the funnel: structurally verifiable commands (npm/pnpm/pip install, git clone/pull/fetch, no shell metacharacters) fast-approve with zero tokens; catastrophic shapes and sensitive paths (rm -rf /, curl | sh, writes to /etc …) intercept with zero tokens; the gray zone is judged by the reviewer model;
  • auto-approvals are rate-limited (5/min, 30/hour by default) — over-budget asks delegate to the human.

Switching the reviewer model in settings

After install, Settings → General gains a「替我审核模型」row, switchable at any time with immediate effect:

  • Follow main conversation (default): the reviewer reuses the session's current model;
  • Fixed model: fill Provider / Model (e.g. deepseek-official / deepseek-v4-flash); the host validates the route against the LLM catalog and falls back to the session route (flagged in the audit) when invalid;
  • Priority: settings (fixed) > composition config > session route.

Configuration (profile cordis.patch.yml)

- id: permission-review
  name: deepseek-autoreview
  config:
    provider: deepseek-official   # optional deployment-level fallback route (paired with model)
    model: deepseek-v4-flash
FieldDefaultMeaning
presets['review']Preset table keys that activate the reviewer.
provider / modelunsetComposition-level fallback route, supplied together.
maxInputBytes1024Byte budget for the current-turn user context.
maxOutputTokens256Judgment response token cap.
timeoutMs10000End-to-end judgment deadline; timeout delegates.
maxConcurrent4In-flight judgment cap; over-capacity asks delegate.
whitelisttrueZero-token fast approval for structurally verifiable commands.
whitelistVerbs[npm,pnpm,yarn,pip,pip3,poetry,cargo,git]Whitelisted command verbs.
preflighttrueDeterministic blocklist interception.
blocklist26 built-in rules{id, pattern, tools?} string-pattern rules.
staticDenyfalseBlocklist hits reject (deny) instead of delegating.
denytrueAllow the model to decide deny.
maxAutoPerMinute / maxAutoPerHour5 / 30Auto-approval budget; overflow delegates.
retryTransienttrueRetry transient failures once (rate limits/network); timeouts and invalid outputs never retry.
reasoningEffortoffJudgment reasoning effort (off skips reasoning; degrades automatically when unsupported).
rubricbuilt-inFull replacement for the reviewer system prompt.

How it works

  • Preset table: the bundle patch overrides the permission row's preset table with review appended (workspace-write + ask).
  • Three-tier funnel: whitelist (zero tokens) → blocklist (zero tokens) → reviewer model over the real tool arguments recovered from the session log by callId, the current turn's user request, and the asker's self-reported reason (least trusted).
  • Answerer: a PREPENDED approval/request listener ahead of the human channel, gated on the review preset.
  • Closed vocabulary: allow / refer / deny (deny rides the platform's rejected semantics).

Audit and records

  • review/verdict (log-only): { toolName, callId?, decision, rationale?, source, model?, latencyMs?, evidenceSha256?, rateLimited?, routeFallback?, error? }source names the deciding layer, evidenceSha256 fingerprints the operation.
  • One concise in-conversation notice per decision.

Boundaries

  • Delegated subagents keep their pinned never policy — the reviewer never sees child escalations.
  • The whitelist only approves structurally verifiable commands (single verb, no ; | & < > $ = \ ( ) { }` anywhere), so composite or obfuscated commands always land in the blocklist or the model.
  • The preset-table override replaces the whole presets key (the three shipped entries are restated + review); hand-merge review into custom tables.
  • Network access is outside the review scope.
  • Judgment quality depends on the chosen model; iterate on the rubric.

Build & test from source

pnpm install
pnpm typecheck
pnpm test      # 27 cases incl. adversarial samples (command chaining, path tricks), fake adapter, zero tokens
pnpm build     # tsc declarations → tsdown lib/ (host half + browser client bundle)

Publish:

pnpm publish   # runs prepublishOnly (typecheck + test) first