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 和评分是快照中的导航信号。

安装与排错 · 项目问题反馈

同类项目