dsh-plugin-auto-review
by bingps
DeepSeek Harness(dsh)的自动模式:会话处于评审治理的权限预设时,每条 shell 命令先交评审模型把关再执行
An auto mode for the DeepSeek Harness ( dsh ): while a session sits on a review-governed permission preset, every shell command is handed to a review model before it runs, and…
安装
dsh plugin --profile web add github:bingps/dsh-plugin-auto-reviewGitHub 源码安装:首次需按提示配置 allowBuilds 构建授权后重试
安装与环境配置指引、插件开发教程见 DSH 中文社区文档 ↗
安装即在你的机器上以你的权限运行第三方代码——它可读写文件、使用凭据、访问网络,DSH 的工具审批不会为插件代码加沙箱。「检测到 manifest」仅代表发现 dsh.bundle / dsh.plugin 清单,不构成兼容性或安全审查;安装前请审阅源码,不熟悉的插件先在不含密钥的环境试用。
README
English | 中文
给 DeepSeek Harness(dsh)加一个 auto mode:会话处于受审查的权限预设时,每一条 shell 命令在执行之前先交给一个 review 模型,模型决定放行、转人工、还是拒绝。
它把"每条命令都弹窗问人"换成"由模型判断",而不是换成"无条件信任"。
| 结论 | 行为 | 主模型 / 用户看到什么 |
|---|---|---|
allow |
继续 tools/pre-execute 瀑布流(next()) |
无任何额外内容,命令照常执行 |
ask |
返回 { kind: 'ask' },经 ctx.approval 路由 |
弹出人工权限确认框,并附带 review 理由 |
deny |
返回 { kind: 'deny', reason } |
工具报错结果里带着拒绝理由,主模型据此调整 |
review 无法完成时(没有可用模型路由、超时、传输错误、返回值无法解析)不会默默放行,而是落到 onUnavailable(默认 ask)。
沙箱升级(sandbox_permissions)刻意不由模型代答:离开文件沙箱仍然是人的决定,这类审批请求原样交给人工应答者。
工作方式
插件只注册一个 tools/pre-execute 监听器,自身不持有任何状态:
- 工具名不在
tools里、或调用方会话当前的权限预设不在presets里,直接放过 —— 其它会话的行为与没装这个插件完全一致。 - 把命令、声明用途、工作目录、解析出的沙箱模式与工作区根目录组成 JSON,发一次有上限的辅助模型请求(
ctx.llm.stream)。 - 回答必须是一个 JSON 对象 ——
{"decision":"allow"|"ask"|"deny","reason":"…"}—— 再映射到 harness 自己的PreToolDecision词汇表。
harness 本体一行未改:tools/pre-execute 提供待执行的调用,ctx.approval 提供人工通道,ctx.permissionPresets 提供 GUI 里已经能渲染的模式开关。
安装
dsh plugin --profile web add dsh-plugin-auto-review
然后在该 profile 的 cordis.patch.yml 里加上受审查的预设与插件行:
- id: permission
config:
defaultPreset: workspace-write
presets:
read-only: { sandbox: read-only, approval: ask }
workspace-write: { sandbox: workspace-write, approval: ask }
auto:
sandbox: workspace-write
approval: ask
name: Auto (sandbox + review)
description: workspace-write 之上,每条命令都过一遍 review 模型。
auto-full-access:
sandbox: danger-full-access
approval: ask
name: Auto (full access + review)
description: 不用文件沙箱,改由 review 模型作为唯一的闸。
danger-full-access: { sandbox: danger-full-access, approval: never }
- insert:
- id: auto-review
name: dsh-plugin-auto-review
config:
presets: [auto, auto-full-access]
tools: [bash, pwsh]
reasonLanguage: Chinese
patch 会整体替换目标行的 config,所以要保留的预设需要一并重写。这里必须显式给 defaultPreset:auto 与 workspace-write 的旋钮组合相同(workspace-write + ask),两者靠持久化的 permission/preset 选择区分。
当前会话用 /permission auto 切换;新会话的默认值在 Settings → Permission 里选。
该让哪个预设受审查?
| 预设 | sandbox | 什么时候用它 |
|---|---|---|
auto |
workspace-write |
宿主机有可用沙箱后端(bubblewrap / Landlock):沙箱是外层边界,模型审查是第二道闸 |
auto-full-access |
danger-full-access |
宿主机没有可用沙箱后端,受限命令根本跑不起来:此时模型审查就是那道闸,用它取代每条命令的升级弹窗 |
配置项
| 键 | 默认 | 含义 |
|---|---|---|
presets |
['auto'] |
受管的权限预设名;其它预设完全不受影响 |
tools |
['bash','pwsh'] |
需要审查的工具名 |
provider / model |
跟随会话路由 | review 用的模型;两者必须同时给出 |
maxTokens |
512 |
review 回答的输出上限 |
timeoutMs |
30000 |
单次 review 的墙钟上限 |
onUnavailable |
ask |
review 无法完成时的兜底结论(ask / deny / allow) |
maxCommandChars |
4000 |
交给 review 的命令文本截断长度 |
skipPatterns |
[] |
命中任一正则则跳过 review 直接放行 |
reasonLanguage |
English |
理由使用的语言 —— 写死而不靠推断,因为这段文字会直接进人工弹窗 |
skipPatterns 默认空是有意的:宽松的正则就是闸门上的洞 —— ^ls 也能匹配 ls; rm -rf /。要用就锚定整条命令(^ls( -[a-zA-Z]+)?$),否则留空。
测试
npm test # node test.mjs
用例把插件挂在一个假 ctx 上(不启动 harness、不联网),覆盖 allow / ask / deny 三条路径、请求框架、路由与预算选择、非受审工具与其它预设的放过、skipPatterns、无 agent 的调用、无法解析的回答、传输失败,以及被 timeoutMs 兜住的卡死 review。
已知边界
- 每条被审查的命令多一次模型往返。 高频只读命令也照付;
skipPatterns是唯一的省法。 - 边界命令的判定不确定。 同一条命令这次
allow、下次ask都可能。要硬规则就改reviewSystem()里的规则(例如:读取工作区之外的任何路径一律ask)。 - 审查者只看到一条命令,看不到对话。 只在会话历史里才能看出的意图它无法判断,所以"用途与命令不符"只能靠命令自身暴露。
- 只审查 shell 工具。 文件写入类工具交给文件沙箱与文件观察策略约束。
- 决策记录在 stderr(
[auto-review] <decision>: <command> — <reason>),没有单独的持久化会话事件类型。
许可
MIT © 2026 Guangda Liu
原始 README: https://github.com/bingps/dsh-plugin-auto-review/blob/main/README.zh.md ↗
同类插件
查看全部 →
dsh-anchored-standard
两阶段 DeepSeek Harness 预设:先 Minimal 对齐的 bootstrap,再切完整 Standard 工具(Project2 98/99)

PicGo-Core
极致的图片上传引擎,CLI 与 API 双支持

awesome-deepseek-harness
DeepSeek Harness(DSH)及其优秀社区插件的精选指南。

awesome-deepseek-harness
DeepSeek Harness (DSH)生态系统:来自dsh-external/hub和公共dsh-plugin主题的精选插件、工具和基础设施。

AI-Novel-Writer
本地优先 AI 小说创作工作台,提供 Windows/macOS 桌面版与 DeepSeek Harness 插件开发预览,支持角色、大纲、章节蓝图、审稿修稿和本地模型。

mcp-for-stata
MCP-for-Stata:把 Stata 集成进你的 agent