前言¶
在 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。
- 在 DSH 中打开 设置 → 插件管理器。
- 从下列来源之一安装(命令须与仓库 README 一致):
github:Yyhy110421/dsh-quiet-browser
若本机已有仓库副本,也可用本地路径(实体拷贝):
file:<本仓库的绝对路径>
- 安装完成后 重启 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),大致流程如下:
- 使用
SetWinEventHook监听前台切换、窗口显示、标题变化。 - 命中目标窗口时添加
WS_EX_NOACTIVATE,并调用SetWindowPos(HWND_BOTTOM)。 - 插件卸载或暂停时,守护进程清除
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 仓库。