dsh-quiet-browser:让 DSH 内置浏览器不抢前台、不遮挡

前言

在 DeepSeek Harness(DSH)里用内置浏览器加载网页时,工具需要一个真实的 Electron 窗口。默认情况下,这个窗口会顶到最前并抢走键盘焦点,你在别的应用里打字、看文档的流程会被打断。若你只是希望 Agent 在后台照常加载页面、执行脚本或截图,并不想每次都被浏览器窗口「拽」回来,就需要单独处理窗口行为。

dsh-quiet-browser 是社区维护的 DSH 插件,分类为联网工具。它不改动 dsh-builtin-browser 和 DSH 本体,而是在 Windows 上用守护进程监听窗口事件,把标题以 dsh-browser 开头的浏览器窗口压到最底层,并设为不可激活,从而尽量不抢焦点、不遮挡你正在用的窗口。

这是什么

  • 名称:dsh-quiet-browser(仓库 Yyhy110421/dsh-quiet-browser)
  • 维护者:Yyhy110421
  • 定位:DSH 窗口行为插件;内置浏览器继续工作,窗口尽量不盖住前台、不抢键盘焦点
  • 平台:仅 Windows(宿主通过 PowerShell + Win32 API 操作窗口)

社区插件目录见 SkillHub 插件页。目录站与 DeepSeek / 幻方无官方从属关系,安装前建议自行查看仓库源码与 MIT 许可证;插件随当前 DSH 进程权限运行。

核心功能

下面介绍插件在资料中明确写到的能力。

  • 只处理 DSH 浏览器窗口:仅匹配标题以 dsh-browser 开头的窗口,不碰 DSH 主窗口、微信、资源管理器以及你自开的 Chrome / Edge。
  • 功能不因「静默」而失效:窗口仍存在,页面照常加载、点击、执行 JS、截图;截图优先走 CDP,原生 capturePage 失败时会自动回退,资料中写明实测 dsh_browser_screenshot 正常。
  • 不抢焦点:为窗口加上 WS_EX_NOACTIVATE;若浏览器仍抢到前台,守护进程会尝试把上一个用户窗口切回(SetForegroundWindow,失败再试 SwitchToThisWindow)。
  • 不遮挡普通窗口:通过 SetWindowPos(HWND_BOTTOM) 把浏览器压到所有普通窗口下面。
  • 可随时开关:DSH 设置 → 静默浏览,可启用或暂停;暂停后会去掉「不激活」样式,浏览器恢复普通行为,便于手动接管或处理验证码。

安装与启用

先做插件安装,再重启 DSH。

  1. 在 DSH 中打开 设置 → 插件管理器。
  2. 从下列来源之一安装(命令须与仓库 README 一致):
github:Yyhy110421/dsh-quiet-browser

若本机已有仓库副本,也可用本地路径(实体拷贝):

file:<本仓库的绝对路径>
  1. 安装完成后 重启 DSH 生效。

说明:file: 安装是实体拷贝,改源码后需卸载再装才会更新;update 仅支持 npm 注册表插件,本插件不发布到 npm。

配置

配置文件路径:$DSH_HOME/data/quiet-browser.json;未设置 DSH_HOME 时使用 ~/.dsh。

{
  "enabled": true,
  "pollMs": 200
}
  • enabled:是否启用;也可在设置页切换。
  • pollMs:兜底轮询间隔(毫秒,范围 50–5000),默认 200。窗口创建、显示或切前台时由 WinEvent 钩子立即处理,轮询仅作兜底。

工作方式(便于排查)

经过上面的安装步骤后,插件随 DSH 启动隐藏的 PowerShell 守护进程(lib/quiet-browser.ps1),大致流程如下:

  1. 使用 SetWinEventHook 监听前台切换、窗口显示、标题变化。
  2. 命中目标窗口时添加 WS_EX_NOACTIVATE,并调用 SetWindowPos(HWND_BOTTOM)。
  3. 插件卸载或暂停时,守护进程清除 WS_EX_NOACTIVATE,窗口恢复正常。

开发与自测时,可在仓库目录执行(资料原文):

# 查看当前目标窗口与「不激活」状态
powershell.exe -NoProfile -ExecutionPolicy Bypass -File lib/quiet-browser.ps1 -Action status

# 前台运行守护进程(Ctrl+C 退出)
powershell.exe -NoProfile -ExecutionPolicy Bypass -File lib/quiet-browser.ps1 -Action watch -PollMs 100

宿主部分零第三方依赖;窗口操作集中在 lib/quiet-browser.ps1(Add-Type + Win32 API)。

适用场景与注意

适合谁:在 Windows 上长期开着 DSH、频繁让 Agent 用内置浏览器抓页或操作 DOM,又不希望浏览器窗口反复盖住 IDE、终端或聊天窗口的开发者。

已知限制(以 README 为准):

  • 浏览器窗口创建瞬间可能仍有一帧闪动,显示后守护进程会立即压回。
  • 按窗口标题匹配;若有其他程序故意使用 dsh-browser 标题,也会被压到底层。
  • 浏览器被压在最底层后,正常情况下可能被 DSH 主窗口挡住;需要目视页面时,在设置里暂停或等任务结束。
  • 仅 Windows。

结尾

dsh-quiet-browser 用独立守护进程调整 DSH 内置浏览器窗口的 Z 序与激活策略,在不改浏览器工具本身的前提下,减轻「弹窗抢焦点」对日常操作的干扰。需要进一步了解能力、限制与安装方式时,可查阅 SkillHub 目录页 与 GitHub 仓库。

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

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

小夜