dsh-edge-browser:用 CDP 讓 DSH 直接驅動本機 Edge

前言

在 DSH 裏做聯網、讀頁、截圖或簡單頁面交互時,常見做法是再掛一層 Playwright、Puppeteer 之類運行時,或走外部瀏覽器自動化服務。多一層依賴,往往意味着額外下載、版本對齊和 Host 進程裏的包體積。若你本機已經裝了 Microsoft Edge,且希望 agent 通過 Host 插件直接連 DevTools 協議(CDP)控制瀏覽器,可以看一下維護者 lingziba 發佈的 dsh-edge-browser(倉庫 lingziba/dshedge,社區目錄分類爲聯網工具)。

下面介紹它是什麼、提供哪些工具、如何安裝,以及典型調用順序與使用注意。

這是什麼

dsh-edge-browser 是 DeepSeek Harness 的 Host 插件:在 DSH agent 與 Edge 之間插入一組 edge_* 工具,由插件進程經 CDP 啓動或接管本機 Edge(--remote-debugging-port),完成開標籤、導航、執行 JS、取正文、截圖、點擊、輸入等操作。實現上只使用 Node.js 內置 node: 模塊和自研 WebSocket 客戶端,README 寫明零第三方依賴,不通過 Playwright/Puppeteer 下載瀏覽器。

數據流可以概括爲:

DSH agent  ──edge_* 工具──▶  插件(Host 進程)  ──CDP──▶  Edge (--remote-debugging-port)
                                     │                        ▲
                                     └── 專用 user-data-dir ───┘

HTTP /json/* 管理調試目標,WebSocket 下發 CDP 命令。默認使用專用配置目錄(Windows 上爲 %LOCALAPPDATA%\dsh-edge-browser\profile),既滿足 Chromium 136+ 對「遠程調試須非默認 profile」的要求,也避免動到你日常使用的 Edge 會話。只有真正操作瀏覽器時才建立 WebSocket;關閉標籤頁不會因此退出整個瀏覽器實例。

核心功能:11 個 edge_* 工具

安裝後由 bundle 提供下表工具(名稱與作用均來自倉庫 README):

工具 作用
edge_status 只讀探測:調試端口是否可達、版本、可執行文件、配置目錄、當前標籤頁
edge_launch 啓動或複用可控制的 Edge,可選直接打開網址;headless: true 可無頭運行
edge_tabs 列出標籤頁,取得 targetId
edge_open 新標籤打開網址,並設爲後續調用的默認目標
edge_navigate 讓已有標籤跳轉,並等到 document.readyState === 'complete'
edge_eval 在頁面執行 JS 表達式,返回 JSON 文本(支持 await Promise)
edge_text 取 document.body.innerText 正文,以及標題、地址
edge_screenshot 截圖落盤(PNG/JPEG、可整頁),返回路徑供 read_image 查看
edge_click 按 CSS 選擇器或可見文本點擊;滾動到可見處後發真實鼠標事件
edge_type 聚焦輸入框、清空、輸入文本,可 submit: true 回車
edge_close 關閉某個標籤頁;shutdown: true 可退出整個可控制實例

README 給出的典型鏈路是:edge_launch → edge_navigate → edge_text / edge_eval;需要視覺確認時用 edge_screenshot,再配合 read_image。

安裝與啓用

插件需放在之後不會移動的目錄:DSH profile 記錄的是該目錄的絕對 link 路徑,移動後需重新安裝。

1、取得插件代碼

README 提供兩種方式(二選一):

git clone https://github.com/lingziba/dshedge.git D:\dsh-plugins\dshedge
# 或網頁上 Code → Download ZIP,解壓到同一位置

以下示例路徑 D:\dsh-plugins\dshedge 請換成你本機實際目錄。

2、裝進 DSH profile

plugin_manager  install_bundle  target=D:\dsh-plugins\dshedge

3、驗證

裝完後讓 agent 執行一次 edge_status:README 說明應能看到 插件構建:1.0.4 以及 Edge 版本信息。

若暫時不想啓動瀏覽器,可在插件目錄執行(期望 20/20,秒級,校驗 schema 是否被當前 DSH 接受):

node test/definitions.mjs

package.json 要求 Node.js >=20;包名爲 dsh-edge-browser,許可證 MIT。

卸載

plugin_manager  remove_bundle  target=dsh-edge-browser

注意:target 是包名 dsh-edge-browser,不是倉庫名 dshedge。

配置(均可省略)

bundle 行 config 支持以下字段(默認值見 README):

字段 默認 說明
port 9222 Edge 調試端口
executablePath 自動探測 Windows / macOS / Linux 常見安裝位置與 PATH;可用環境變量 DSH_EDGE_PATH 覆蓋
userDataDir 按平臺 各平臺 dsh-edge-browser/profile 路徑
headless false 默認顯示窗口
windowSize — 例如 1440,900
defaultTimeoutMs 30000 單個 CDP 操作默認超時
launchTimeoutMs 25000 等待調試端口就緒上限

典型用法

在 agent 側,可按 README 推薦順序組織調用:

  1. edge_launch(必要時帶初始 URL 或 headless)
  2. edge_navigate 或 edge_open 到目標頁
  3. edge_text 或 edge_eval 取內容與頁內數據
  4. 需要交互時用 edge_click、edge_type
  5. 需要畫面時用 edge_screenshot,再用 DSH 的 read_image 讀返回路徑

維護者在 README「驗證狀態」一節記錄了宿主進程內 11/11 工具、定義自檢 20/20、以及 smoke.mjs / live.mjs 的端到端結果(含 example.com、baidu.com 等);你若在本機復現,應在非受限進程下跑 node test/smoke.mjs 或 node test/live.mjs --url https://example.com,並知悉受限沙箱下 Edge 渲染進程可能因令牌限制在 WebSocket 連頁面時失敗——插件正常運行路徑在 Host 進程,不受該限制影響。

適用場景與注意

適合誰: 已在 Windows / macOS / Linux 安裝 Edge、希望 DSH agent 在本機完成導航、正文提取、截圖和輕量 DOM 交互,且不想爲 Host 再引入 Playwright/Puppeteer 的開發者。

權限與安全: 插件以當前 DSH Host 進程權限運行,能啓動瀏覽器、讀寫專用 profile、在頁面執行任意 JS。安裝前應閱讀 GitHub 倉庫 源碼與 MIT 許可證,確認路徑與配置符合你的安全策略。

生態說明: DeepSeek Harness 採用「一切皆插件」的擴展方式;SkillHub 目錄頁 是社區收錄站點,與 DeepSeek / 幻方無官方從屬關係。

結尾

dsh-edge-browser 把 Edge 自帶的 CDP 接到 DSH 的 edge_* 工具鏈上:專用 profile、懶加載 WebSocket、無第三方瀏覽器自動化依賴。若你的 workflow 需要「本機 Edge + agent 可讀頁可截圖可點擊」,可按 README 的 plugin_manager install_bundle 安裝,用 edge_status 確認構建與版本後,再按 launch → navigate → text/eval 的路徑接入會話。

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

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

小夜