前言¶
DeepSeek Harness(DSH)在工具需要提权时会发出 approval/request:这条请求沿瀑布链传递,链末端若无人应答就等同于拒绝。实际开发里,同类审批插件思路不一——有的让模型直接 deny,有的只在特定预设或挂载点生效,有的审批弹完就无处可查。
下面介绍社区插件 dsh-review-hub(显示名「明镜」,仓库 FMR5487/dsh-review-hub)。它把自己注册为 approval/request 上唯一的裁决者(answerer),用确定性规则在前、小模型预审在后,并把每条决定的归属写成事实(ai / memory / human / external / fallback),同时提供审批时间线、右侧栏 diff/撤销与台账导出。分类为 admin-security;维护者为 FMR5487。
这是什么¶
明镜是给 DSH 加的一层「审批大脑」:能自动放的按规则自动放,该问人的才拦截到人工;事后可在 UI 里查历史、看 diff、导出记录。
与官方实验性 auto-review(tools/pre-execute、仅 AUTO 预设)或 dsh-auto-approve(sandboxed-auto 预设、主要裁 escalation)不同,明镜挂在整条审批链的回答端,任意预设下只要走到审批,都过同一套四层决策链(外加最终人工)。
宿主要求(见 package.json):dsh >= 0.2.1-rc.1 且 < 1.0.0-0,node >= 22.13。当前包版本 1.0.35,许可证 MIT。
决策链:确定性优先¶
一次 approval/request 按固定顺序过四道关,先命中者负责,后续层不再参与:
- L0 硬风险 — 删目录、
git reset --hard、凭据、远程执行、改系统、批量破坏等:不进 AI、不计入记忆、永不自动放行,直接问人。 - 记忆 — 本会话内同一条无害操作由你亲手批准满阈值(默认 3 次)后自动放行;换会话重新计数。
- 文件级(需显式开启)— 某文件人工批准次数 ≥ 阈值时自动放行。
- AI 预审 — 约 300–500 tokens 的小模型调用,只允许
allow或ask;没有否决权,模型拿不准就交给人。
设计要点:规则能判的不交给模型;AI 预审默认覆盖 dsh-ops 的 ops_bash、只读类 ops_* 与 job_output / job_list 等,其它如 write / edit 走记忆档,plugin_manager 等默认直接人工——可在插件页「高级设置 → 先交给 AI 的工具 / 不交给 AI 的工具」中增减。
送审内容是脱敏摘要(约 ≤240 字符,密钥字段与 sk- 等会 redact);凭据类路径连摘要也不给。相对同类实现,明镜强调:记忆只累计人工批准次数;审查失败转人工而非 fail-closed 直接拒执行。
界面与台账¶
装好客户端注入后,常见能力包括:
- 输入框上方淡色卡片:AI 通过 / 记忆通过 / 待审批;其它会话有审批时显示灰色聚合卡。
- 对话顶部「审批」标签:完整时间线(工具、归属、理由、参数、耗时、记忆进度),支持检索;新审批有红点与「以上为新增审批」分隔。
- 右侧栏「改动」:查看单次调用的 diff,支持一键撤销(连点两次确认,3 秒未确认作废)。
- 待你决策时,提示与系统通知会展示 AI 意见(例如风险档位与理由);另有悬浮卡避免被宿主原生审批面板遮挡。
- 台账可导出 CSV / JSON,按会话或全部。
卸载时仅摘下 answerer,预设与本地数据不由插件擅自改动(与部分会先切预设的 auto-review 类插件行为不同)。
安装与启用¶
明镜不通过随意的 dsh plugin add github:… 一句话安装;README 要求写入 profile(例如 ~/.dsh/profiles/desktop),以 link 方式挂本地仓库,并保证它是唯一应答 approval/request 的审批插件。步骤概要如下:
- 在 profile 的
package.json的dependencies中加入:
"dsh-review-hub": "link:<本仓库路径>"
-
在
bundles数组中加入dsh-review-hub,并移除其它会作答approval/request的审批插件(纯通知类可保留,但需确认不会抢答)。 -
使用 DSH 自带的 pnpm 执行
install --lockfile-only(不要做会清掉原生模块构建的全量 install)。 -
建立 junction:
node_modules/dsh-review-hub→ 本仓库目录。 -
检查
cordis.patch.yml:带name:的旧补丁行可能在 bundle 删除后仍将插件挂回,需人工核对。 -
重启宿主(服务端加载时绑定;客户端刷新页面)。
更细的踩坑说明见仓库内 README-AI.md 与 AGENT.md。
日常设置¶
入口在对话顶部「审批」标签页内的「设置」,包括:是否启用 AI 审查、审查模型(provider/模型两级下拉,默认跟随会话)、记忆自动通过、放行阈值、提示卡、卡片停留时长、系统通知等。审查模型列表来自宿主 llm.listProviders() 与各 provider 的 listModels();若宿主未接 LLM,目录可能为空。
成本方面插件侧有 60 秒窗口预算、连续失败熔断(约 5 分钟)、指纹级裁决缓存(TTL 可调)等护栏(详见 README 与同类对比表)。
适用场景与注意¶
适合谁:需要在中高权限 DSH 会话里统一审批入口、希望「危险操作必过人、重复无害操作可学习放行、其余由廉价模型预审」、且要可审计归属与 diff/撤销的开发者或团队。
注意:
- 插件以当前 DSH 进程权限运行;安装前请阅读源码与 MIT 许可证,确认与组织安全策略一致。
- 同时启用官方
@deepseek-ai/dsh-experimental-auto-review、dsh-auto-approve等时挂载点不同,可共存,但要理解否决权与学习数据存放方式的差异(README 有横向对比表,核对日期以当时 npm/GitHub 为准)。 - 社区目录页:skillhub.cn 上的 dsh-review-hub 为独立生态索引,与 DeepSeek / 幻方无官方从属关系。
结尾¶
经过上面的步骤,明镜把 DSH 的 approval/request 收成一条「硬风险 → 记忆 → 可选文件级 → AI 预审 → 人工」的链,并把「谁放的」写进台账与 UI,而不是事后猜测。若要自己改代码或给 Agent 读的开发说明,仓库还提供 README-AI.md、AGENT.md 与英文 README-EN.md。
- 目录页:https://www.skillhub.cn/plugins/FMR5487/dsh-review-hub
- GitHub:https://github.com/FMR5487/dsh-review-hub