DeepSeek Harness Hub
← 返回列表

qingfengyu153781-star/dsh-approval-popup

DeepSeek Harnessspec-screened在 GitHub 查看 ↗
未验证

用于 DeepSeek Harness DSH 审批请求的原生 Windows…

尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/8/15 · 已提供中文文档

# DeepSeek Harness (DSH) 审批请求 + 回合结束通知的原生 Windows 弹出对话框

综合分
27.4
GitHub 分
27.4
用户评分
★ Stars
1
周下载量
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add qingfengyu153781-star/dsh-approval-popup
该插件未发布到 npm,走 GitHub 源安装(pnpm 若拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑)
数据截至 2026/9/17(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

dsh-approval-popup

用于 DeepSeek Harness (DSH) 审批请求的原生 Windows 弹窗对话框——通过桌面对话框批准或拒绝沙箱提权、文件写入和 shell 命令,而无需使用 Web GUI。当 agent 的一轮任务完成时,可选弹出 “任务完成” 提示。

Windows 原生弹窗插件:DSH 需要批准(沙箱提权、写文件、执行命令等)时,直接弹出桌面对话框点「是 / 否」,不用再切回 Web 界面操作;任务完成时还会弹出提醒。

✨ 功能特性

- 原生是/否对话框 —— 是(Y) / 否(N) 按钮,始终置顶,居中显示。
- 全局回车批准热键 —— 在桌面任意位置按回车即可批准(可开关)。
- 带可配置操作的超时 —— N 秒内未做选择 → 自动批准(默认)、自动拒绝,或回退到 Web GUI(allow / reject / next)。
- 轮次完成弹窗 —— 当 agent 的一轮任务完成时显示非决策性提示,自动关闭,并做了防抖处理,因此连续多轮任务不会堆叠窗口。
- 前置应答器 —— 在 Web UI 应答器之前运行;一旦做出具体选择就会短路整个瀑布流。
- 审计日志 —— 每个请求/结果都会追加到 ~/.dsh/approval-popup.log。
- 零依赖 —— 纯 ESM + 两个 PowerShell 辅助脚本;无需 npm install,无需构建步骤。

📋 环境要求

| 要求 | 详情 |
|---|---|
| 操作系统 | 仅限 Windows(PowerShell/WinForms 对话框)。在其他平台上该插件不执行任何操作。 |
| PowerShell | 5.1+(Windows 内置)。 |
| DSH | 任意较新版本(dsh web 或桌面应用)。已在 0.1.0-rc.5 上测试。 |
| Profile | web profile(默认)。 |

🚀 安装

方式 A —— 一键安装脚本(推荐)

clone anywhere, then:
powershell -ExecutionPolicy Bypass -File .\install.ps1

它会执行以下操作:

1. 将 index.mjs + 三个 .ps1 辅助脚本复制到 %USERPROFILE%\.dsh\plugins\approval-popup\。
2. 向 %USERPROFILE%\.dsh\profiles\web\cordis.patch.yml 追加一条 insert 条目(幂等——重复运行不会产生重复项)。
3. 打印后续步骤。

然后重启 dsh(退出并重新启动 dsh web / 桌面应用),对话框即可生效。

方式 B —— 手动安装

1. copy the plugin folder into the DSH plugins directory
Copy-Item -Recurse . "$env:USERPROFILE\.dsh\plugins\approval-popup"

2. edit %USERPROFILE%\.dsh\profiles\web\cordis.patch.yml and add:
- insert:
- id: approval-popup
name: 'file:///C:/Users//.dsh/plugins/approval-popup/index.mjs'

3. restart dsh web

⚙️ 配置

所有选项均为环境变量,在插件启动时读取一次(请在启动 dsh 之前设置它们,例如在系统设置或启动脚本中):

| 变量 | 默认值 | 描述 |
|---|---|---|
| DSH_APPROVAL_POPUP | 1 | 设为 0 可禁用整个插件。 |
| DSH_APPROVAL_ENTER | 1 | 设为 0 可禁用全局回车热键。 |
| DSH_APPROVAL_TIMEOUT_MS | 15000 | 对话框超时时间(毫秒)。0 = 永久等待。 |
| DSH_APPROVAL_TIMEOUT_ACTION | allow | 超时时:allow(自动批准)、reject(自动拒绝)或 next(回退到 Web GUI)。 |
| DSH_TURN_DONE_POPUP | 1 | 设为 0 可禁用回合结束弹窗。 |
| DSH_TURN_DONE_TIMEOUT_MS | 30000 | 回合结束弹窗自动关闭时间(毫秒)。 |
| DSH_TURN_DONE_COOLDOWN_MS | 5000 | 两次通知之间的最小间隔;防止回合集中结束时弹窗堆叠。 |
| DSH_APPROVAL_POPUP_LOG | ~/.dsh/approval-popup.log | 调试日志路径(空字符串禁用日志记录)。 |

示例(更严格的策略——默认拒绝):

$env:DSH_APPROVAL_TIMEOUT_MS = 20000
$env:DSH_APPROVAL_TIMEOUT_ACTION = "reject"

🗑 卸载

Remove-Item -Recurse -Force "$env:USERPROFILE\.dsh\plugins\approval-popup"
then remove the approval-popup entry from %USERPROFILE%\.dsh\profiles\web\cordis.patch.yml
and restart dsh

🔍 故障排查

- 没有出现对话框,但请求被自动批准 —— 插件正在生效,但 PowerShell 辅助程序无法显示 UI(例如以服务/无头会话运行)。检查 ~/.dsh/approval-popup.log;考虑设置 DSH_APPROVAL_TIMEOUT_ACTION=reject 或 DSH_APPROVAL_POPUP=0。
- 对话框文字乱码 —— .ps1 文件必须保持 带 BOM 的 UTF-8(否则 PowerShell 5.1 会按 ANSI 读取)。不要将它们重新保存为纯 UTF-8。
- 想要其他语言的对话框 —— UI 字符串位于 index.mjs(标题/正文)以及 approval-dialog.ps1 / turn-done.ps1(按钮标签)中。编辑后重新运行 install.ps1。
- 需要纯 toast 提示而非对话框 —— approval-toast.ps1 是一个使用 WScript.Shell.Popup 的独立辅助程序;可从任意脚本调用:powershell -File .\approval-toast.ps1 -Title "hi" -Text "hello"。

🔒 安全说明

- 该插件是一个受信任的本地辅助程序:对话框在超时后默认批准,这样长时间运行的代理在你离开时不会被阻塞。如果你倾向于失败即关闭,请设置 DSH_APPROVAL_TIMEOUT_ACTION=reject。
- Enter 热键是全局的(通过 RegisterHotKey 注册)——对话框打开期间,任何获得焦点的应用的 Enter 键都会批准。如果这让你感到意外,可用 DSH_APPROVAL_ENTER=0 禁用。
- 只从你信任的来源安装该插件:它可以决定 DSH 发出的每一个批准请求。

🧩 文件

| 文件 | 用途 |
|---|---|
| index.mjs | Cordis 插件入口:应答器 + 回合结束弹窗、配置、日志记录。 |
| approval-dialog.ps1 | 是/否对话框(WinForms),带全局 Enter 热键和超时。 |
| turn-done.ps1 | “任务已完成”通知对话框,自动关闭。 |
| approval-toast.ps1 | 独立 toast 辅助程序(WScript.Shell.Popup),可选。 |
| install.ps1 | 一键安装程序:复制文件 + 修补 cordis.patch.yml。 |

📄 许可证

MIT

dsh-approval-popup(中文说明)

✨ 功能

- 原生是/否弹窗:置顶、居中,「是(Y) / 否(N)」两个按钮。
- 全局回车快捷键:弹窗打开期间,在桌面任意位置按 Enter 即批准(可关闭)。
- 超时自动处理:N 秒无操作后自动「同意」(默认)/「拒绝」/「退回 Web 界面」(allow / reject / next)。
- 任务完成提醒:一轮任务完成时弹出非决策提醒窗,自动关闭;带防抖,多轮同时结束时不会叠窗。
- 优先应答:注册为 prepend answerer,先于 Web 界面处理批准请求。
- 审计日志:每次请求与结果追加写入 ~/.dsh/approval-popup.log。
- 零依赖:纯 ESM + 两个 PowerShell 脚本,无需 npm 安装与构建。

📋 环境要求

| 要求 | 说明 |
|---|---|
| 系统 | 仅 Windows(基于 PowerShell/WinForms 弹窗),其他平台自动跳过。 |
| PowerShell | 5.1+(Windows 自带)。 |
| DSH | 任意近期版本(dsh web 或桌面应用),已在 0.1.0-rc.5 验证。 |
| 配置档 | web profile(默认)。 |

🚀 安装

方式 A:一键安装(推荐)

克隆本仓库后,在仓库目录执行:
powershell -ExecutionPolicy Bypass -File .\install.ps1

脚本会:

1. 把 index.mjs 和三个 .ps1 辅助脚本复制到 %USERPROFILE%\.dsh\plugins\approval-popup\。
2. 在 %USERPROFILE%\.dsh\profiles\web\cordis.patch.yml 中追加 insert 条目(幂等,重复执行不会产生重复条目)。
3. 输出后续步骤提示。

然后重启 dsh(退出并重新启动 dsh web / 桌面应用)即可生效。

方式 B:手动安装

1. 复制插件目录到 DSH 插件目录
Copy-Item -Recurse . "$env:USERPROFILE\.dsh\plugins\approval-popup"

2. 编辑 %USERPROFILE%\.dsh\profiles\web\cordis.patch.yml,添加:
- insert:
- id: approval-popup
name: 'file:///C:/Users//.dsh/plugins/approval-popup/index.mjs'

3. 重启 dsh web

⚙️ 配置项

均为环境变量,插件启动时读取一次(在启动 dsh 前设置):

| 变量 | 默认值 | 说明 |
|---|---|---|
| DSH_APPROVAL_POPUP | 1 | 设为 0 关闭整个插件。 |
| DSH_APPROVAL_ENTER | 1 | 设为 0 关闭全局回车快捷键。 |
| DSH_APPROVAL_TIMEOUT_MS | 15000 | 弹窗超时毫秒数;0 为一直等待。 |
| DSH_APPROVAL_TIMEOUT_ACTION | allow | 超时行为:allow(自动同意)/ reject(自动拒绝)/ next(退回 Web 界面)。 |
| DSH_TURN_DONE_POPUP | 1 | 设为 0 关闭任务完成弹窗。 |
| DSH_TURN_DONE_TIMEOUT_MS | 30000 | 任务完成弹窗自动关闭毫秒数。 |
| DSH_TURN_DONE_COOLDOWN_MS | 5000 | 两次提醒的最小间隔,防止多轮结束时叠窗。 |
| DSH_APPROVAL_POPUP_LOG | ~/.dsh/approval-popup.log | 调试日志路径(空字符串关闭日志)。 |

示例(更严格策略,默认拒绝):

$env:DSH_APPROVAL_TIMEOUT_MS = 20000
$env:DSH_APPROVAL_TIMEOUT_ACTION = "reject"

🗑 卸载

Remove-Item -Recurse -Force "$env:USERPROFILE\.dsh\plugins\approval-popup"
再从 %USERPROFILE%\.dsh\profiles\web\cordis.patch.yml 中删除 approval-popup 条目
最后重启 dsh

🔍 常见问题

- 不弹窗但请求被自动批准 — 插件已生效,但 PowerShell 无法弹出 UI(如以服务/无桌面会话运行)。查看 ~/.dsh/approval-popup.log;可改用 DSH_APPROVAL_TIMEOUT_ACTION=reject 或 DSH_APPROVAL_POPUP=0。
- 弹窗文字乱码 — .ps1 文件必须保持 UTF-8 带 BOM(PowerShell 5.1 默认按 ANSI 读取),不要另存为无 BOM 的 UTF-8。
- 想换语言 — UI 文案在 index.mjs(标题/正文)和 approval-dialog.ps1 / turn-done.ps1(按钮文字)中,改完重新执行 install.ps1。
- 只需要普通 toast — approval-toast.ps1 是独立的 WScript.Shell.Popup 助手:powershell -File .\approval-toast.ps1 -Title "hi" -Text "hello"。

🔒 安全说明

- 这是受信任的本地助手:超时默认自动同意,避免你离开时长时间任务被卡住。希望默认拒绝请设置 DSH_APPROVAL_TIMEOUT_ACTION=reject。
- Enter 是全局热键(RegisterHotKey),弹窗打开期间任何应用的 Enter 都会批准。介意的话设置 DSH_APPROVAL_ENTER=0。
- 只从可信来源安装:它能决定 DSH 的每一个批准请求。

🧩 文件

| 文件 | 作用 |
|---|---|
| index.mjs | Cordis 插件入口:批准应答器 + 任务完成弹窗、配置、日志。 |
| approval-dialog.ps1 | 是/否弹窗(WinForms),支持全局回车与超时。 |
| turn-done.ps1 | 「任务完成」提醒窗,自动关闭。 |
| approval-toast.ps1 | 独立 toast 助手(WScript.Shell.Popup),可选。 |
| install.ps1 | 一键安装:复制文件 + 写入 cordis.patch.yml。 |

📄 许可证

MIT

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

💬 加入 DPharness 群聊

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

点击加入 QQ 群
DPharness 群聊二维码,手机 QQ 扫码进群
扫码进群