DeepSeek Harness plugin

dsh-auto-approval-llm

LLM-assisted auto approval with timeout fallback for DeepSeek Harness

Jump to install

Source facts

Repository
cuddly-guacamole/dsh-auto-approval-llm
Latest update
Aug 22, 2026
Category
Models & Providers
GitHub stars
2
Format
plugin
Catalog evidence
Upstream dsh.bundle evidence
Evidence path
package.json#dsh.bundle
Checked against
0.1.0-rc.8
Upstream check date
2026-08-20

This evidence comes from the upstream catalog. This site has not installed, run, or security-reviewed the plugin.

Install

Start with a prompt that asks an agent to review the GitHub repository and source. Switch to the command if you want to install it yourself.

Copy this prompt into DSH, Codex, or another agent and ask it to review the GitHub repository and source first.

Do not install or run any commands yet. Read this plugin's GitHub repository, README, and relevant source code. Then answer the questions below clearly and directly so I can decide whether it fits my needs:

1. What is this plugin, and what problem does it solve?
2. Who is it for, and what are its typical use cases?
3. How is it used after installation? Include one minimal example.
4. What known limitations or privacy, security, compatibility, or maintenance risks does it have?
5. Give a clear recommendation: recommend, conditionally recommend, or do not recommend, with reasons.

Distinguish statements documented by the repository, inferences from source code, and unknowns. If evidence is insufficient, say so explicitly. Do not guess or simply repeat the README.

GitHub: https://github.com/cuddly-guacamole/dsh-auto-approval-llm
Plugin: dsh-auto-approval-llm
Author: cuddly-guacamole

Check the source files

Read the README and other files from this plugin directory before installing.

File explorer4 files
README.mdSource · read only
README language

@quill507/dsh-auto-approval-llm

> 为 DeepSeek Harness 的 Auto 权限档提供 LLM 辅助自动审批 + 超时自动兜底。

> English: README.en.md

Auto 档 = sandbox: danger-full-access + approval: ask。本插件在 Auto 会话里充当 approval/request唯一终结裁决者:常规操作放行、危险/模糊操作交给「静态规则 → LLM 分类 → LLM/人工裁决 → 倒计时兜底 → 熔断」的自动管线,把「自动但安全」的吞吐做高,同时保证有人工与审计兜底。

---

📖 工作原理详解文档站:<https://cuddly-guacamole.github.io/dsh-auto-approval-llm/>

---

特性

  • 静态规则 + LLM 分类器:只读/会话/工作区常规操作直接放行;危险、外部写、凭据外泄、受保护路径直接拒绝;模糊操作交给 LLM 预分类(tools/guard + tools/pre-execute)。
  • 在线评审模型(可选):填写 API 协议、地址、模型、密钥后,审批复审直接打到你的 OpenAI / Anthropic 兼容端点;密钥存在 DSH 凭据存储里,前端只显示「已配置」,永不回显。
  • 人工倒计时 + 超时兜底:低/中/高三档倒计时(默认 5/8/10 秒);超时按 timeoutAction 处理(拒绝 / 通过 / 低风险自动同意)。关浏览器也不悬挂(host 计时器独裁)。
  • LLM 接管:中风险且 LLM 在倒计时内给出明确结论时,客户端立即按 LLM 结论裁决,无需你点。
  • 熔断:连续 maxConsecutiveDenials 次或累计 maxTotalDenials 次被 LLM 拒绝 → 转人工、不再自动倒计时;/approval reset 可重置。
  • 可靠的历史与审计:内存 200 条 + history.jsonl,append-only audit.jsonl(清空留 tombstone)。
  • 每会话评审模式/approval-mode manual|smart|unattended 持久化;manual 全转人、unattended 自动应答;高风险超时仍转人工/失败关闭
  • 声明式规则rulesText 用 Claude 风格 工具(正则) | allow|deny|human [| 字段] 一眼看懂、实时校验。
  • DSH 原生观感的设置卡:4 张可折叠子卡(计时器与熔断 / 在线评审模型 / 安全规则列表 / 最近审批记录),顶层开关即时保存、每卡独立 保存/放弃/恢复默认;非法配置值有红色横幅 +「尝试修复」。

---

工作方式

工具调用
  → tools.guard        静态硬拒闸门(命中即拒,不弹窗)
  → tools/pre-execute  静态评估:allow 放行 / deny 拒绝 / ask 交给 LLM 分类器
  → approval/request   唯一终结裁决:
       声明规则 rulesText → denyList/allowlist → humanOnlyList → 评审模式 →
       熔断检查 → 风险分档(LOW/MEDIUM/HIGH)→ LLM 复审 + 人工倒计时
  → tools/post-execute 把「超时/规则/模型拒绝」标记喂回模型
  • LOW:不送评审则静默放行;送评审时按 LLM 结论(ALLOW/DENY)直接裁决;LLM 无法决定(ESCALATE)转人工。
  • MEDIUM:弹面板 + 倒计时,同时并行跑 LLM;llmTakeoverScope 覆盖且 LLM 给出明确结论 → 立即跟随;否则只显示建议。
  • HIGH:弹面板 + 倒计时,LLM 只给建议不接管;超时严格按 timeoutAction(unattended 下 HIGH 超时仍转人工/失败关闭)。
  • 所有「需要人」的场景都委托官方面板显示倒计时;超时标记唯一作者是 host 计时器,客户端只上报 outcome,伪造不了。

---

安装

已发布 npm(@quill507/dsh-auto-approval-llm),直接安装:

dsh plugin --profile web add @quill507/dsh-auto-approval-llm

本地开发构建 / 注入(dsh-super-injector 环境):

> 提示:本插件依赖 DSH 的 auto 权限预设(danger-full-access + approval: ask),并作为 approval/request 的唯一终结者——不要与其他审批类插件(如 dsh-approval-llm / dsh-auto-review)同时启用

---

快速开始

1. 确保会话/预设处于 Auto 档auto 预设)。 2. 到 设置 → 插件 → 自动审批,按需配置;默认即可工作(空配置 = 静态规则 + 会话模型评审 + 拒绝式超时兜底)。 3. 想让审批走你自己的模型:在「在线评审模型」卡填 协议 / API 地址 / 模型名称 / API 密钥 → 保存 → 测试连接。 4. 嫌中风险弹窗频繁或超时漏拦:调大「中风险倒计时」,或把「超时动作」改为 拒绝 / 低风险自动同意

> 📚 工作原理详解文档站:<https://cuddly-guacamole.github.io/dsh-auto-approval-llm/>

---

界面预览

在 Auto 权限预设下使用(设置 → 通用设置 → 权限 → Auto;Read Only / Workspace Write / Auto / Full access):

![Auto 权限预设](assets/permission-auto-preset.png)

设置卡总览——顶层开关即时保存,右侧为可折叠子卡:

![设置卡总览](assets/settings-overview.png)

计时器与熔断——三档倒计时、熔断防劫持与双熔断阈值:

![计时器与熔断](assets/settings-timers-breaker.png)

在线评审模型——API 协议 / 地址 / 模型 / 密钥(密钥前端不可见):

![在线评审模型](assets/settings-online-reviewer.png)

安全规则列表——安全 Prompt / 白黑名单 / 声明规则 / 规则干跑:

![安全规则列表](assets/settings-safety-rules.png)

审批面板——倒计时贴在超时自动执行的动作上(此处 超时动作=低风险自动同意 → 中风险超时自动拒绝,「拒绝」按钮带倒计时、「允许一次」保持干净):

![审批面板 · 拒绝倒计时](assets/approval-panel-countdown-reject.png)

会话审批统计——会话标题栏「自动审批」按钮弹层:总计/通过/拒绝/超时/熔断 + 最近记录:

![会话审批统计](assets/session-stats.png)

---

配置项

默认说明
enabledtrue总开关
autoSwitchPolicyToAskfalse仅 Auto 预设且 override=never 时自动切 ask
timeoutActionreject倒计时超时动作:reject 拒绝 / allow 全部通过 / low-risk-allow 仅低风险放行
llmReviewScopelow-or-aboveLOW/MEDIUM/HIGH 哪些档送 LLM 复审
llmTakeoverScopemedium-or-below哪些档允许 LLM 结论直接接管
defaultReviewModesmart每会话评审模式默认:人工 / 智能 / 无人值守
lowRiskSeconds / mediumRiskSeconds / highRiskSeconds5 / 8 / 10三档倒计时(秒)
breakerAntiHijackMs0熔断弹窗按钮防误点禁用时长,0 不启用
maxConsecutiveDenials3连续 LLM 拒绝熔断阈值,0 关闭
maxTotalDenials20累计拒绝熔断阈值,0 关闭
reviewerProtocolopenai在线评审协议:openai(chat/completions) / anthropic(messages)
reviewerBaseUrl''在线评审 API 地址;非空才走在线评审,空则跟随会话模型
reviewerModel(+旧 reviewerProvider''在线评审模型名(旧 Provider 路由保留兼容,不再 UI 暴露)
safetyPrompt''附加给评审模型的额外策略(保存即热生效)
allowlist / denyList / humanOnlyList[]工具名精确匹配
rulesText''声明式规则(优先于内置列表执行)
rulesDryRunfalse规则干跑:只记命中不执法
maxArgsChars4000取回工具参数的最大长度
notifyUsertrue「模型通过」通知进会话
showSessionPaneloff会话标题栏按钮:关 / 仅Auto / 开
aiButtonPositionheader按钮位置:标题栏 / 悬浮
workspaceRoot / dshHome / tempRoots''/''/[]路径根(DSH_HOME 默认保护)
classifierTimeoutMs / classifierMaxOutputTokens8000 / 1024分类器超时与输出上限
debugfalse调试模式:写 approval-debug.jsonl[debug] 日志

> 顶层开关(启用/切换策略/超时动作/评审·接管范围/默认模式/按钮显示与位置)改动即保存;每张子卡有独立的 保存/放弃修改 按钮(安全规则列表另有 恢复默认)。host-only 键(workspaceRoot 等)用 patch/YAML 配置,设置卡保存不会抹掉它们。

---

评审模式与命令

  • /approval-mode 查看当前会话评审模式
  • /approval-mode manual|smart|unattended 设置(持久化)
  • /approval reset 重置熔断计数与在途审批状态

---

数据文件(均在插件根目录)

文件语义
history.jsonl审批历史(内存窗口 200 条 + 落盘;>1MB 轮转)。删除文件不触发重载、不清内存窗口,下一条裁决会自动重建
audit.jsonlappend-only 审计(清空留 clear tombstone)
review-mode.json每会话评审模式快照
approval-debug.jsonl仅调试模式开启时写入:评审/审批时序(decision/risk/tookMs/outcome/source),>1MB 轮转

数据查询:node scripts/audit-query.mjs [--last N|--tool X|--session S|--source S|--since ISO|--json]

---

安全设计要点

  • 唯一终结者:同一 approval 只有一个裁决者(prepend + global),避免双弹窗/双写/审计断裂。
  • fail-closed:评审器超时/垃圾/失败 → 拒绝或转人;ESCALATE 一律转人,不被 timeoutAction=allow 自动放行;reviewer 失败不计入熔断。
  • reasoning-blind:评审只看 工具名 + 结构化脱敏参数 + 有界直接用户消息(唯一授权证据)+ 工作区事实,剥离评审者的自述与工具输出。
  • 密钥不出 host:在线评审密钥存 DSH 凭据,每操作解析、前端仅显「已配置」。
  • 倒计时按钮规则:倒计时只贴在「会超时自动执行」的那个按钮上——timeoutAction=通过 → 超时自动通过,「允许一次」倒计时、拒绝按钮干净;timeoutAction=拒绝 / 低风险自动同意 → 中/高风险超时自动拒绝,「拒绝」按钮倒计时(低风险自动同意时仅低风险超时通过)。中风险默认 8 秒偏紧,建议按需调大。

---

致谢

本项目在设计与实现中参考/移植了以下开源项目,谨此致谢它们的作者与社区:

  • @nanmicoder/dsh-auto-mode —— Auto 档 + 静态规则 → LLM 分类器 → 人工 的核心审批管线:受保护路径、静态评估、shell 安全解析、LLM 预分类等策略移植自该项目,并在 src/auto/ 中重写为独立实现(移除该项目也可正常工作)。
  • @anionex/dsh-vision-toolkit —— 设置界面范式:在线模型(API 协议 / 地址 / 模型 / 密钥,密钥存 DSH 凭据、前端不可见)、红色报错横幅与修复按钮、「复用 DSH 原生 CSS 与 UI primitives」的做法。

---

版本 / 发布