前言¶
在 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-only、autonomous 與 unrestricted;模式變更後需重啓 DSH profile,工具目錄纔會按新配置重新註冊。
unrestricted 會取消人工確認,但不會取消 usagePolicy 的併發、突發、頁數、深度、重試與冷卻保護,僅適合隔離測試 profile。
可複用自動化資產(實驗性)¶
0.1.9 起支持受治理的 Recipe / UserScript 草稿:默認 persistenceMode: suggest 僅記錄脫敏語義步驟,候選達到閾值後可在面板總結爲草稿;須通過真實瀏覽器回放後才能手工激活。模型可通過 browser_automation_search、browser_automation_develop、browser_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_status、browser_opencli_status 和 web_backend_status 驗證;僅刷新網頁不會重新加載插件服務。
典型用法¶
公開頁面讀取¶
適合不需要登錄態的任務。先查狀態,再打開目標頁:
先調用 browser_status;然後用 browser_open 打開目標頁。
讀取內容用 browser_read,需要截圖時用 browser_screenshot。
需要登錄的站點¶
使用 authProfile 管理登錄態,必須配置 allowedDomains;不要把 Cookie 放進工具參數。示例會話提示:
先調用 browser_status;然後用 browser_open 打開目標頁。
若頁面需要登錄,使用 authProfile=forum;不要把 Cookie 放進工具參數。
按場景選擇工具¶
| 情形 | 推薦方式 |
|---|---|
| 公開網頁讀取、截圖 | browser_open → browser_read / browser_screenshot |
| 表單、分頁、懶加載 | browser_click / browser_type / browser_scroll |
| 登錄後站點 | authProfile + allowedDomains |
| 模型生成的多步操作 | browser_recipe_run |
| Reddit / 小紅書等 OpenCLI 平臺 | browser_opencli_status → browser_opencli_catalog → browser_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 搭配做搜索、頁面讀取與平臺適配的場景。
使用注意:
- 插件以當前 DSH 進程權限運行,安裝前應檢查源碼與 MIT 許可證。
usagePolicy限制併發、突發、重試與爬取預算,所有 automationMode 共用同一 Governor,無法通過切換模式繞過。- 泛爬取默認匿名 context,不繼承全局登錄態;登錄後讀取應使用顯式限域的單頁或 Recipe 工具。
- 可複用自動化資產仍爲實驗性功能,草稿須真實回放後才能激活,不宜作爲無人監管的生產寫操作入口。
- 若 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 起步,按任務選用對應工具即可。