DeepSeek Harness (DSH) 的核心設計理念是「一切皆插件」。當智能體需要操作真實網頁,而不僅僅是讀取文本時,現有方案往往難以兼顧操作深度與可視化。下面介紹 @dsh-external/dsh-browser-use,它移植自 ZCode 的 browser-use-plugin / control-browser 技能,將「ARIA 快照優先」的操作範式落地到 DSH 的工具、提示段與 UI 上。
核心功能¶
本插件提供一組工具與面板,用於驅動本機 Chromium 進行網頁操作。
- 瀏覽器控制:
browser_open(打開 URL)、browser_navigate(導航)、browser_tabs(多標籤管理)、browser_wait(等待)。 - 交互操作:
browser_click(點擊)、browser_type(輸入文本)、browser_press(發送按鍵)。 - 讀取與求值:
browser_snapshot(讀取 ARIA 快照,用於定位)、browser_eval(JS 求值)、browser_screenshot(截圖)。 - 可視化面板:提供一個右側欄面板,可實時觀看瀏覽器畫面(需要部署掛載 attachment 服務)。
安裝與啓用¶
使用 DSH 內置插件管理器進行安裝。
# 使用命令行
dsh plugin --profile <profile> add github:hu568/dsh-plugin-browser-use
# 或使用插件管理器
plugin_manager action=install_bundle target="github:hu568/dsh-plugin-browser-use"
安裝後,插件被追加進 profile 的 dsh.profile.bundles,其 cordis.patch.yml 會將 dsh-browser-use 注入宿主組合。通常在運行中即時生效,否則重啓 DSH 即可。
典型用法¶
安裝完成後,Agent 可以通過調用工具來控制瀏覽器。
- 打開網頁並獲取初始快照:
browser_open
- 讀取頁面結構(ARIA 快照):
browser_snapshot
- 根據 ref 定位並點擊元素:
browser_click
- 在輸入框中填入文本:
browser_type
已知限制與注意事項¶
- 頁面刷新:Client 半邊在頁面刷新後生效。若頁面早於注入加載,client 模塊不會被 import。
- 截圖:
browser_screenshot需要部署掛載 attachment 服務。 - 導航協議:
goto工具只接受http:/https:/about:blank。 - 鑑權:面板路由沒有獨立鑑權,同源的其他進程也能調用
/input接口。 - Cookie 機制:會話 cookie(無
Expires/Max-Age)不保留,只有持久化 cookie 能跨進程保留。 - 進程佔用:同一 profile 不能同時被兩個進程佔用。
- 系統調用:不要使用
explorer.exe開啓 URL,應走 ShellExecute 語義(Windows 上用 PowerShell 或 cmd)。
技術實現¶
- 依賴:運行依賴
playwright-core ^1.56.1,使用本機已緩存的 Chrome for Testing。 - 啓動方式:瀏覽器採用懶啓動,第一次調用
browser_open時才拉起,插件卸載/熱重載時釋放。 - 持久化:默認使用持久化 profile(
<DSH_HOME>/browser-use/profile)來保存登錄態。 - 源碼:以
lib/爲唯一源碼,純 JavaScript (ESM),不需要構建鏈。
通過這套機制,DSH 的 Agent 不再侷限於對話,而是能夠接管瀏覽器,完成從導航、操作到驗證的完整鏈路。對於需要處理登錄、驗證碼或複雜表單的自動化任務,這是一個實用的工具集。
源碼與目錄頁:GitHub