前言¶
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)。它不重寫瀏覽器控制邏輯,而是:
- 通過橋接進程
bin/chrome-mcp.mjs對接 Codex 的node_replMCP,並在每次調用中注入 Codex 要求的 turn 元數據(_meta.x-codex-turn-metadata)。 - 將瀏覽器 API 重新發布爲 DSH 可識別的 eleven 個
mcp__chrome__*工具。 - bundled
control-chromeskill,指導模型按「觀察 → 操作 → 再觀察」使用無障礙元素索引而非座標。
分類上屬於社區目錄中的「聯網工具」;目錄頁: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)。使用前需滿足:
- ChatGPT/Codex 桌面應用至少運行過一次,以便生成
~/.codex/plugins/cache/openai-bundled/{chrome,browser}/…(含browser-client.mjs、browser-service.mjs、extension-host)。 - 目標瀏覽器已安裝 ChatGPT/Codex 瀏覽器擴展,且 native messaging host
com.openai.codexextension已註冊(例如~/.config/google-chrome/NativeMessagingHosts/)。 - 目標瀏覽器正在運行。
可選環境變量(資料中列出的部分):
| 變量 | 含義 |
|---|---|
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。