dsh-enter-approve:在 Web 端用全局 Enter 批准待处理的授权请求

前言

在 DeepSeek Harness(DSH)里开发智能体时,工具调用、文件访问等操作常会弹出授权确认。官方 UI 组件 @deepseek-ai/dsh-client-ui-approval 在焦点已经落在确认卡片内时,按 Enter 可以批准;但面板接管 composer 后,焦点往往落在 document.body 上,此时 Enter 没有反应,需要先点卡片或 Tab 进面板。若你习惯 Codex 一类产品里「有待办确认时,焦点在哪都能 Enter 批准」的交互,这个缺口会反复打断操作节奏。社区插件 dsh-enter-approve(维护者 mad-zero-mess,分类 admin-security)专门补上这一步:在 Web 配置下,对可见的待处理授权请求,在合适条件下用裸 Enter 触发批准,而不必先移焦点。

这是什么

dsh-enter-approve 是面向 DSH Web 客户端的社区插件(package.json 中 dsh.client.platform 为 web)。它不修改 DSH 核心文件,而是通过文档化的 window.__ModuleLoader__ 客户端契约和与其他社区插件相同的 dsh.bundle.patch 注入一段约 90 行的 client/client.js:在 document 上注册 capture 阶段的 keydown 监听,在「焦点不在确认面板内、但界面上确有可见待办」时,代点批准按钮;若焦点已在面板内,则立刻退出,交给官方处理器,行为与未装插件时一致。

官方 UI 与插件的分工

官方批准组件在 React 树里处理按键,并带有「事件须 originated 于面板内」一类的守卫(README 引用了类似 event.currentTarget.contains(document.activeElement) 的判断)。合成事件沿 React 树分发,焦点在 body 上时 Enter 到不了面板内的 handler。插件只在「原生路径已失效」的那一种情况下介入:全局捕获 Enter,再点击操作行里最后一个仍启用的、且文案不是已知「拒绝」标签的控件,以降低误点拒绝的风险。

核心行为(已核实)

情况 结果
有待办,焦点在面板外 Enter 批准
有待办,焦点已在面板内 官方逻辑不变
正在 input / textarea / select / contenteditable 中输入 不拦截
IME 组字进行中 不拦截
Enter 带 Ctrl / Alt / Shift / Meta 不拦截
提示已在应答(aria-busy) 忽略
其他会话的隐藏提示 忽略
Esc 从不拦截

判定「是否该出手」时还会排除自动连按(auto-repeat)。插件不能替你执行任意命令或读文件,只能在已有可见待处理授权的前提下,模拟点击批准控件。

安装与启用

要求 DSH 版本满足 engines.dsh:>=0.2.0-rc.2(见仓库 package.json)。安装命令以 README 为准:

dsh plugin --profile web add dsh-enter-approve

重启宿主进程后,在 Settings → Plugins 中确认出现该插件条目。卸载:

dsh plugin --profile web remove dsh-enter-approve

禁用插件即可恢复 stock 行为,不会在磁盘上改写 DSH 本体文件。

典型用法

  1. 在 Web profile 下安装并重启 DSH。
  2. 触发一次需要用户批准的操作(例如工具权限),使授权卡片以 composer takeover 形式出现。
  3. 不要点击卡片、也不要 Tab 进面板;在不在文本框内的状态下按一次 Enter(无修饰键),应等同于点击批准。
  4. 若你已在卡片内操作,或正在输入框里打字,行为应与未安装插件时相同。

没有额外配置文件;实现集中在 hand-written、无第三方依赖的客户端 bundle。

适用场景与注意

  • 适合:长期在 DSH Web 端开发、频繁遇到授权弹窗,且希望键盘流与 Codex 式「全局 Enter 批准」一致的用户。
  • 范围:仅 Web profile(--profile web);CLI 或其他 profile 不在该插件声明的客户端平台内。
  • 安全与信任:插件以当前 DSH 进程权限运行,安装前建议在 GitHub 阅读 client/client.js 与许可证(MIT)。它只处理裸 Enter 且仅在有可见待办时点击批准控件;仍属第三方社区扩展,社区目录站点与 DeepSeek / 幻方无官方从属关系,需自行判断是否纳入工作流。

结尾

dsh-enter-approve 用最小客户端补丁,把「焦点不在授权卡片上时 Enter 无效」这一 UX 缺口补上,并与官方 handler 共存:面板内仍走原逻辑,面板外才代点批准。当前版本 0.1.0,仓库星标为 0。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye