dsh-browser-bsk:提供 ctx.browser 的 bsk 後端 seam

前言

DeepSeek Harness(DSH)的插件生態遵循“一切皆插件”的理念。部分插件將 browser 作爲可選依賴,卻在 inject 字段中硬聲明瞭它(例如 dsh-accounts)。在 DSH 的啓動流程中,如果名爲 browser 的服務未激活,這些插件會卡在 pending 狀態,導致整個 profile 啓動失敗。

社區中已有提供 browser 服務的方案(如 dsh-builtin-browser),但該方案自帶 Electron,且與正在使用 browser-skill 的用戶存在衝突——兩者都會註冊 browser_session 服務,工具註冊表無法處理重名,會導致整組工具失效。

dsh-browser-bsk 是爲了解決上述衝突而生。它不提供獨立的瀏覽器引擎,而是將本機 browser-skill 使用的 bsk CLI 封裝成 DSH 可注入的 ctx.browser 服務。這意味着它可以與 browser-skill 共存,複用現有的 daemon 會話和登錄態。

核心功能

本插件僅實現 DSH ctx.browser seam 所需的基礎方法,調用這些方法會直接映射爲 bsk 命令:

方法 bsk 命令 說明
open(label) bsk session start 啓動會話,返回 session id。label 僅用於日誌記錄,不用於去重。
listTabs(session) bsk tab list --session S 返回標籤頁列表,包含 tabId、url、title、active 等字段。
setValue(session, {target, value}, signal) bsk fill --session S --selector X --value V 填充表單值。
click(session, {target}, signal) bsk click --session S --selector X 點擊元素。
key(session, {key}, signal) bsk press <KEY> --session S 模擬按鍵(如 Enter)。
detectChallenge(session, signal) bsk get-html --session S 讀取頁面 HTML,匹配驗證碼特徵(reCAPTCHA/hCaptcha 等),用於保守判斷是否跳過代填。
close(session) bsk session stop <ID> 停止會話,支持冪等操作。

安裝與配置

通過 DSH CLI 直接安裝:

dsh plugin --profile web add file:/Volumes/Kapp/source/dsh-browser-bsk

安裝完成後重啓 DSH。如果 dsh-accounts 因缺少 browser 服務而被禁用,現在可以將其啓用。在 cordis.patch.yml 中可以配置以下參數以適配環境:

- insert:
    - id: browser-bsk
      name: dsh-browser-bsk
      config:
        bskPath: bsk          # bsk CLI 可執行文件路徑,默認從 PATH 解析
        timeoutMs: 120000     # 單次命令超時時間
        sessionWidth: 1400    # 可選,會話窗口寬度
        sessionHeight: 900    # 可選,會話窗口高度

限制與注意事項

  1. 方法缺失:不提供 navigate、snapshot、execute、screenshot 等方法。若消費者調用這些方法,會直接報錯。
  2. 定位方式:僅支持 CSS 選擇器定位(by: 'css')。
  3. 互斥性:與 dsh-builtin-browser 互斥。兩者都發布 browser 服務,同時安裝會導致服務重複註冊,引發衝突。
  4. 檢測邏輯:detectChallenge 是標記匹配,而非完整的驗證碼破解能力,僅用於輔助決策是否跳過代填。

結尾

如果你正在使用 browser-skill 驅動瀏覽器,並遇到 dsh-accounts 等插件因缺少 browser 服務而無法啓動的問題,dsh-browser-bsk 是一個兼容性良好的解決方案。它通過提供 ctx.browser seam,解決了注入衝突問題,同時保持了與原生 browser-skill 的會話共享能力。

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

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

小夜