mira_browser:把 ai_browser MCP 与 DSH 会话协作接到同一套工具里

前言

在 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),而非明文写在可共享的配置里。

启用协作前完成:

  1. 准备好 ai_browser 运行环境(python、aiBrowserHome、playwrightBrowsersPath;Windows 等环境见 README「跨平台默认值」或环境变量 MIRA_BROWSER_*)。
  2. 在 config.json 填写 listen,必要时配置 targets 与 listen-token。
  3. 重载插件;用 collab_status 查看 listen、别名、queue/inflight 等状态。

典型用法

只用车载浏览器 MCP

profile 里配好 Python 与 ai_browser 路径即可;不必填 listen。在会话中调用 mcp__aibrowser__browse 或 session_* 做有状态操作。

本机两个 DSH 会话互发

  1. 协作端 A:listen 设为 "loopback",记下 collab_status 里的实际监听与 reply_to(回环下为 http://127.0.0.1:<端口>/,仅适合同机)。
  2. 用 collab_alias_set 给对端会话登记稳定别名(精确标题或 sessionId)。
  3. 调用 collab_send 投递文本;需要批量时用 collab_send_many。
  4. 用 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 的配置表与工具清单为准。

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

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

小夜