Memory

dsh-approval-popup

aUsernamecannotbeblank/dsh-approval-popup · ★ 1

aUsernamecannotbeblank

Compact desktop approval card for DeepSeek Harness when the app is minimized or behind another window.

README body is shown in Chinese.

License
MIT
Added
2026-10-30
Maintenance
active
Install kind
github
Manifest details
Manifest status
Declared
Manifest path
package.json#dsh
Manifest checked
2026-10-30T09:38:46.032Z
Lifecycle scripts
None found

Static manifest checks report declarations only; they are not compatibility or security review.

安装

dsh plugin --profile web add 'github:aUsernamecannotbeblank/dsh-approval-popup#4a357aa02e5a901348166fce658ef2469f4429bf'

GitHub 源码安装:首次需按提示配置 allowBuilds 构建授权后重试

For install and environment setup, plus plugin development tutorials, see DSH community docs ↗

README

Source README · body: zh · Read Chinese README

Table of contents
  1. 行为
  2. 安装
  3. 配置
  4. 与 dsh-attention 的关系
  5. 实现

当 DeepSeek Harness 最小化、被其他窗口遮挡或不在前台时,在桌面右下角弹出 一张紧凑的审批卡片,可以直接点「允许」或「拒绝」,不需要切回主窗口。 样式接近 Codex 的桌面审批提示。

审批弹窗预览

行为

  • 仅在 DSH 不处于前台时显示;DSH 在前台时完全交给 Web UI 的审批条。
  • 卡片置顶显示在屏幕右下角,不抢键盘焦点,不闪烁任务栏。
  • 完整展示审批说明,不截断;说明很长时卡片自动增高,超出桌面可用高度则在卡片内滚动,底部的「允许 / 拒绝」始终可见。
  • 只展示工具名和审批说明,不展示命令原文。
  • 鼠标点「允许」→ 返回 allowed-once;点「拒绝」、右上角 ✕ 或按 Esc → 返回 rejected。
  • 倒计时条走完后卡片自动关闭,请求交回 Web UI,不会自动批准。
  • 多个审批同时到达时按顺序逐个显示,避免叠一屏卡片。
  • 请求被取消(AbortSignal)时立即关闭对应卡片。

安装

要求:Windows 10/11,DSH Desktop,系统自带的 PowerShell 5.1。

git clone https://github.com/aUsernamecannotbeblank/dsh-approval-popup.git

在 DSH 的「插件」设置里选择安装本地插件目录;或让 DSH Agent 执行 (把路径换成克隆下来的目录):

plugin_manager install_bundle target=D:\path\to\dsh-approval-popup

安装后本插件会自动挂载,无需重启。卸载后不会残留后台进程。

已在 Windows 11、150% 缩放、DSH Desktop 上实测:DSH 被其他窗口遮挡时, 真实的 pwsh 提权审批会弹出本卡片,点击「允许」后命令继续执行,且只出现 一张卡片(dsh-attention 不会重复弹)。

配置

安装后可在 cordis.patch.yml 的 config 中覆盖以下字段(均有默认值), 修改后重载插件即可生效:

字段 默认值 说明
enabled true 关闭后不再注册审批监听
lang zh zh 或 en
timeoutSec 60 卡片倒计时秒数;0 表示不自动关闭
sound false 弹出时播放系统提示音
focusWindow false 弹出时是否抢占焦点(一般保持 false)
showWhenFocused false 调试用:DSH 在前台时也显示卡片
labels.zh / labels.en 内置 覆盖 heading / allow / deny 文案

与 dsh-attention 的关系

如果同时安装了 dsh-attention,它也会监听审批并弹自己的卡片。本插件以 prepend 方式注册,正常情况下会先拿到请求,dsh-attention 不会再弹第二张卡。

如果仍看到两张卡片,请在 dsh-attention 的配置里把 notifyApproval 设为 false,保留它的提问提醒和完成提醒即可。

实现

  • index.js:宿主侧 Cordis 插件,监听 approval/request,串行拉起卡片进程。
  • scripts/popup.ps1:PowerShell 5.1 + WPF 绘制的无边框卡片,通过环境变量 接收 base64 JSON,stdout 返回 {"decision":"allow"|"deny"|"timeout"}。
  • cordis.patch.yml:把插件插入当前 profile 的默认配置。

卡片只在本地进程间通过环境变量和 stdout 传递,不访问网络,不写入审批历史。