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|Savelabel=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 chromiumfirefoxwebkit
headless true 是否無頭運行
channel Chromium 渠道,如 chromemsedge
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_clickbrowser_fillbrowser_press 完成操作;目標使用語義定位器,例如 label=Emailbutton|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 驅動的瀏覽器工具集,讓智能體以結構化快照和語義定位完成多標籤網頁任務,而不必自行維護瀏覽器控制器與工具註冊。

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

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

小夜