前言¶
在 DSH 裏做需要瀏覽器的能力時,常見做法是單獨掛 MCP 服務端,再在另一個通道里和「另一臺機器或另一個會話」對聊。路徑一多,檔案目錄、登錄態和回執狀態就容易對不齊。下面介紹的 mira_browser(維護者 Stella-Mira,GitHub Stella-Mira/mira_browser,當前版本 0.2.0,MIT)把兩件事收進一個 DSH 工作流插件:通過補丁拉起 ai_browser 的 Python MCP,註冊 mcp__aibrowser__*;同時提供 collab_*,把同機或其它機器上的 DSH 會話當作對端收發消息。社區目錄 SkillHub 分類爲「工作流」,見 目錄頁。
這是什麼¶
一句話:DSH 瀏覽器與協作插件——接上 ai_browser 的 MCP 服務端,並把另一個 DSH 會話當成對端收發消息(collab_*)。
插件在宿主裏通過 cordis.patch.yml 插入兩行(順序不能顛倒):mira-browser-dirs 由本包 lib/index.js 在 apply 時同步建好瀏覽器檔案與臨時目錄;mcp-aibrowser 由 @deepseek-ai/dsh-mcp-client 以 stdio 拉起 ai_browser.mcp_server。所有工具返回 JSON 文本({ok:true,...} 或 {ok:false,error:{code,message,hint}})。
核心功能¶
ai_browser 作爲 DSH 瀏覽器工具¶
補丁註冊後,模型側可用 MCP 瀏覽器工具,例如:
| 工具 | 作用 |
|---|---|
mcp__aibrowser__browse |
渲染網頁並返回純數據 JSON |
mcp__aibrowser__session_open / session_act / session_list / session_close |
有狀態會話 |
mcp__aibrowser__collect |
記錄級抓取(自動翻頁) |
mcp__aibrowser__cookies_import |
把 cookie 文件導進某個 profile |
缺 listen 時,上述 MCP 工具不受影響;只有 collab_* 會報配置缺失。
collab_*:跨會話協作¶
保留 0.1.0 的瀏覽器驅動思路(結構信號、選中行守衛、默認插話),0.2.0 新增穩定別名表、兩級回執、send_many、以及 queue/inflight 可觀測。共 10 個 collab_* 工具,例如 collab_list / collab_read / collab_send / collab_send_many / collab_wait / collab_receipt / collab_status,以及 collab_alias_set / collab_alias_list / collab_alias_remove。
collab_send 成功時會帶 receiptId、一級 receipt 與二級回執字段(見 README「工具清單」)。session 與會話標題尋址在 0.2.0 改爲精確匹配;若以前靠標題前綴,需用 collab_alias_set 登記別名。
本節點 listen 與入站投遞¶
在配置裏手填 listen 後,本節點開始監聽;對端可向本機 POST /collab/deliver 直投會話(走宿主 sessionController 的 steer/followup,不是去點本機 GUI)。非迴環監聽時,入站需 Authorization: Bearer <listen-token 文件內容>;無令牌文件時除 /healthz 外一律 403。
配置要點¶
運行期文件落在 $DSH_HOME/mira_config/mira_browser/(DSH_HOME 默認爲 ~/.dsh),包括 config.json、aliases.json、可選 listen-token 與 creds/<target>.json 等。優先級爲:內置默認值 ← config.json ← 宿主 profile 補丁里的 config:,最顯式的一方生效。
profile 層常見鍵(與 0.1.0 兼容,本輪只新增 listen)示例:
config:
enabled: true
python: $HOME/DeepSeek/Browser/.venv/bin/python
aiBrowserHome: $HOME/DeepSeek/Browser
playwrightBrowsersPath: $HOME/.cache/ms-playwright
root: $HOME
profilesDir: $HOME/.mira_browser/profiles
tmpDir: $HOME/.mira_browser/tmp
localGuiUrl: http://127.0.0.1:3080/
proxyPort: 8543
targets: []
listen 必須在 config.json 中手填,否則全部 collab_* 返回 config/missing;首次加載若無 config.json 會生成帶空 listen 的模板(權限 600),填完後重載插件即可。對象形態示例:
{ "schemaVersion": 1, "listen": { "ip": "192.0.2.10", "port": 8544 } }
同機快速試驗可用:
{ "schemaVersion": 1, "listen": "loopback" }
cordis.patch.yml 裏 mira-browser-dirs 與 mcp-aibrowser 必須共用同一套 profilesDir / tmpDir,否則 MCP 與 collab_* 各用一套瀏覽器檔案,登錄態不共享。
安裝與啓用¶
DSH 生態裏插件以 bundle 形式掛載;本包在 package.json 中聲明 "dsh": { "bundle": { "patch": "./cordis.patch.yml" } },安裝後補丁會自動注入上述兩行。
SkillHub 目錄頁給出的安裝表述爲:請安裝 DSH 插件 Stella-Mira/mira_browser(頁面未提供其它 shell 安裝命令,勿自行拼接未在文檔出現的 dsh plugin add 形式)。安裝前請閱讀 GitHub 倉庫 源碼與 MIT 許可證;插件以當前 dsh 進程權限運行,遠程目標口令建議放在 creds/<target>.json(600),而非明文寫在可共享的配置裏。
啓用協作前完成:
- 準備好 ai_browser 運行環境(
python、aiBrowserHome、playwrightBrowsersPath;Windows 等環境見 README「跨平臺默認值」或環境變量MIRA_BROWSER_*)。 - 在
config.json填寫listen,必要時配置targets與listen-token。 - 重載插件;用
collab_status查看 listen、別名、queue/inflight 等狀態。
典型用法¶
只用車載瀏覽器 MCP¶
profile 裏配好 Python 與 ai_browser 路徑即可;不必填 listen。在會話中調用 mcp__aibrowser__browse 或 session_* 做有狀態操作。
本機兩個 DSH 會話互發¶
- 協作端 A:
listen設爲"loopback",記下collab_status裏的實際監聽與reply_to(迴環下爲http://127.0.0.1:<端口>/,僅適合同機)。 - 用
collab_alias_set給對端會話登記穩定別名(精確標題或sessionId)。 - 調用
collab_send投遞文本;需要批量時用collab_send_many。 - 用
collab_wait等對端回覆,或用collab_receipt刷新二級回執;排障時看collab_status的 queue/inflight。
遠程 DSH 實例¶
在 profile 或 config.json 的 targets 中增加 { name, baseUrl, user?, pass? }(baseUrl 爲對方 mira_proxy 入口,名稱精確匹配)。口令優先讀 creds/<target>.json。對端需能把 HTTP 投遞打回你配置的 listen 地址(跨機勿用僅 127.0.0.1 可回的 loopback)。
適用場景與注意¶
適合誰:需要在 DSH 工作流裏統一使用 Playwright 瀏覽器 MCP,並驅動本地 GUI 或其它 DSH 節點會話做自動化協作的開發者。
務必注意:
- 未配置
listen時插件仍會加載並建目錄,但所有collab_*不可用;MCP 瀏覽器工具照常。 - 0.2.0 工具返回由中文文本改爲 JSON;升級自 0.1.0 請先看 README「升級注意」。
targets在 profile 層若寫targets: []會整體覆蓋config.json裏的 targets;要加遠程目標需改 profile 或去掉 profile 中的空數組。- SkillHub 爲社區目錄,與 DeepSeek / 幻方無官方從屬關係;星標與更新節奏以 GitHub 與目錄頁爲準。
結尾¶
mira_browser 把 ai_browser 的 MCP 與 DSH 會話協作收進同一插件:瀏覽器側用 mcp__aibrowser__*,協作側用 collab_* 與手填 listen。進一步細節以 README 的配置表與工具清單爲準。