DeepSHPlugins
dsh-proof 專案預覽
GITHUB / COMMUNITY PROJECT

dsh-proof

Agent 與自動化TypeScriptMIT

獨立只讀驗收層:頂層 turn 收尾前 spawn 只讀 verifier,未透過時把缺口注回主 agent。

1 StarsEvilIrving 更新時間 2026-08-14
訪問 GitHub 倉庫
dsh-proof 專案預覽

專案介紹

中文

獨立只讀驗收層:頂層 turn 收尾前 spawn 只讀 verifier,未透過時把缺口注回主 agent。

English

Independent read-only acceptance layer: spawns a read-only verifier before each top-level turn closes and steers non-pass gaps back into the agent.

專案資訊與收錄訊號

快照 2026-09-11
作者 / 組織
EvilIrving
倉庫
EvilIrving/dsh-proof
GitHub Stars
1
Forks
0
開發語言
TypeScript
許可證
MIT
最近推送
2026-08-14
Manifest
資料中檢測到宣告

公開倉庫不自動等於可商用;許可證與當前相容性以原專案文件為準。Manifest 和資料評分不構成安裝安全認證。

資料評分

50/ 100
維護活躍
81
文件與實用資訊
85
生態關注度
9
安裝便捷訊號
75
專案宣告訊號
100

README 含完整安裝與使用說明;關注度尚低(1)。

評分來自已有資料快照的五維模型,僅作瀏覽參考,不是實際使用評測或安全檢測結論。

安裝與使用

所有專案資料與許可均以對應 GitHub 倉庫為準。

dsh plugin --profile web add github:EvilIrving/dsh-proof

複製命令不會自動執行。請先閱讀倉庫文件,確認環境要求與許可證。

專案截圖

倉庫 README

GitHub 原文

已儲存的倉庫文件快照;文件抓取時間未記錄,可能與上方目錄介紹處於不同版本。安裝前請核對當前倉庫說明。

儲存庫檔案保留原文,指令與授權文字不作自動改寫。

dsh-proof

Independent read-only acceptance layer for the DeepSeek Harness.

Awesome DSH Plugin

Before each top-level turn closes, dsh-proof spawns a read-only verifier subagent, collects its structured verdict, and steers any non-pass gaps back into the driving agent. It is the harness's missing "is the agent actually done" gate — no other plugin can substitute for it.

Install

dsh plugin --profile <name> add github:EvilIrving/dsh-proof

Or, from a checkout:

dsh plugin --profile <name> add ./dsh-proof

The bundle patch inserts one plugin row (dsh-proof); it needs the subagents service (the official dsh-subagent providers), which the base profile already mounts.

How it works

StepMechanism
Intercept "about to close"agent/turn-stopping (serial, awaited before the turn commits)
Spawn a read-only verifierctx.subagents.start('spawn', …) with toolFilter.deny + outputSchema
Block recursiondelegationDepthOf(agent) > 0 filter + maxDepth: 0
Steer gaps backagent.inject(gap details) + agent.steer(followup) on fail / insufficient-evidence

The verifier inherits the parent's tool set and is narrowed by the deny list (see deny list); it never sees a whitelist that could accidentally hide a newly added read-only tool. A verifier that ends with stopReason !== 'completed' or a missing structured result is treated as "no objection", so a failed proof never fails the user's turn.

Config

export interface Config {
  providerName: string          // default 'spawn'
  maxAttemptsPerTurn: number    // default 3
  denyTools: string[]           // default mutating-tool deny list
  verifierPrompt: string        // read-only acceptance instruction
  followupInstruction: string   // steering text after a failed verdict
}

Set any field from cordis.yml:

plugins:
  dsh-proof:
    config:
      maxAttemptsPerTurn: 2
      denyTools: [write, edit, str_replace_editor, bash, run_code, subagent]

Deny list

toolFilter.deny removes tools from the verifier's inherited full set. tools.restrict validates every name loudly, so denyTools must name tools the deployment actually registers. The default is write, edit, str_replace_editor, bash, run_code, subagent, which keeps read-only discovery tools (read, read_image, glob, grep) available. A deployment that adds its own mutating tools must extend the list; a deployment that forbids even shell/read access should switch to an explicit allow whitelist (set denyTools and verifierPrompt to match, or extend the plugin for an allowTools field).

Model Experience

Request context and condition

What the model sees

The top-level agent receives an injected user message listing the verifier's gaps and evidence, followed by the configured followupInstruction. Only a non-pass verdict injects anything; a passing turn adds nothing.

Token effect

Zero-direct effect on passing turns. A failing turn adds one bounded injected message (gaps + evidence) plus the short follow-up line.

KV Cache effect

Append-only: the injected context and follow-up are appended as new user messages, never rewriting earlier request tokens.

Known Limitations and Deferred Work

  • Deny list must match the deployment's tools — tools.restrict fails loud

on unknown names, so a mismatched default blocks verifier startup. The exact mutating-tool set is deployment-specific and is resolved at first install.

  • No evidence normalization — the verifier gathers evidence itself; this

plugin does not re-implement diff/test/typecheck/lint. A deployment wanting specific evidence channels should extend verifierPrompt.

  • Best-effort spawn — a provider that is absent or rejects the request

degrades to a no-op (logged), rather than failing the user's turn.

使用前核對

安裝步驟、相容版本與授權範圍以原專案當前文件為準。Stars 和評分是快照中的導航訊號。

安裝與排錯 · 專案問題反饋

同類專案