前言¶
在 DeepSeek Harness(DSH)里使用 BrowserSkill 时,本地 bsk 守护进程要么长期驻留(占用数百 MB 内存),要么走按需启动。按需路径在 Windows 上的 DSH 宿主里会失败:宿主运行在禁止子进程脱离的 Job Object 内,首次调用浏览器工具常直接报错 Access is denied. (os error 5),且不易看出原因。
社区插件 dsh-bsk-daemon(维护者 like999888999-ui,分类:联网工具)针对上述场景:在 DSH 内让 bsk 守护进程按需启动、空闲后退出,并在 Windows 上绕过 Job Object 限制。当前版本 0.2.0,MIT 许可证,GitHub 星标为 0。
这是什么¶
dsh-bsk-daemon 是 DSH 桌面 profile 下的 Cordis 插件,不替代 BrowserSkill 本身,而是接管 bsk 守护进程的生命周期。Windows 上通过计划任务与 wake shim 启动守护进程(由 taskeng 拉起,脱离宿主 Job Object);macOS / Linux 上使用普通 detached 进程,无需 shim。空闲约 15 分钟(可配置)后守护进程自动退出,无浏览器调用时不应长期占内存。
核心功能¶
- 按需启停:空闲无驻留;浏览器工具调用时自动唤醒;空闲超时后退出。
- 修复 Windows
os error 5:用bsk-shim.exe与无触发器的计划任务bsk-daemon拥有守护进程,避免 DSH 宿主内 detached spawn 被拒绝。 - Agent 工具:
bsk_status(状态)、bsk_setup(重建 shim 并重新注册任务,幂等)、bsk_wake(手动唤醒)、bsk_stop(立即停止)。 - 非 Windows 平台:仅提供状态与生命周期工具,不创建 shim 或计划任务。
安装与启用¶
插件以当前 DSH 进程权限运行;安装前建议在 GitHub 查看源码与 LICENSE,确认可接受后再加入 profile。
1. 安装本插件
dsh plugin --profile desktop add github:like999888999-ui/dsh-bsk-daemon
2. 若尚未安装 BrowserSkill 的 DSH 插件
dsh plugin --profile desktop add @wxg-prc-cpg/browser-skill-dsh-plugin
3. 完全退出 DSH 后重新启动
首次加载会执行一次 setup:编译 shim 并注册计划任务。随后让 browser-skill 指向 shim——在 profile 的 cordis.patch.yml(例如 ~/.dsh/profiles/desktop/cordis.patch.yml)中增加:
- id: browserskill
config:
bskPath: 'C:\Users\<you>\.local\bin\bsk-shim.exe'
将 <you> 换成实际用户名。再次重启宿主后,浏览器工具调用会透明处理守护进程生命周期。
若不想改 bskPath,可在一批浏览器工作前由 Agent 调用一次 bsk_wake,效果相同,多一步手动唤醒。
环境要求(来自 README):Node.js ≥ 22.13.0;已安装 bsk CLI(见 BrowserSkill 文档);Windows 上 setup 阶段需要系统自带的 .NET Framework 编译器 csc.exe(Windows 8 及以后通常已有)。
典型用法¶
验证安装
请 Agent 调用 bsk_status。健康安装示例(Windows):
{
"platform": "win32",
"strategy": "windows-task",
"bskExists": true,
"shimExists": true,
"taskExists": true,
"running": false,
"pid": null
}
空闲时 running: false 是预期行为。触发一次浏览器调用后应变为 running: true 并带有 pid。
插件自身配置
可在同一 profile 的 cordis.patch.yml 中配置 id: bsk-daemon,或通过设置页修改。常用字段:
| 字段 | 默认值 | 含义 |
|---|---|---|
bskPath |
空(自动探测) | bsk 二进制路径 |
taskName |
bsk-daemon |
计划任务名称 |
daemonIdle |
15m |
守护进程空闲保留时长 |
sessionIdle |
5m |
单会话空闲超时 |
autoSetup |
true |
插件加载时运行 setup |
autoWake |
true |
浏览器工具运行前预热守护进程 |
shimPath |
空(~/.local/bin/bsk-shim.exe) |
shim 输出路径 |
示例:
- id: bsk-daemon
config:
daemonIdle: 30m
autoWake: false
升级 bsk 后若 shim 或任务异常,可调用 bsk_setup 重建。
适用场景与注意¶
适合谁:在 DSH desktop profile 上使用 browser-skill、且希望在 Windows 上避免首次浏览器调用因 os error 5 失败的用户;希望守护进程不长期驻留、接受冷启动约 4–8 秒的用户。
平台差异:Job Object 问题为 Windows 特有;macOS / Linux 上本插件机制基本不用,但工具仍可用。
局限(README 明确列出):不安装 BrowserSkill 的 Chrome/Edge 扩展;Windows 冷启动有延迟;csc.exe 仅在构建 shim 时需要,已生成的 bsk-shim.exe 可独立运行。
排错要点
- 插件已加载但没有
bsk_*工具:0.1.0 曾缺inject: ['tools'],已在 0.1.1 修复;请使用当前发行版。 - 仍出现
os error 5:检查bskPath是否仍指向bsk.exe而非 shim,或计划任务缺失;运行bsk_setup后用bsk_status确认shimExists与taskExists为 true。 - 守护进程不退出:用
bsk_status查看browsers[].session_count,陈旧会话会拖到sessionIdle才释放。
卸载
dsh plugin --profile desktop remove dsh-bsk-daemon
schtasks /Delete /TN bsk-daemon /F
亦可删除 ~/.bsk/ 下的 bsk-daemon-launch.vbs 与 bsk-daemon.xml。
结尾¶
dsh-bsk-daemon 把 BrowserSkill 的 bsk 守护进程放进 DSH 的可控生命周期:Windows 上用计划任务与 shim 解决无法 detached 启动的问题,其它平台提供一致的查询与启停工具。DeepSeek Harness 生态强调「一切皆插件」;社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。
- 目录页:https://www.skillhub.cn/plugins/like999888999-ui/dsh-bsk-daemon
- 源码与文档:https://github.com/like999888999-ui/dsh-bsk-daemon