dsh-browser-computer:在 DSH 里一键装配浏览器与 macOS 电脑控制 MCP

前言

在 DeepSeek Harness(DSH)里做「能点网页、能读屏、能键鼠」的智能体,常见做法是自己在配置里挂 MCP:浏览器侧用 Playwright MCP,本机 UI 侧在 macOS 上再挂 Peekaboo。两条服务各自要写 command、处理 npx 路径、装浏览器二进制、对着系统设置查录屏与辅助功能权限,任一环节漏掉,会话里往往看不到 mcp__playwright__* 或 mcp__peekaboo__* 工具,排查也分散在配置层和 TCC 里。

dsh-browser-computer(维护者 fegnze,分类:客户端)把「让 DSH 驱动浏览器和电脑」收成一颗插件:用 cordis.patch.yml 声明 playwright-mcp 与 peekaboo-mcp 两行 MCP 装配,并额外提供 Host / Client 入口做环境检查、依赖预热、macOS 权限引导与连接自检。它不替你写 profile 配置(那是官方插件管理器的职责),也不会改系统权限,只在需要时打开对应的系统设置面板。

这是什么

  • 名称:dsh-browser-computer(npm 包名与仓库 fegnze/dsh-browser-computer 一致)
  • 当前版本(package.json):0.1.6
  • 许可证:MIT
  • 运行要求:Node >=22;DSH >=0.2.0-rc.2 <0.3.0
  • 目录页:https://www.skillhub.cn/plugins/fegnze/dsh-browser-computer
  • 源码:https://github.com/fegnze/dsh-browser-computer

插件遵循官方「仅配置 bundle」思路(templates/mcp + references/mcp-bundle.md):MCP 接线本身不需要 Host / Client 入口文件;本包在此基础上加了健康检查、修复逻辑和插件详情页上的状态 UI。

核心功能:两条 MCP 分别做什么

装配关系在 README 中写得很清楚:

配置行 提供方 能力概要
playwright-mcp @playwright/mcp 基于无障碍快照与稳定引用的真实浏览器控制:导航、点击、填写、标签页、截图、网络、Cookie / Storage 等
peekaboo-mcp @steipete/peekaboo 读写 macOS 无障碍树、截图、真实鼠标与键盘输入(仅 macOS)

command 在加载时通过 !!js 解析为与 node 同目录的绝对路径 npx,避免 Finder / Dock 启动的应用里 PATH 过短导致裸写 npx 时子进程静默失败。

除 MCP 外,插件对外刻意只暴露两个工具(降低常驻 schema 成本):

斜杠命令 工具名 副作用 作用
/browser-computer check browser_computer_check 无(不联网) 本地依赖、macOS 权限状态、profile 接线冲突
/browser-computer repair browser_computer_repair 可能安装包、打开系统面板 补依赖 → 检查并引导权限 → 校验 MCP 连接(verify: false 可跳过校验)

无参数时默认执行 repair。

激活或安装后会在后台自动跑一遍 repair(可通过 autoRepairOnStart: false 关闭):检查 Node / npx / 浏览器二进制与包缓存 → 用 npx -y <package> --version 预热两个 MCP(已缓存的不重复下载)→ 检查录屏与辅助功能(--no-remote,状态归属 DSH App 进程链)→ 未授权则打开对应系统设置。任一步失败只记一行日志,不会阻断插件激活。

插件详情页(官方槽位 plugins.detail.section)提供一行状态加一张状态卡(环境 / 三项权限 / MCP 连接),以及一个 Repair 按钮(POST /api/repair)。该 UI 只在本插件 bundle 详情出现,不会泄漏到其他插件页。

安装与启用

在 DSH 官方 Plugins 页面添加下列任一来源;若 profile 允许 CLI 管理,可使用 README 中的命令(将 <profile> 换成你的 profile 名)。若桌面 profile 仅由 Electron App 管理,应在 App 内插件管理器操作,不要用 CLI 去改该 profile。

# 1) 从 npm 安装(推荐;可指定 @version 以固定版本)
dsh plugin --profile <profile> add dsh-browser-computer

# 2) 从 GitHub 安装
dsh plugin --profile <profile> add github:fegnze/dsh-browser-computer

# 3) 本地开发(指向本仓库目录;仍可能需要刷新或重启)
dsh plugin --profile <profile> add link:<本仓库的绝对路径>

安装后必须完全退出并重新打开 DSH App。 README 中的测量结论是:安装后配置层会立刻出现 playwright-mcp / peekaboo-mcp,但未重启前运行会话里不会物化 mcp__playwright__* / mcp__peekaboo__* 工具,也不会拉起 MCP 子进程;Host 侧 JS 还被进程模块缓存,不重启可能仍报旧版本错误。

重启后可用以下方式验证:

  1. 让模型调用 browser_computer_repair
  2. 执行斜杠命令 /browser-computer repair
  3. 直接调用 MCP 工具,例如 mcp__playwright__browser_navigate

Client 侧还需再刷新一次插件详情页:App 重启后启动图才包含本插件的 client 入口,已打开的页面要刷新才能挂上详情区 UI。

典型用法

下面介绍从「装好」到「真能用」的最短路径。

  1. 按上一节命令安装到目标 profile,完全退出并重启 DSH App。
  2. 打开本插件在目录站或 App 内的详情页,看状态行;若权限或依赖未就绪,点 Repair,或在对话里执行 /browser-computer repair。
  3. 在 macOS 上按提示在「隐私与安全性」里为 DSH App(不是终端)勾选「屏幕录制」「辅助功能」;授权后再次重启 DSH App(TCC 变更对已运行进程不一定立即生效)。
  4. 在会话中让智能体使用 Playwright MCP 工具操作浏览器,例如导航:mcp__playwright__browser_navigate(具体参数以 MCP 工具 schema 为准)。
  5. 若只需自检、不安装不打开面板,使用 /browser-computer check 或工具 browser_computer_check。

Peekaboo 仅在 macOS 有意义;其他平台应只依赖浏览器侧能力,并自行确认 peekaboo 行是否适用。

macOS 权限:报告里的名字与系统设置

Peekaboo 报告中的「Event Synthesizing」在系统设置里没有同名开关,它依赖「辅助功能」授权:

报告中的名称 系统设置位置 影响
Screen Recording 隐私与安全性 → 屏幕录制 截图、窗口枚举
Accessibility 隐私与安全性 → 辅助功能 无障碍树读写、后台点击
Event Synthesizing 与辅助功能同一处;授权辅助功能后会自动引导 合成键盘、前台指针操作

两点务必记住:授权对象是 DSH App;改完权限后要重启 App。

适用场景与注意

适合谁

  • 已在 DSH 里做 agent,需要稳定可用的 Playwright 浏览器 MCP,并在 macOS 上需要读屏 / 键鼠自动化。
  • 希望把 MCP 接线、npx 路径、依赖预热和权限排查收成「安装插件 + 重启 + Repair」,而不是手写多段 MCP 配置。

安全与权限边界(安装前建议读 README 安全章节)

  • peekaboo-mcp 相关配置带有 --allow-foreground:没有它就无法真实点击和输入;若只做后台无障碍、可接受降级,可按 README 说明从 cordis.patch.yml 去掉该参数以降低权限。
  • Playwright MCP 提供 browser_run_code_unsafe 等能力时,应结合 README 完整安全说明评估是否接受。
  • 插件以当前 DSH 进程的权限运行;安装前请自行查看源码与 MIT 许可证,确认与你的工作区策略一致。

生态说明

DSH 的理念是「一切皆插件」;SkillHub 等社区目录是独立站点,与 DeepSeek / 幻方无官方从属关系,本文仅介绍社区插件本身。

结尾

dsh-browser-computer 把 playwright-mcp 与 peekaboo-mcp 收成一颗客户端插件,用自动 repair、斜杠命令和详情页 UI 把依赖、macOS TCC 与 MCP 连接问题压到可重复的几步操作里。需要进一步了解参数与安全边界时,以仓库 README 与 docs/zh.md 为准。

  • 目录页:https://www.skillhub.cn/plugins/fegnze/dsh-browser-computer
  • GitHub:https://github.com/fegnze/dsh-browser-computer
羽毛球分组比赛记分
小程序二维码

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

小夜