前言¶
DeepSeek Harness(DSH)通过 bsk_* 工具暴露浏览器自动化能力,背后依赖一个本地 bsk 守护进程。在沙箱环境中,这个守护进程常被杀掉或无法连接,因为沙箱会回收或禁止子进程。Windows 的 job object 限制子进程脱离,Linux 的 bubblewrap 沙箱会终止子命令。文档建议将守护进程放在持久的主机上下文中,通过本地 IPC 与沙箱通信,这正是 DSH 插件托管守护进程的场景。
插件介绍¶
dsh-bsk-daemon 是一个 DSH bundle,负责管理 BrowserSkill 的 bsk 守护进程。它将守护进程作为 DSH 的子进程运行:与 DSH 同生同灭,崩溃后自动重启(有界),避免与其它守护进程混淆。插件由社区开发者 XFY9326 维护,面向 Windows、macOS 和 Linux,底层使用 Node.js 内置模块(child_process、net、fs、os、path),无需平台分支代码。
核心功能¶
- 生命周期托管:守护进程随 DSH 启动,随 DSH 停止;插件行在 DSH 设置的插件列表中显示为“bsk Daemon Supervisor / bsk 守护进程托管”。
- 崩溃重启:守护进程崩溃后插件会自动重启,并保持有限的重启次数以避免无限循环。
- 进程归属:启动后守护进程的父进程是 DSH 主进程;通过
bsk status --json可验证。 - 跨平台 IPC:Windows 使用命名管道(
\\.\pipe\bsk-daemon-*),macOS/Linux 使用 Unix 域套接字(~/.bsk/run/daemon.sock),插件统一使用net.connect()连接。 - 停止行为:通过
bsk daemon stop命令停止;Windows job object 会在 DSH 被强制终止时回收守护进程;macOS/Linux 在 DSH 正常退出时停止,被强制终止时可能残留,下次启动会探测并复用。
安装与启用¶
从 GitHub Packages 安装:
npm config set @xfy9326:registry https://npm.pkg.github.com
npm config set //npm.pkg.github.com/:_authToken $env:GITHUB_TOKEN
或交互式登录:
npm login --scope=@XFY9326 --registry=https://npm.pkg.github.com
然后在 DSH agent 中安装 bundle:
Install
@xfy9326/dsh-bsk-daemonfromhttps://npm.pkg.github.comwithplugin_managerinstall_bundle.
工具会将依赖写入当前配置文件,应用 bundle 补丁,并返回 application: applied。安装后可在 DSH 设置→插件中看到“bsk Daemon Supervisor / bsk 守护进程托管”行。
从本地 checkout 安装:
git clone https://github.com/XFY9326/dsh-bsk-daemon.git C:\Tools\dsh-bsk-daemon
然后使用 plugin_manager install_bundle 指向该绝对路径。
配置¶
插件在配置中插入一行,无显式配置项,默认值如下:
| Key | Default | Meaning |
|---|---|---|
bskPath |
bsk |
可执行文件名或绝对路径 |
bskHome |
$BSK_HOME 或 ~/.bsk |
daemon.json、IPC 端点和日志所在目录 |
args |
daemon start --foreground --daemon-idle 30d |
传递给 bskPath 的参数 |
如需覆盖,可在安装前编辑插件的 cordis.patch.yml:
- insert:
- id: bsk-daemon
name: '@xfy9326/dsh-bsk-daemon'
config:
bskPath: 'C:\Tools\bsk\bsk.exe'
bskHome: 'C:\Users\me\.bsk'
args: [daemon, start, --foreground, --daemon-idle, 30d]
注意:配置是整体替换;如不希望由 DSH 启动守护进程(例如自行运行共享守护进程),应禁用该行。
验证与用法¶
安装后,通过以下命令验证守护进程状态:
bsk status --json
在 Windows 上检查进程层级:
Get-CimInstance Win32_Process -Filter "Name='bsk.exe'" | Select-Object ProcessId, ParentProcessId, CommandLine
在 macOS/Linux 上:
pgrep -fl 'bsk daemon start --foreground'
查看日志:
Get-Content "$env:USERPROFILE\.bsk\daemon.log.*" -Tail 20 # Windows
tail -n 20 ~/.bsk/daemon.log.* # macOS/Linux
预期结果:一个守护进程,其父进程为 DSH 主进程,监听回环端口(默认 52800),且 daemon.json 中包含 sock_path 与 host_managed: true。
测试生命周期:
# 在插件背后重启守护进程,插件应在几秒内将其拉回
bsk daemon stop --json
Start-Sleep 5
bsk status --json
适用场景与注意¶
- 适合需要在沙箱中安全使用 BrowserSkill 的开发者,尤其是 Windows 沙箱或 Linux
bubblewrap等限制子进程的场景。 - 插件以当前 DSH 进程的权限运行,安装前建议查看源码与许可证。
- 依赖 DSH 0.2.x(带 bundle 支持)和 Node.js >= 22;与 Cordis plugin API 4.x(
ctx.effect、standard-schemaConfig)兼容;需要 BrowserSkill 0.3.x。
结尾¶
dsh-bsk-daemon 将守护进程的生命周期与 DSH 绑定,让浏览器自动化能力在沙箱中更可靠地可用。安装后,守护进程成为 DSH 的子进程,随主进程启动、停止与重启,避免权限与连接问题。更多细节可查阅目录页与 GitHub 仓库。