前言¶
在 DeepSeek Harness(DSH)裏讓智能體操作網頁,常見做法是自行拼裝 HTTP 抓取或零散腳本:能拿到 HTML,卻難以穩定處理登錄態、多標籤、動態渲染和可交互控件。另一類做法是接第三方瀏覽器 API,但綁定和生命週期往往與 DSH 工具註冊、會話清理脫節。
下面介紹社區插件 dsh-playwright-browser(維護者 Clizo1209,SkillHub 分類:聯網工具)。它基於 Playwright,向 DSH 註冊一組原生 browser_* 工具,提供可複用的瀏覽器上下文、語義化定位和多標籤管理。行爲設計參考 Codex Browser skill 的思路,但不依賴 OpenAI 瀏覽器綁定,控制器由插件自行管理。
DSH 目前處於開發者預覽階段。該插件針對 DSH
0.1.0-rc.6包線測試,隨 DSH 演進可能需要兼容性更新。
這是什麼¶
dsh-playwright-browser 是面向 DeepSeek Harness 的瀏覽器自動化插件,當前 npm 版本爲 0.1.3,採用 MIT 許可證。
插件在 DSH 工具註冊表中掛載十個 browser_* 工具,由 Cordis 管理瀏覽器生命週期。智能體通過語義定位器(如 role=button|Save、label=Email)與頁面交互,並在操作後獲取有界長的無障礙樹或可見文本快照,而不是在頁面內執行任意 JavaScript。
核心功能¶
工具一覽¶
插件註冊以下十個工具:
| 工具 | 作用 |
|---|---|
browser_open |
打開標籤頁,可選導航到 URL |
browser_navigate |
在已有標籤頁中導航 |
browser_snapshot |
讀取有界長的無障礙或文本快照 |
browser_click |
點擊語義化目標 |
browser_fill |
替換輸入框內容,可選按 Enter |
browser_press |
發送 Playwright 鍵盤按鍵 |
browser_wait |
等待目標、URL 或加載狀態 |
browser_history |
後退、前進或刷新 |
browser_screenshot |
保存 PNG 並返回絕對路徑 |
browser_tabs |
列出、選擇或關閉標籤頁 |
定位與快照¶
推薦的目標寫法包括:
role=button|Save
button|Save
label=Email
placeholder=Search
text=Settings
testid=submit
css=#legacy-button
交互後會返回新鮮、有界長的快照(默認上限 40000 字符),便於智能體在動作前後覈對頁面狀態。
瀏覽器與運行時¶
- 惰性啓動瀏覽器;無 Playwright Chromium 時可回退到本機已安裝的 Chrome 或 Edge。
- 可複用瀏覽器上下文,標籤頁使用穩定標識符。
- 支持後退、前進、刷新、鍵盤輸入、等待和 PNG 截圖。
- 頁面操作支持中止;Cordis 負責生命週期清理。
- 不在頁面內執行任意 JavaScript 求值。
安全模型¶
插件將頁面內容視爲不可信數據,而非智能體指令。涉及提交表單、敏感數據、下載、購買、權限變更、賬戶修改或 CAPTCHA 時,需獲得適當用戶授權。瀏覽器不會在未告知的情況下靜默安裝;無可用瀏覽器時,智能體應說明最低配置並徵得同意。含嵌入憑據的 URL 會被拒絕;協作關閉標籤頁會取消該頁面上進行中的操作。
環境要求¶
安裝前確認:
- Node.js
^22.19.0或>=24.0.0 - 已配置 DSH profile
- 至少一種受支持瀏覽器:
- Playwright Chromium(
npx playwright install chromium) - Google Chrome / Microsoft Edge
- 或通過
executablePath指定可執行文件路徑
安裝與啓用¶
從 npm 安裝到 web profile:
dsh plugin --profile web add dsh-playwright-browser
從源碼 checkout 安裝:
npm install
npm pack
dsh plugin --profile web add ./dsh-playwright-browser-0.1.3.tgz
無頭環境可使用 headless profile:
dsh plugin --profile headless add ./dsh-playwright-browser-0.1.3.tgz
安裝後在不啓動進程的情況下校驗 profile 組合:
dsh --profile web --dump-config
Git 安裝會執行包的 prepare 腳本;pnpm 10 及以上可能需要在 profile 的 pnpm-workspace.yaml 中顯式允許該構建。使用預構建 npm 包或 tarball 時,profile 內無需再編譯源碼。
配置¶
在 profile 的 cordis.patch.yml 中追加配置(DSH 會在已安裝 bundle 補丁之後應用用戶覆蓋):
- id: playwright-browser
config:
browser: chromium
channel: chrome
headless: true
viewportWidth: 1440
viewportHeight: 900
screenshotDir: .dsh-browser/screenshots
常用選項:
| 選項 | 默認值 | 說明 |
|---|---|---|
browser |
chromium |
chromium、firefox 或 webkit |
headless |
true |
是否無頭運行 |
channel |
— | Chromium 渠道,如 chrome 或 msedge |
executablePath |
— | 瀏覽器可執行文件絕對路徑 |
userDataDir |
— | 專用自動化用戶數據目錄 |
viewportWidth |
1280 |
視口寬度 |
viewportHeight |
800 |
視口高度 |
actionTimeoutMs |
15000 |
定位與操作超時 |
navigationTimeoutMs |
30000 |
導航超時 |
maxSnapshotChars |
40000 |
快照最大返回長度 |
screenshotDir |
.dsh-browser/screenshots |
截圖輸出目錄 |
不要將 userDataDir 指向個人日常使用的瀏覽器配置目錄,應使用專用於智能體自動化的獨立目錄。
典型用法¶
智能體在 DSH 會話中按任務鏈調用 browser_* 工具。一個常見的瀏覽流程如下:
- 用
browser_open打開標籤頁並導航到目標 URL。 - 用
browser_snapshot讀取當前頁面結構,確認可交互元素。 - 用
browser_click、browser_fill或browser_press完成操作;目標使用語義定位器,例如label=Email或button|Save。 - 用
browser_wait等待 URL、元素或加載狀態就緒。 - 需要留檔時調用
browser_screenshot;多頁任務用browser_tabs管理標籤,用browser_history處理後退與刷新。
定位器示例:
role=button|Save
label=Email
placeholder=Search
text=Settings
適用場景與注意¶
適合誰
- 已在 DSH 中編排智能體,需要穩定、可觀測的網頁自動化能力。
- 希望用無障礙樹和語義定位減少脆弱 CSS 選擇器依賴的團隊。
- 需要多標籤、截圖、導航歷史等完整瀏覽器會話管理的場景。
使用前注意
- 插件以當前 DSH 進程的權限運行,可訪問其能觸及的文件、網絡與瀏覽器數據。安裝前應閱讀 GitHub 倉庫 源碼與 MIT 許可證,評估是否滿足你的安全與合規要求。
- SkillHub 爲社區目錄站點,與 DeepSeek / 幻方無官方從屬關係;插件列表與星標(當前 GitHub 11 stars)反映社區維護狀態,不代表官方背書。
- DSH 仍在快速迭代,升級 DSH 或插件版本後建議執行
dsh --profile web --dump-config並跑一遍你的典型任務鏈。
鏈接¶
- SkillHub 目錄頁:https://www.skillhub.cn/plugins/Clizo1209/dsh-playwright-browser
- GitHub 倉庫:https://github.com/Clizo1209/dsh-playwright-browser
經過上面的步驟,你可以在 DSH profile 中接入 Playwright 驅動的瀏覽器工具集,讓智能體以結構化快照和語義定位完成多標籤網頁任務,而不必自行維護瀏覽器控制器與工具註冊。