dsh-codex-chrome:在 DSH 裏複用 Codex 原生 Chrome 控制能力

前言

DeepSeek Harness(DSH)裏的智能體若要操作真實瀏覽器,常見做法是再起 Playwright、Puppeteer 或獨立 MCP 服務,會話、cookies 與你在日常 Chrome 裏已登錄的狀態往往對不上。OpenAI Codex 自帶的 chrome@openai-bundled 插件本來就能驅動用戶本機 Chrome(標籤頁、登錄態、無障礙樹、截圖與輸入),但它綁定在 Codex 的 node_repl 宿主上,不能直接當作 DSH 的 MCP 工具用。

下面介紹社區插件 dsh-codex-chrome(維護者 BruceZhang1993,GitHub:BruceZhang1993/dsh-codex-chrome):把 Codex 的 Chrome 插件運行時遷進 DSH,對外暴露一組原生 mcp__chrome__* 工具,並附帶 control-chrome skill,運行時零額外依賴(複用 Codex 已緩存的 browser-client.mjs / browser-service.mjs)。

這是什麼

dsh-codex-chrome 是 DeepSeek Harness 的 bundle 插件(版本 0.1.0,MIT 許可證,要求 Node.js ≥ 20)。它不重寫瀏覽器控制邏輯,而是:

  1. 通過橋接進程 bin/chrome-mcp.mjs 對接 Codex 的 node_repl MCP,並在每次調用中注入 Codex 要求的 turn 元數據(_meta.x-codex-turn-metadata)。
  2. 將瀏覽器 API 重新發布爲 DSH 可識別的 eleven 個 mcp__chrome__* 工具。
  3. bundled control-chrome skill,指導模型按「觀察 → 操作 → 再觀察」使用無障礙元素索引而非座標。

分類上屬於社區目錄中的「聯網工具」;目錄頁:skillhub.cn 插件頁。社區目錄爲獨立站點,與 DeepSeek / 幻方無官方從屬關係。

Codex Chrome 插件在 DSH 側的含義

在 Codex 裏,Chrome 能力在 ~/.codex/config.toml 中啓用:

[plugins."chrome@openai-bundled"]
enabled = true

它並非獨立 MCP 服務器,而是 skill、hooks 與 vendor 運行時三部分的組合;實際控制由 Codex 緩存目錄下的腳本完成,且只能在 Codex node_repl 宿主內作爲 trusted service 運行。本插件的遷移策略是複用該 vendor 運行時,而不是另寫一套瀏覽器驅動。

DSH 側 @deepseek-ai/dsh-mcp-client 不支持 per-call _meta,因此橋接層必須在調用 node_repl 時注入 session_id、turn_id 等元數據,否則瀏覽器服務會直接報錯(例如缺少 session_id、turn_id)。

核心功能:十一個 MCP 工具

重啓 profile 後,模型可見下列工具(名稱前綴均爲 mcp__chrome__,下表省略前綴):

工具 作用
chrome_status 列出已連接瀏覽器、當前綁定與打開的標籤
chrome_select 綁定瀏覽器:chrome / edge / brave / vivaldi / opera / iab / extension / default / auto
chrome_tabs list / new / select / close / user_tabs / claim
chrome_navigate goto / back / forward / reload
chrome_observe state(無障礙樹,推薦)/ dom / visible_dom / screenshot / both
chrome_act via:"ax":點擊、填值、輸入、按鍵等;via:"locator":Playwright 定位器操作
chrome_read 讀文本、屬性、可見性、計數等
chrome_evaluate 在頁面內求值(只讀表達式)
chrome_wait 等待 URL、加載、超時或選擇器
chrome_js 在 Codex 運行時內執行 JS(agent / browser / tab 在作用域內)
chrome_end_turn 釋放本 turn 的瀏覽器控制權(對應 Codex Stop hook)

推薦工作流(skill 中說明):observe → act → observe;優先用無障礙樹返回的元素索引,每次操作後重新 observe 以刷新索引。

典型觀察調用示例(來自 README 說明):

chrome_observe { "mode": "screenshot", "fullPage": true }

可在用戶自己的 Chrome 當前頁面上取得整頁截圖,而無需另開無頭瀏覽器。

安裝與啓用

DSH Desktop

在應用內打開插件管理器,從本插件目錄安裝 bundle(或待發布後從 registry 安裝)。Desktop profile 僅由應用管理,不能使用 CLI 的 dsh plugin --profile desktop add …(會被拒絕)。

CLI profile(web 等)

將路徑換成本機 clone 或下載後的絕對路徑:

dsh plugin --profile web add /absolute/path/to/dsh-codex-chrome

等價的手動做法:在 profile 的 package.json 中加入依賴與 bundle 條目,然後在 profile 目錄執行 pnpm install:

"dependencies": { "dsh-codex-chrome": "link:/path/to/dsh-codex-chrome" }
"dsh": { "profile": { "bundles": [ "…", "dsh-codex-chrome" ] } }

安裝並重啓後,應能看到上述十一個 mcp__chrome__* 工具及 control-chrome skill。

環境與前置條件

插件在 README 中聲明的開發驗證環境爲 Linux(Arch,Chrome 154,Wayland 與 X11)。使用前需滿足:

  1. ChatGPT/Codex 桌面應用至少運行過一次,以便生成 ~/.codex/plugins/cache/openai-bundled/{chrome,browser}/…(含 browser-client.mjs、browser-service.mjs、extension-host)。
  2. 目標瀏覽器已安裝 ChatGPT/Codex 瀏覽器擴展,且 native messaging host com.openai.codexextension 已註冊(例如 ~/.config/google-chrome/NativeMessagingHosts/)。
  3. 目標瀏覽器正在運行。

可選環境變量(資料中列出的部分):

變量 含義
CODEX_HOME Codex 主目錄,默認 ~/.codex
DSH_CODEX_CHROME_NODE_REPL node_repl 可執行文件的絕對路徑(README 截斷處另有說明)

維護者在倉庫中提供自檢命令,可在安裝後本地驗證包一致性、MCP 握手與瀏覽器連通性:

node scripts/check-package.mjs
node --test
node scripts/doctor.mjs
node scripts/doctor.mjs --deep
node scripts/smoke.mjs

適用場景與注意

適合誰: 已在 Codex 生態中使用 Chrome 擴展 + native host,希望在 DSH 會話裏讓智能體操作同一套瀏覽器狀態(已開標籤、登錄會話、cookies)的開發者;需要無障礙樹驅動點擊輸入、整頁截圖、導航與簡單 DOM 求值的自動化任務。

權限與安全: 插件以當前 DSH 進程權限運行,瀏覽器操作等同於本機用戶可操作範圍。安裝前應閱讀 GitHub 源碼 與 MIT 許可證,確認 bridge 與 vendor 腳本行爲符合你的安全策略。

實現層面的限制(README 說明): 瀏覽器服務激活後 Codex 內核文件系統只讀,截圖不能寫盤,經 nodeRepl.emitImage 與橋接層回傳;無障礙索引與產生它的 observe 調用綁定,chrome_act 會在操作前重新讀取狀態;vendor 截圖路徑可能把 JPEG 標成 PNG,橋接會按 magic bytes 校正類型以通過 DSH 校驗。

不適用: 無 Codex 緩存與擴展的環境、非 Linux 且未自行驗證的平臺,或期望完全脫離 OpenAI Codex 運行時、純 DSH 內置瀏覽器棧的場景——本插件的設計前提就是複用 Codex shipped 的 browser service。

結尾

dsh-codex-chrome 把 Codex chrome@openai-bundled 的能力以 DSH 原生 MCP 工具形式接進來,減少重複造瀏覽器自動化輪子,同時保留用戶真實 Chrome 裏的會話與標籤。若要查看分類與簡介,可打開 SkillHub 目錄頁;安裝、工具表與 doctor 腳本詳見 GitHub 倉庫 README。

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

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

小夜