前言¶
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 # 可選,會話窗口高度
限制與注意事項¶
- 方法缺失:不提供
navigate、snapshot、execute、screenshot等方法。若消費者調用這些方法,會直接報錯。 - 定位方式:僅支持 CSS 選擇器定位(
by: 'css')。 - 互斥性:與
dsh-builtin-browser互斥。兩者都發布browser服務,同時安裝會導致服務重複註冊,引發衝突。 - 檢測邏輯:
detectChallenge是標記匹配,而非完整的驗證碼破解能力,僅用於輔助決策是否跳過代填。
結尾¶
如果你正在使用 browser-skill 驅動瀏覽器,並遇到 dsh-accounts 等插件因缺少 browser 服務而無法啓動的問題,dsh-browser-bsk 是一個兼容性良好的解決方案。它通過提供 ctx.browser seam,解決了注入衝突問題,同時保持了與原生 browser-skill 的會話共享能力。