用 dsh-better-browser 讓 DeepSeek Harness 操作已登錄的瀏覽器

前言

DeepSeek Harness(dsh)把模型、工具、會話和界面都做成可替換插件。智能體要處理「已經登錄過的網站」時,常見做法是再起一個無頭瀏覽器:Cookie 得重新注入,登錄頁要再走一遍,已經打開的標籤頁也用不上。把 Cookie 抄進配置,既麻煩,也容易把會話狀態寫進模型上下文。

dsh-better-browser 走另一條路:不自己驅動瀏覽器,而是把本機上的 Kimi WebBridge 適配成 13 個 webbridge_* 工具,讓 Agent 使用你正在用的、已經登錄的 Chrome 或 Edge。

本文根據社區插件目錄頁和 GitHub 倉庫 README、package.json、許可證交叉覈對後整理,說明它是什麼、怎麼裝、工具邊界在哪裏。社區插件目錄 deepseek-harness-plugin.com 是獨立站點,與 DeepSeek / 幻方沒有官方從屬關係,不要把它當成官方應用商店。

這是什麼

dsh-better-browser 是一款界面增強類插件,由 titanwings 維護,npm 包名爲 @dsh-external/dsh-better-browser,當前版本 0.3.6,許可證 BSD-3-Clause,主要語言 TypeScript,要求 Node.js 22.19+ 或 24 及以上。GitHub 倉庫在 2026-08-13 創建,本文覈對時星標爲 9。

它解決的問題可以收成一句話:讓 DSH 裏的 Agent 操作用戶自己的瀏覽器,而不是再開一套沒有登錄態的無頭環境。

真正的頁面跳轉、點擊、截圖由 Kimi WebBridge 的本地守護進程和瀏覽器擴展完成。本插件不含瀏覽器驅動代碼,只把本地協議註冊成 Cordis bundle,行 id 爲 webbridge。Kimi WebBridge 是月之暗面的獨立產品,需要按 Kimi 自己的條款另行安裝。

倉庫 README 把無頭瀏覽器和本插件的差異寫成了對照表,核心差別有四點:

  1. 登錄態:無頭方案通常要重新登錄或注入憑據;本插件複用用戶瀏覽器裏已有的狀態。
  2. 標籤頁:無頭方案由工具自己維護;本插件使用真實標籤頁和標籤組。
  3. 瀏覽器狀態:無頭方案容易把狀態寫進工具輸出或模型上下文;本插件把狀態留在瀏覽器和本地守護進程。
  4. 適用場景:無頭更適合隔離測試和抓取;本插件更適合登錄後的工作流和真實頁面檢查。

核心功能

操作用戶真實瀏覽器

插件把導航、無障礙快照、點擊、填寫和執行 JavaScript 交給已登錄的瀏覽器。登錄 Cookie、已打開的標籤頁可以繼續用,不必爲 Agent 再準備一套賬號。

看見頁面之外的證據

Agent 可以截圖、檢查網絡活動、上傳工作區內的文件,以及把當前頁存成 PDF。截圖和 PDF 返回的是文件路徑,而不是把整頁像素或完整瀏覽器狀態塞進模型請求。倉庫說明:單次模型可見內容最多 32,000 字符,超出時會明確標記截斷。

一個任務對應一個標籤組

穩定的 session 名把同一任務的標籤頁歸到一起。不同任務互不混用,用戶仍然可以在自己的瀏覽器裏看見並接管全過程。瀏覽器動作採用排他調度,全部工具聲明 isConcurrencySafe=false,避免共享標籤頁被並行改寫。

標籤頁只會在用戶明確要求時關閉;任務結束不會自動清理用戶瀏覽器。重啓守護進程會清空由它維護的標籤組。

不改 DSH 核心

插件作爲 Cordis bundle 安裝,註冊穩定的 webbridge 行和 13 個 webbridge_* 工具。卸載 bundle 即可移除能力,不必給 DeepSeek Harness 打補丁。這和官方倉庫「Everything is a Plugin」的設計一致:擴展能力靠掛載插件,而不是改核心源碼。

13 個 webbridge 工具

倉庫 README 列出的工具如下:

工具 用途
webbridge_navigate 打開 URL,併爲任務設置標籤組標題
webbridge_find_tab 重新選擇任務標籤頁,或借用當前活動標籤
webbridge_snapshot 讀取頁面無障礙樹與 @e 元素引用
webbridge_click @e 引用或 CSS selector 點擊
webbridge_fill 填寫 input、textarea 或 contenteditable
webbridge_evaluate 在頁面中運行同步或異步 JavaScript
webbridge_screenshot 截取頁面或指定元素,返回文件路徑
webbridge_list_tabs 列出當前 session 的標籤頁
webbridge_network 啓停並檢查網絡活動
webbridge_upload 通過文件輸入上傳調用 Agent 工作區內的文件
webbridge_save_as_pdf 將當前頁面保存爲 PDF
webbridge_close_tab 關閉 session 的當前標籤頁
webbridge_close_session 關閉 session 的全部標籤頁

navigatefind_tab 只接受絕對 http / https URL,拒絕本地文件和腳本協議。上傳文件必須落在調用 Agent 的工作區內,插件會解析規範路徑並拒絕符號鏈接逃逸。截圖和 PDF 路徑只接受 WebBridge 專用臨時目錄。

安裝與啓用

目錄頁給出的安裝命令是:

dsh plugin add github:titanwings/dsh-better-browser

倉庫 README 建議裝到 web profile,並固定當前版本標籤 v0.3.6(對應 commit 506493224a21510c3f9cc7329a17e84af20879dc):

dsh plugin --profile web add github:titanwings/dsh-better-browser#v0.3.6

目錄頁也提示:如需可復現安裝,可以寫成 github:titanwings/dsh-better-browser#commit,把 commit 換成具體哈希。

這只是 DSH 一側。瀏覽器操作鏈路還要先裝好 Kimi WebBridge。倉庫 README 給出的安裝方式如下(腳本來自 Kimi CDN,安裝前應自行覈對來源):

curl -fsSL https://cdn.kimi.com/webbridge/install.sh | bash
kimi-webbridge status

kimi-webbridge status 期望看到 "extension_connected": true。同時需要從官方商店安裝 Kimi WebBridge 擴展:

安裝並啓用擴展後保持瀏覽器運行,再查一次 status。只有擴展已連接,瀏覽器、守護進程和本插件的完整鏈路纔算就緒。Kimi 產品頁與幫助中心見 Kimi WebBridge幫助文檔

裝好插件後,重啓 dsh web 並刷新頁面。模型隨後即可看到 webbridge_* 工具。守護進程未運行時,工具會返回 daemon_unreachable,不會靜默降級。

如果 profile 裏還裝着舊包 @dsh-external/dsh-kimi-browser,倉庫要求先移除再裝新版本:

dsh plugin --profile web remove @dsh-external/dsh-kimi-browser
dsh plugin --profile web add github:titanwings/dsh-better-browser#v0.3.6

@dsh-external/dsh-better-browser 的包身份、webbridge 行 id、全部工具名和配置字段保持穩定。

可選配置字段如下,非法 URL 或非正整數超時會在插件掛載時直接失敗:

字段 默認值 含義
baseUrl http://127.0.0.1:10086 守護進程的 http/https 地址
timeoutMs 30000 單次工具調用超時預算(毫秒)
- id: webbridge
  config:
    baseUrl: http://127.0.0.1:10086
    timeoutMs: 30000

典型用法

安裝完成後,倉庫給出的可復現示例是直接讓 Agent:

使用我的真實瀏覽器打開 GitHub,找到當前倉庫的 Issues,檢查最新三個問題,不要關閉我已有的標籤頁。

Agent 會爲任務選擇穩定的 session,依次導航、讀取頁面並執行交互。推薦的工具順序是:

navigate → snapshot → click/fill → snapshot → screenshot/network

snapshot 返回無障礙樹和 @e 元素引用,後續 click / fill 按引用或 CSS selector 操作。screenshot 返回守護進程寫入的臨時文件路徑,需要再用 Read 工具查看。

適用場景與注意事項

適合這類需求:

  • Agent 必須操作已經登錄的網站,又不想複製 Cookie 或重新登錄。
  • 導航、點擊、填寫、截圖和網絡檢查要組成一條完整工作流。
  • 希望瀏覽器狀態留在本機,而不是不斷塞進模型上下文。
  • 用戶要能在自己的瀏覽器裏看見、接管 Agent 打開的標籤頁。

當前限制(以倉庫 README 爲準):

  • 嚴格檢查 event.isTrusted 的站點可能忽略合成 click / fill。
  • snapshotclickfillevaluate 只作用於頂層 frame,不穿透跨域 iframe。
  • 截圖返回臨時文件路徑,不是內聯圖像。
  • 標籤組由守護進程維護,重啓守護進程會清空它們。

安全邊界需要單獨看一眼。本地優先不等於零風險:Agent 操作的是真實登錄會話,發送消息、提交表單、發佈內容等動作仍應遵守 DSH 的確認與權限策略。插件以當前 dsh 進程的權限運行,安裝時可能執行代碼。安裝前應檢查源代碼倉庫和許可證;本插件爲 BSD-3-Clause,Kimi WebBridge 則按月之暗面自身條款使用。

小結

dsh-better-browser 把用戶已經登錄的瀏覽器接到 DeepSeek Harness 上,用 13 個 webbridge_* 工具覆蓋導航、快照、交互、截圖、網絡檢查和標籤管理。它不內置瀏覽器驅動,依賴本機 Kimi WebBridge;裝的是 Cordis 插件,不是 DSH 核心補丁。

目錄頁:https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-better-browser/

GitHub:https://github.com/titanwings/dsh-better-browser

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

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

小夜