dsh-bsk-daemon:在 DSH 里按需启停 BrowserSkill 的 bsk 守护进程

前言

在 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
羽毛球分组比赛记分
小程序二维码

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

小夜