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

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

小夜