dsh-playwright-browser:爲 DSH 智能體提供 Playwright 多標籤頁瀏覽器自動化

前言

在 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_* 工具。一個常見的瀏覽流程如下:

  1. 用 browser_open 打開標籤頁並導航到目標 URL。
  2. 用 browser_snapshot 讀取當前頁面結構,確認可交互元素。
  3. 用 browser_click、browser_fill 或 browser_press 完成操作;目標使用語義定位器,例如 label=Email 或 button|Save。
  4. 用 browser_wait 等待 URL、元素或加載狀態就緒。
  5. 需要留檔時調用 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 並跑一遍你的典型任務鏈。

鏈接

經過上面的步驟,你可以在 DSH profile 中接入 Playwright 驅動的瀏覽器工具集,讓智能體以結構化快照和語義定位完成多標籤網頁任務,而不必自行維護瀏覽器控制器與工具註冊。

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

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

小夜