前言¶
DeepSeek Harness(以下簡稱 DSH)把模型、工具、會話和 UI 都做成插件,官方口號是「一切皆插件」。開發者預覽版裏,智能體已經能讀寫文件、跑 Shell、做普通網頁抓取,但這些還不夠覆蓋一類很常見的任務:打開真實瀏覽器、讀渲染後的頁面、點按鈕、填表單、在多個標籤頁之間切換。
內置的 HTTP 抓取只能拿到靜態響應。頁面如果依賴 JavaScript 渲染,或者操作必須發生在瀏覽器裏(登錄後的後臺、多步表單、需要等待加載的列表),智能體就需要一個持久的瀏覽器控制器,而不是一次性的 curl。社區裏已經出現多款 Playwright 插件,本文介紹的是 Clizo1209 維護的 dsh-playwright-browser:它把 10 個 browser_* 工具註冊進 DSH 工具表,用語義定位驅動頁面,而不是讓模型去猜一長串 CSS。
需要先說明兩點。第一,DSH 目前仍是開發者預覽,插件作者寫明已針對 0.1.0-rc.6 包系列做過測試,後續核心 API 仍可能不兼容。第二,DeepSeek Harness 插件庫是社區目錄站點,和 DeepSeek / 幻方沒有官方從屬關係,不要把它當成官方應用商店。
這是什麼¶
dsh-playwright-browser 是一款面向 DSH 的 Playwright 瀏覽器自動化插件,由 GitHub 用戶 Clizo1209 維護,倉庫地址爲 Clizo1209/dsh-playwright-browser。目錄頁把它歸在「界面增強」,許可證爲 MIT,主要語言是 TypeScript。npm 上當前發佈版本是 0.1.3(2026-08-14),GitHub 倉庫當前 8 星。
它解決的問題可以概括成一句話:給 DSH 智能體一個可複用的瀏覽器上下文,讓它用 accessibility 快照和語義定位去操作頁面,而不是把整頁 DOM 塞進上下文,也不提供任意 JavaScript eval。
README 寫明:行爲設計參考了 Codex Browser 技能,但不包含 Codex 運行時代碼,也不依賴 OpenAI 的瀏覽器綁定。項目文檔 docs/CODEX_BROWSER_DESIGN.md 把這一點寫得很清楚——只映射「持久綁定、顯式標籤頁、語義點擊、事後再觀察」這類交互原則,瀏覽器進程由插件自己用 Playwright 拉起。
核心功能¶
十個原生 browser_* 工具¶
插件向 DSH 工具註冊表掛上 10 個模型可調用工具,名稱和職責以倉庫 README 爲準:
| 工具 | 作用 |
|---|---|
browser_open |
打開標籤頁,可同時導航到 URL |
browser_navigate |
在已有標籤頁裏導航 |
browser_snapshot |
讀取有長度上限的 accessibility 或可見文本快照 |
browser_click |
點擊語義目標 |
browser_fill |
替換輸入框內容,可選按 Enter |
browser_press |
發送 Playwright 鍵盤按鍵 |
browser_wait |
等待目標、URL 或加載狀態 |
browser_history |
後退、前進或刷新 |
browser_screenshot |
保存 PNG,返回絕對路徑 |
browser_tabs |
列出、選擇或關閉標籤頁 |
架構文檔把調用鏈寫得很短:profile 的 cordis.patch.yml 掛上插件入口,入口再往工具表和系統提示詞裏各貢獻一塊,真正驅動瀏覽器的是內部的 BrowserController。控制器按需啓動瀏覽器,標籤頁用單調遞增的 tab-N 作爲穩定 ID。
語義定位,CSS 只作退路¶
頁面交互優先用語義字符串,而不是讓模型拼選擇器。README 給出的推薦格式如下:
role=button|保存
button|保存
label=郵箱
placeholder=搜索
text=設置
testid=submit
css=#legacy-button
role=button|保存 和快照友好的簡寫 button|保存 是同一類定位。CHANGELOG 裏 0.1.3 專門加了這種 | 簡寫,原因是實測裏智能體經常從 accessibility 快照裏直接抄出 textbox|Name 這種寫法,舊版解析失敗。CSS 仍然可用,但文檔把它標成兼容出口。
每次打開、導航或改頁面之後,工具會返回一份新的、有長度上限的快照(默認最多 40000 字符)。系統提示詞要求智能體把頁面內容當成不可信數據,先觀察再動手,動手後再觀察一遍。
懶啓動、回退瀏覽器、統一清理¶
瀏覽器不是插件一加載就啓動。第一次真正調用瀏覽器工具時,控制器纔會按配置拉起進程。未指定 channel / executablePath 時,Chromium 的嘗試順序是:
- Playwright 管理的 Chromium
- 本機已安裝的 Google Chrome
- 本機已安裝的 Microsoft Edge
顯式配置的 channel 或 executablePath 優先。Firefox 和 WebKit 需要對應的 Playwright 瀏覽器,或給出可執行文件路徑。Playwright Chromium 可以用下面這條命令安裝:
npx playwright install chromium
Cordis 卸載插件時會關掉頁面、上下文和瀏覽器進程。關閉某個標籤頁時,會協作式取消該頁上尚未完成的操作。插件聲明不提供任意頁面 JavaScript 求值,這是和部分社區瀏覽器插件的明顯差別。
安裝與啓用¶
社區目錄頁給出的安裝命令是:
dsh plugin add github:Clizo1209/dsh-playwright-browser
這條命令以目錄頁原文爲準。dsh CLI 會從 GitHub 解析插件並裝進當前配置。若需要可復現安裝,目錄頁建議固定 commit 哈希:
dsh plugin add github:Clizo1209/dsh-playwright-browser#commit
把 commit 換成實際哈希即可。
倉庫 README 另外提供了 npm 安裝方式,適合已經指定 profile 的場景。當前包名與版本爲 dsh-playwright-browser@0.1.3:
dsh plugin --profile web add dsh-playwright-browser
從源碼目錄打包再裝:
npm install
npm pack
dsh plugin --profile web add ./dsh-playwright-browser-0.1.3.tgz
無界面 profile 可以把 web 換成 headless。裝完後可以用下面的命令檢查組合配置,不必真正啓動會話:
dsh --profile web --dump-config
Git 安裝會跑包裏的 prepare 腳本(即 TypeScript 構建)。README 提醒:pnpm 10 及以上可能要在該 profile 的 pnpm-workspace.yaml 裏明確允許這次構建;預編譯的 npm 包或 tarball 不需要在 profile 裏再編一遍源碼。
環境要求也寫在 README 裏:Node.js ^22.19.0 或 >=24.0.0,以及一個可用的 DSH profile。瀏覽器三選一即可:Playwright Chromium、系統 Chrome / Edge,或配置 executablePath。
目錄頁和插件安全說明都強調:插件以當前 dsh 進程的權限運行,安裝時可能執行代碼。 安裝前應檢查源代碼倉庫和許可證。
配置與用法¶
DSH 會在已安裝的 bundle 補丁之後再應用用戶覆蓋。把類似下面的一行加進該 profile 的 cordis.patch.yml(倉庫 examples/cordis.patch.yml 與 README 一致):
- id: playwright-browser
config:
browser: chromium
channel: chrome
headless: true
viewportWidth: 1440
viewportHeight: 900
screenshotDir: .dsh-browser/screenshots
README 列出的配置項如下(未寫出的項沿用默認值):
| 配置項 | 默認值 | 用途 |
|---|---|---|
browser |
chromium |
chromium、firefox 或 webkit |
headless |
true |
是否無頭運行 |
channel |
— | chrome、msedge 等 Chromium channel |
executablePath |
— | 瀏覽器可執行文件的絕對路徑 |
userDataDir |
— | 給智能體專用的持久化目錄 |
viewportWidth |
1280 |
視口寬度 |
viewportHeight |
800 |
視口高度 |
actionTimeoutMs |
15000 |
定位和操作超時 |
navigationTimeoutMs |
30000 |
導航超時 |
maxSnapshotChars |
40000 |
快照最大字符數 |
screenshotDir |
.dsh-browser/screenshots |
截圖目錄 |
不要把 userDataDir 指到自己日常使用的瀏覽器配置目錄。文檔要求使用智能體專用目錄;插件也不會去翻個人瀏覽器的 cookie、密碼或擴展狀態。
裝好之後,這些工具會進入當前會話的工具表,由模型按任務調用,而不是你在終端裏一條條敲 browser_click。一條符合文檔設計的操作順序是:
browser_open打開頁面(或browser_navigate跳轉到已有標籤)- 閱讀返回的快照,確認可見控件
- 用
role=/label=/text=等形式browser_click或browser_fill - 需要時
browser_wait,或browser_screenshot留證 - 多頁面任務用
browser_tabs切換,用完再關閉
截圖會寫成本地 PNG,工具返回絕對路徑。DSH 各條模型路由對圖片附件的支持不一樣,調用方可以把這條路徑交給已有的讀圖工具。
適用場景與注意事項¶
適合在 DSH 裏做這類工作的人:要讓智能體操作 JavaScript 渲染後的頁面、走多步表單、在多個標籤間對照信息,或者需要截圖作爲操作證據。它不是完整的網頁安全沙箱。架構文檔寫得很直接:這是瀏覽器自動化,運維仍要按自己的環境加上出口、代理、文件系統和賬號控制。
使用前值得逐條覈對的邊界:
- 只接受
http:、https:和about:導航,帶嵌入式用戶名或密碼的 URL 會被拒絕。 - 頁面正文是觀察數據,不是給智能體的指令。
- 涉及憑據、下載、購買、權限彈窗、賬號變更和 CAPTCHA 時,文檔要求先獲得適當授權。
- 插件不會在後臺默默下載瀏覽器;環境缺失時先說明最小安裝步驟,未授權不得改機器。
- 截圖和日誌可能帶上頁面內容,需要按敏感數據處理。
- 在項目到達 1.0 之前,安全修復只覆蓋最新發布的
0.x。當前倉庫最新發布是0.1.3。
DSH 本身還在快速迭代,插件作者也標明可能要跟着核心版本做兼容更新。安裝社區插件前,建議打開 GitHub 倉庫看一眼 LICENSE、SECURITY.md 和 src/,確認許可證(MIT)和權限模型可以接受。
小結¶
dsh-playwright-browser 給 DSH 補上的是一套語義化、多標籤、可取消的 Playwright 控制面:10 個 browser_* 工具、有上限的 accessibility 快照、Chrome / Edge 回退,以及明確不做頁面 eval。它是 Clizo1209 維護的社區 MIT 項目,不是 DeepSeek 官方捆綁能力。
目錄頁:https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-playwright-browser/
GitHub:https://github.com/Clizo1209/dsh-playwright-browser
npm:https://www.npmjs.com/package/dsh-playwright-browser