dsh-browser-harness:DSH 原生 browser_* 工具與專用 Chromium 會話

前言

在 DeepSeek Harness(DSH)裏讓模型操作網頁,常見做法是 HTTP 抓取或外掛 Playwright/Puppeteer。前者拿不到登錄態和複雜交互;後者往往再拉一層瀏覽器二進制或依賴棧,和日常瀏覽器 profile 也容易攪在一起。若你需要「已登錄、可點擊填表、多標籤、上傳下載」,又希望工具形態與 DSH 原生 browser_* 一致,可以看一下社區插件 dsh-browser-harness(npm 包名 @xumi0920/dsh-browser-harness)。它用零依賴 CDP 內核實現 13 個 browser_* 工具,連接你單獨啓動的 Chromium 系瀏覽器,並按 DSH 任務給插件自建的標籤頁分組。

這是什麼

dsh-browser-harness 由 Xumi0920 維護,分類爲 聯網工具,源碼與文檔在 GitHub,社區目錄頁:skillhub.cn/plugins/Xumi0920/dsh-browser-harness。社區目錄是獨立站點,與 DeepSeek / 幻方無官方從屬關係。

一句話定位:在 DSH 中提供與 Harness 對齊的 browser_ 工具集,通過 Chrome DevTools Protocol 驅動專用、已登錄*的 Chromium 內核瀏覽器(Chrome、Edge、Brave、Chromium、Vivaldi、Opera、Arc 等),以無障礙樹 + ref(e1、e2…)爲主做頁面理解與操作,截圖/PDF 作補充;插件自建的標籤頁按 DSH 會話(Task)分組,不影響你日常工作標籤頁。

當前版本 v1.10.0,許可 MIT;運行時除宿主提供的 @deepseek-ai/dsh-tools peer 外爲零依賴(構建產物僅使用 Node 內置 fetch / WebSocket)。

核心功能

工具一覽

安裝生效後,模型可調用的工具包括(名稱與 README 一致):

browser_status      端點 / 瀏覽器版本 / 標籤頁 / 當前標籤頁
browser_wait        出現/消失、URL/文本變化、response、network_idle、delay
browser_navigate    打開 URL,或 back / forward / reload
browser_snapshot    緊湊引用(e1…);frameId、offset/limit 完整分頁、checked/selected/expanded
browser_act         click / hover / highlight / drag / type / fill / selectOption / check / uncheck / press / scroll / dialog;可選 expectUrl/expectText/expectSelector 斷言
browser_extract     text / html / JS / network / console / frames
browser_screenshot  整頁或元素級 PNG 路徑
browser_pdf         頁面 PDF 路徑
browser_diagnose    截圖 + console + 網絡失敗 + 活動請求診斷包
browser_upload      文件輸入上傳,路徑限制在 uploadDir
browser_download    觸發並等待下載,文件落在 downloadDir
browser_task        status / pause / resume / close / start,任務生命週期
browser_tabs        list / use / new / close

設計要點(資料中明確的能力)

  • 真實登錄態:接自己起好的專用 Chromium 實例,登錄一次長期有效;文檔明確建議不要指向日常瀏覽器。
  • 文本優先:快照基於無障礙樹與 ref,比純截圖喂視覺模型更省 token;截圖、PDF 爲補充。
  • 按任務標籤組:插件自建的標籤頁按 DSH 會話分組;headless 環境下標籤組自動跳過,其它工具仍可用。
  • 操作與併發:快照按頁串行;click 默認做遮擋/命中檢查(錯誤碼 E_CLICK_INTERCEPTED);導航等待 load 至 complete;跨任務標籤衝突可返回 E_TAB_LOCKED / E_TAB_OWNER_CONFLICT 等。
  • 只讀模式:配置 readOnly: true 時阻止 click/fill/type、JS、上傳/下載及部分 tabs/task 變更,導航與快照/提取仍可用於檢查。
  • 失敗診斷:頁面工具失敗時自動寫入 <stateDir>/diagnostics/<lane>/,錯誤信息附帶診斷路徑;敏感 URL、token 類字段在輸出中盡力脫敏,但頁面正文/HTML/截圖仍可能含敏感數據。
  • 邊界:上傳限定 uploadDir、下載限定 downloadDir、截圖/PDF 限定 screenshotDir;browser_tabs use 對非自建頁需顯式 {borrow:true} 等規則見倉庫 SECURITY.md 與 docs/architecture.md。

環境要求(README 表格):

要求 說明
DSH >=0.2.1-rc.5(不設上限)
Node >=22
瀏覽器 任一 Chromium 內核 + remote debugging(默認端口 9331,詳見 docs/configuration.md)
平臺 Windows / Linux 已驗證;macOS 單測 CI 通過,真實 Chromium 端到端未實測

安裝與啓用

插件發佈於 GitHub Packages:@xumi0920/dsh-browser-harness(npmjs 上同名包爲其它項目,勿混淆)。官方給出三種方式,詳見 docs/install.md:

  1. 插件頁(推薦):DSH Web → 插件頁 → 添加插件 → 安裝第三方插件(npm 包名 / Git 倉庫 / 本地目錄),或在「發現」標籤頁安裝市場條目。
  2. 創造模式一句話:在創造模式會話中讓 DSH 執行:把 @xumi0920/dsh-browser-harness 安裝到當前 profile。
  3. 手動安裝(GitHub Packages,classic PAT):需 scope read:packages 的 classic PAT(不支持 fine-grained token)。Windows 示例如下:
npm config set "@xumi0920:registry" "https://npm.pkg.github.com"
npm config set "//npm.pkg.github.com/:_authToken" "<YOUR_GITHUB_TOKEN>"
& "$env:LOCALAPPDATA\\Programs\\DeepSeek Harness\\resources\\runtime\\cli\\bin\\dsh.cmd" `
  plugin --profile desktop add "@xumi0920/dsh-browser-harness"

手動 npm config set 會把 token 寫入 ~/.npmrc;README 建議裝完後刪除 token 配置並撤銷 PAT。熱插拔方面:application: applied 已生效時無需重啓;若返回 restart-required,需按 restartReason 重啓 DSH 以加載新 JS 模塊。

啓用前請知悉:第三方插件與 DSH 同進程權限運行。安裝前應閱讀源碼、MIT 許可證及 SECURITY.md,確認 cdpUrl、目錄邊界與只讀策略符合你的安全要求;不要把 remote debugging 指向日常瀏覽器。

典型用法

經過上面的安裝步驟,先啓動專用 Chromium(默認 remote debugging 9331),確認 http://127.0.0.1:9331/json/version 可訪問。然後在任意 DSH 會話中讓模型按 README 推薦的順序調用:

browser_status → browser_navigate {url} → browser_snapshot → browser_act {action:"click", ref}
browser_extract {mode:"text" | "html" | "js" | "network" | "console" | "frames"}

若首次 browser_status 返回 connected:false,按 docs/configuration.md 檢查瀏覽器是否已啓動、端口與 profile 配置是否一致。

更細的工作流、獨立庫與 CLI(包內 bh)見 docs/usage.md;標籤組行爲見 docs/tab-groups.md。

適用場景與注意

場景 建議
登錄態頁面、點擊/填表、上傳下載、多標籤、截圖 用本插件
公開頁面純讀取 優先 DSH 自帶 web_fetch(更快,不佔瀏覽器)
headless 環境 標籤組自動跳過;其它工具正常
日常瀏覽器 不要指向它;使用專用 profile 實例

DSH 生態理念是「一切皆插件」;本插件屬於社區貢獻的聯網工具類擴展,星標與迭代以 GitHub 倉庫爲準。遇到登錄牆或需 force 關閉標籤等敏感操作時,文檔要求停手由人確認。

結尾

dsh-browser-harness 把 DSH 原生的 browser_* 工具落到可維護的 TypeScript 實現上:零依賴 CDP、專用已登錄瀏覽器、ref 驅動的交互與按任務分組的標籤頁。若你的智能體工作流需要真實瀏覽器會話而不是單次 HTTP 抓取,可按官方安裝方式接入,並從配置文檔把端口與目錄邊界設清楚。

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

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

小夜