dsh-browser:爲 DSH 提供自包含的瀏覽器運行時

前言

在 DeepSeek Harness(DSH)裏做聯網任務,常見做法是依賴全局安裝的 Playwright、OpenCLI 或外部 CLI。環境不一致時,插件之間難以共享同一套瀏覽器後端;dsh-web-search-pro 等聯網插件也往往要單獨處理驅動安裝與調用路徑。

@anweat/dsh-browser 把 Playwright(Chromium)與 OpenCLI 作爲插件本地 npm 依賴打包,對外暴露 browser 服務與一組交互式瀏覽器工具。其他插件通過 inject: ['browser'] 注入該服務,即可複用同一運行時,不再依賴全局 CLI。

這是什麼

@anweat/dsh-browser 是維護者 anweat 發佈的 DSH 聯網工具插件,當前 npm 版本爲 0.1.9,許可證 MIT。它在 apply() 中通過 ctx.provide('browser', service) 註冊瀏覽器服務,供模型直接調用工具,也供其他插件消費。

一句話定位:自包含的瀏覽器運行時插件——本地優先打包 Playwright / 可選 Patchright 驅動與 OpenCLI,缺省時回退全局複用,Chromium 內核則共享系統緩存(約 400MB,位於 %LOCALAPPDATA%\ms-playwright)。

核心功能

瀏覽器服務與工具集

插件最多暴露 21 個工具,覆蓋頁面打開、交互、截圖、腳本執行、有限爬取與 OpenCLI 調用等場景。常用入口包括:

工具 作用
browser_open 打開 URL,返回標題、可讀文本與全頁截圖路徑
browser_read / browser_screenshot 讀取當前頁或截圖,適合公開頁面
browser_click / browser_type / browser_scroll 點擊、輸入、滾動,處理表單與懶加載
browser_recipe_run 聲明式多步 Playwright Recipe,最多 25 步
browser_crawl 匿名、有限廣度遍歷,受 usagePolicy 約束
browser_opencli_run 通用 OpenCLI 網關,適配 Reddit、小紅書等平臺
browser_status 查看運行時狀態、automationMode 與審批策略

安裝後建議先調用 browser_status 確認驅動與工具目錄是否正常;若 Chromium 缺失,執行一次 browser_install 即可補全。

自動化自由度

automationMode 控制模型可見工具集合與執行審批,默認 standard:讀取類操作直接執行,點擊、輸入、滾動等寫操作走 DSH 原生一次性審批。可選模式包括 read-onlyautonomousunrestricted;模式變更後需重啓 DSH profile,工具目錄纔會按新配置重新註冊。

unrestricted 會取消人工確認,但不會取消 usagePolicy 的併發、突發、頁數、深度、重試與冷卻保護,僅適合隔離測試 profile。

可複用自動化資產(實驗性)

0.1.9 起支持受治理的 Recipe / UserScript 草稿:默認 persistenceMode: suggest 僅記錄脫敏語義步驟,候選達到閾值後可在面板總結爲草稿;須通過真實瀏覽器回放後才能手工激活。模型可通過 browser_automation_searchbrowser_automation_developbrowser_automation_run 檢索、開發與調用已激活資產。該能力仍標記爲 Experimental,建議在隔離 profile 中試用。

與其他插件的協作

dsh-web-search-pro 通過 inject: ['browser'] 注入本插件的 browser 服務,驅動其瀏覽器與 OpenCLI 後端。README 註明:dsh-web-search-pro >= 0.1.8 需要 @anweat/dsh-browser >= 0.1.8;Web Search Pro 與瀏覽器插件應同步升級,不要只升級前者。

安裝與啓用

下面介紹官方安裝命令。插件適配 DSH 基線 ^0.1.1-rc.2,要求 Node ^22.19 || >=24

dsh plugin --profile web add @anweat/dsh-browser

也可從本地目錄或 tarball 安裝:

dsh plugin --profile web add ./dsh-browser

web profile 關閉了 HMR,安裝後需完整重啓:

dsh --profile web

從舊版本升級時,建議同步升級瀏覽器插件與 Web Search Pro:

dsh plugin --profile web add @anweat/dsh-browser@^0.1.9 dsh-web-search-pro@^0.1.11

升級後完整停止並重啓 Web profile,再調用 browser_statusbrowser_opencli_statusweb_backend_status 驗證;僅刷新網頁不會重新加載插件服務。

典型用法

公開頁面讀取

適合不需要登錄態的任務。先查狀態,再打開目標頁:

先調用 browser_status;然後用 browser_open 打開目標頁。
讀取內容用 browser_read,需要截圖時用 browser_screenshot。

需要登錄的站點

使用 authProfile 管理登錄態,必須配置 allowedDomains;不要把 Cookie 放進工具參數。示例會話提示:

先調用 browser_status;然後用 browser_open 打開目標頁。
若頁面需要登錄,使用 authProfile=forum;不要把 Cookie 放進工具參數。

按場景選擇工具

情形 推薦方式
公開網頁讀取、截圖 browser_openbrowser_read / browser_screenshot
表單、分頁、懶加載 browser_click / browser_type / browser_scroll
登錄後站點 authProfile + allowedDomains
模型生成的多步操作 browser_recipe_run
Reddit / 小紅書等 OpenCLI 平臺 browser_opencli_statusbrowser_opencli_catalogbrowser_opencli_run
普通站點兼容性不佳 配置 browserRuntime: patchright(Chromium-only)

供其他插件消費 browser 服務

其他插件聲明 inject: ['browser'] 後即可獲取 BrowserService

export const inject = ['tools', 'browser']
export function apply(ctx: Context) {
  const browser = ctx.get('browser') as BrowserService
  // browser.render / snapshot / searchResults / opencli / recipe /
  // runBuiltinScript / runUserscript / open / click / type / scroll / read / screenshot / close
}

服務接口定義見倉庫 src/browser-service.ts

適用場景與注意

適合誰: 在 DSH web profile 中需要穩定瀏覽器後端、希望聯網插件共用 Playwright 與 OpenCLI 的開發者;與 dsh-web-search-pro 搭配做搜索、頁面讀取與平臺適配的場景。

使用注意:

  1. 插件以當前 DSH 進程權限運行,安裝前應檢查源碼與 MIT 許可證。
  2. usagePolicy 限制併發、突發、重試與爬取預算,所有 automationMode 共用同一 Governor,無法通過切換模式繞過。
  3. 泛爬取默認匿名 context,不繼承全局登錄態;登錄後讀取應使用顯式限域的單頁或 Recipe 工具。
  4. 可複用自動化資產仍爲實驗性功能,草稿須真實回放後才能激活,不宜作爲無人監管的生產寫操作入口。
  5. 若 harness 爲本地源碼 checkout,版本號可能與 npm 發佈包有出入,可用 dsh plugin --profile web add ./<path> 並在 profile 的 pnpm-workspace.yaml 裏對齊版本後重裝。

結尾

@anweat/dsh-browser 把 Playwright、可選 Patchright 與 OpenCLI 收進插件邊界,用 browser 服務統一對外暴露,讓 DSH 聯網任務不再綁死全局 CLI。日常從 standard 模式與 browser_status 起步,按任務選用對應工具即可。

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

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

小夜