精选
为什么选中它
待人工精选——以下事实来自源码仓库。
它能做什么
Read-only acceptance layer for DeepSeek Harness: a verifier gates every turn and steers gaps back into the agent.
适合谁
想用 DSH 获得这项能力的用户;装前建议先看源码和文档。
风险提示
- 未发现明显风险信号;安装前仍建议查看源码。
Read-only acceptance layer for DeepSeek Harness: a verifier gates every turn and steers gaps back into the agent.
待人工精选——以下事实来自源码仓库。
Read-only acceptance layer for DeepSeek Harness: a verifier gates every turn and steers gaps back into the agent.
想用 DSH 获得这项能力的用户;装前建议先看源码和文档。
dsh plugin --profile web add github:EvilIrving/dsh-proof 作者没有声明支持的平台。
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 sh dsh plugin --profile <name> add github:EvilIrving/dsh-proof Or, from a checkout: sh 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 | Step | Mechanism | |---|---| | Intercept "about to close" | agent/turn-stopping (serial, awaited before the turn commits) | | Spawn a read-only verifier | ctx.subagents.start('spawn', …) with toolFilter.deny + outputSchema | | Block recursion | delegationDepthOf(agent) > 0 filter + maxDepth: 0 | | Steer gaps back | agent.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 ts 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: yaml 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.不看 Star,人工一条条挑的。
把 DSH 的 settings.yaml 做成可视化看板:所有已注册的 settings namespace——包括官方界面从未覆盖的第三方插件配置——都渲染成可编辑表单。项目还早,但方向很对:告别手改 YAML。
给 DSH 的 DIY 轨迹可视化:把 agent 的计划与执行画成图,不用翻原始日志也能看清它在干嘛。项目还早,但补上了「一眼看懂 agent 在做什么」这个真实缺口。
从 Claude Code / Codex 把活派给 DSH:在宿主内拉起带分级预设的 DSH agent 会话,看原生子代理进度,还能借它的多模态桥给纯文本的 DSH 补上视觉和生图。编排型插件,把 DSH 变成其他编码 agent 的后端。