dsh-bsk-daemon:讓 BrowserSkill 守護進程與 DSH 共生

前言

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-daemon from https://npm.pkg.github.com with plugin_manager install_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-schema Config)兼容;需要 BrowserSkill 0.3.x。

結尾

dsh-bsk-daemon 將守護進程的生命週期與 DSH 綁定,讓瀏覽器自動化能力在沙箱中更可靠地可用。安裝後,守護進程成爲 DSH 的子進程,隨主進程啓動、停止與重啓,避免權限與連接問題。更多細節可查閱目錄頁與 GitHub 倉庫。

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

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

小夜