前言¶
在 DeepSeek Harness(DSH)中,bash、pwsh、write、edit 等工具调用会进入 DSH 的 approval/request waterfall。DSH 本身继续拥有 Read Only、Workspace Write 和 Full access 三种访问权限;dsh-smart-approval 在这旁边增加一个独立的自动审批选择器,把“能不能访问”和“是否自动批准某次请求”分开。
dsh-smart-approval 是 TingRuDeng 维护的 DSH 插件,定位为 Fail-closed LLM-assisted approval reviewer for DeepSeek Harness。License 为 MIT。
核心能力¶
下面介绍与审批边界相关的能力。
- 在 Web 界面中,访问权限选择器旁边会出现独立的自动审批选择器。
- 支持
Manual approval、Smart approval(recommended default)和Unattended三种 review mode。 - 新会话默认使用
smart。 - 自动审批只处理已经进入 DSH
approval/requestwaterfall 的请求,不会扩大当前访问权限,也不会把会话切换到Full access。 - 切换 review mode 或访问权限都会作用于下一次 approval request,不需要重启 DSH。
- 对
bash、pwsh、write、edit使用 closed adapters;未知工具 fail closed。 - 模型分类只返回
riskLevel、authorization、intent和reasonCode,不能直接授权。 - 成功分类只产生
allowed-once;下一次类似请求仍会重新审查。
审批时会检查什么¶
1、插件在 DSH 的 approval/request waterfall 中处理请求,并针对 bash、pwsh、write、edit 使用 closed adapters。未知工具 fail closed。
2、上下文使用当前 turn 和有边界的最近 direct-user text,并移除模型编写的描述和理由。
3、文件变更使用 DSH filesystem service 获取 read-only evidence,并阻断 final symlinks、canonical path aliases、malformed metadata、sensitive paths 和 protected system locations。
4、确定性检查覆盖 credential material、destructive commands、system changes、background work、dependency installation、publishing、remote writes、uploads,以及 sensitive workspace/workdir conditions。
5、模型输出严格的四字段分类:riskLevel、authorization、intent 和 reasonCode。它不能直接授权,成功分类也只得到一次性的 allowed-once。
安装与验证¶
先确认环境:
- Node.js 24 or later
- DeepSeek Harness
>=0.1.2-alpha.1 <0.2.0 pnpmon PATH
DSH 接受 exact plugin version。截至 2026-09-03,README 候选安装使用:
dsh plugin --profile web add dsh-smart-approval@0.1.0-rc.11
安装后 dump 当前 profile 配置:
dsh --profile web --dump-config
结果中应包含 dsh-smart-approval bundle 和 smart-approval plugin row。访问权限配置仍应只包含 DSH 原生的 Read Only、Workspace Write、Full access;Web 启动后,自动审批选择器应独立显示在访问权限旁边。
其他安装方式¶
一次执行时:
npx @deepseek-ai/dsh plugin --profile web add dsh-smart-approval@0.1.0-rc.11
npx @deepseek-ai/dsh --profile web --dump-config
从插件 checkout 安装:
dsh plugin --profile web add .
从 DeepSeek Harness source checkout 执行:
pnpm dsh plugin --profile web add .
pnpm dsh --profile web --dump-config
Pin 一个已审查的 GitHub commit:
dsh plugin --profile web add github:TingRuDeng/dsh-smart-approval#<commit-sha>
注意 npm dsh ... 不是有效 npm 命令。已有全局安装时用 dsh ...;一次执行用 npx @deepseek-ai/dsh ...;从 DeepSeek Harness source checkout 用 pnpm dsh ...。
Git 安装时的 build 权限¶
Git dependencies 会运行这个 package 的 prepare build。pnpm 10 及以后默认 block dependency build scripts。首次 Git install 时,按 DSH 提示把 exact package name 添加到该 profile 的 pnpm-workspace.yaml allowBuilds,review source,然后重试。Registry packages 已包含 built output,不需要这个权限。
典型用法¶
在 Web 中可以使用独立的自动审批选择器;也可以在当前会话运行:
/approval-mode manual
/approval-mode smart
/approval-mode unattended
不带参数查看当前模式:
/approval-mode
查看自动决策日志:
/approval-log
/approval-log 30
/approval-log 默认列出 latest 10;指定 30 则列出 latest 30。每行只显示 time、tool、outcome、reason code 和 review mode;不会包含 arguments 和 model output。设置 decisionLogSize: 0 可禁用 audit。
配置¶
当前 session route 默认执行 review。若要使用独立 route,可在 profile 的 cordis.patch.yml 中覆盖 plugin row。未显式选择的会话使用 defaultMode,默认值为 smart。
适用场景与注意¶
- 适合需要在 DSH Web 中保留
Manual approval、默认Smart approval或Unattended的开发者。 - 本项目和 DSH 都在 developer preview;在 reproducible environments 中应 pin exact versions。
- 插件以当前 DSH 进程权限运行;安装前应先检查源码、许可证和版本。
- 自动审批不会扩大 DSH 访问权限,也不会将 session 切换到
Full access。 - 未知工具 fail closed;确定性检查和 filesystem evidence 会阻断高风险文件路径与危险操作。
- 审计日志只保留 time、tool、outcome、reason code、review mode,不保留参数和模型输出。
链接¶
- GitHub 仓库:
https://github.com/TingRuDeng/dsh-smart-approval - 目录页线索(来自插件线索,README/package 中未直接列出):
https://www.skillhub.cn/plugins/TingRuDeng/dsh-smart-approval
社区目录是独立站点,与 DeepSeek / 幻方无官方从属关系。