mcpField
G
glovebox

glovebox

本地服务
github.com/vpatel9202AI 与智能体04 天前更新

关于 glovebox

glovebox 是面向 macOS 编码 Agent 的电脑操作 MCP 服务,可通过持久 JavaScript 会话批量执行界面步骤。它默认读取辅助功能文本差异,并支持后台输入,适合需要在其他应用继续可见时自动操作的场景。

主要功能

  1. 01持久 JavaScript 会话与脚本步骤
  2. 02读取辅助功能树及变化差异
  3. 03点击、输入、拖动与滚动
  4. 04后台操作目标应用
  5. 05截图与像素坐标操作备用

适用场景

  1. 01让编码 Agent 操作 macOS 应用
  2. 02通过辅助功能状态检查操作结果
  3. 03执行多步界面流程并保留会话状态

MCP 相关

通过 MCP stdio 提供电脑操作工具;也可通过命令行供可运行 shell 命令的 Agent 使用。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"vpatel9202-glovebox": {
"command": "npx",
"args": [
"-y",
"@vashp2029/glovebox"
]
}
}
}
启动命令npx -y @vashp2029/glovebox

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@vashp2029/glovebox0.3.2

工具

2

收录的工具列表 · 更新于 3 天前

参数类型必填说明
codestring是要运行的 JavaScript。支持顶层 await。
titlestring否为此步骤命名的简短文字,用于操作日志。
timeout_msinteger否时间限制,单位为毫秒(默认值为 120000)。

详细介绍

glovebox

CI npm License: MIT Platform: macOS

为 macOS 上的编码 Agent 提供计算机操作能力:每步只需调用一次 JavaScript, 使用无障碍差异而非屏幕截图,并且不占用你的屏幕。

有人在 Safari 中浏览维基百科,同时 Agent 在后台操作计算器并将结果输入 TextEdit

const calc = await gb.getApp("Calculator");
await calc.pressKey("Escape");
await calc.typeText("6*7=");
await calc.getAXState();
Calculator — window 0 "Calculator" — image 460x816 — changes since last read (~ changed, + added):
~					8 scroll area id=StandardInputView;value:42
~						9 text "Edit field" value="42"

下一次调用时,calc 仍然保持绑定。Agent 每步只需编写几行代码, 而不是每次点击都调用一次工具;它读取的是发生了哪些变化,而非窗口的全新截图。

  • 每步运行一段脚本,而非每次点击都调用工具。 绑定和辅助函数会 在多次调用间保留,因此一次调用即可点击、输入、循环和读取。
  • 使用差异,而非屏幕截图。 默认读取内容是无障碍树的文本形式, 后续读取只显示变化。如果无障碍树为空(Citrix、画布),则可使用屏幕截图和像素点击。
  • 默认在后台操作。 你在其他应用中继续工作时,按键、点击、拖动和滚动仍会作用于目标应用。 光标会保持原位,并会显示一个绘制出来的光标,指示 Agent 正在执行的操作。

在作者进行的测试中,使用 6 种配置完成 12 项任务(每项运行 2 次), glovebox 的总成本最低,为 $0.57,而其他配置为 $1.41 至 $5.67;它的往返次数最少,通过次数最多。

请先了解: 仅支持 macOS,已在 Apple 芯片的 macOS 27 上测试。你需要 Xcode 命令行工具来 构建一个小型辅助应用,并授予它“辅助功能”和“屏幕录制”权限。后台输入使用两个私有 macOS 调用,并提供前台回退方案。端到端测试仅覆盖了 Claude Code。尽管名称中有 glovebox, 它并非沙箱,也与 glovebox-mcp 无关。

快速开始

需要 Node 20.10+ 和 Xcode 命令行工具(xcode-select --install)。

npm install -g @vashp2029/glovebox
glovebox signing --create   # optional: macOS keeps the grants across helper rebuilds
glovebox setup              # builds the helper, walks through permissions
glovebox doctor             # every line should say ok
glovebox smoke              # a real end-to-end test on Calculator
claude mcp add --scope user glovebox -- glovebox mcp

setup 会将 Glovebox Helper.app 构建到 ~/.glovebox/,并提示你在“系统设置”>“隐私与安全性”> **“辅助功能”和“屏幕与系统音频录制”中启用它。“输入监控”**为可选权限,仅用于启用按 Escape 停止。 辅助应用是独立的应用,因此授予一次权限即可供所有 Agent 和终端使用。signing --create 会在你的登录钥匙串中 创建自签名证书,仅用于签署辅助应用。如果不创建证书,macOS 会将每次重新构建都视为新应用;请参阅升级说明。

适用对象: Claude Code(已完成端到端测试)。Codex、Grok CLI、OpenCode、 Gemini CLI 和 Cursor 都有文档介绍其配置,但尚未实际验证。 任何能够运行 shell 命令的 Agent 都可以使用 glovebox run。 请参阅 docs/agents.md。

为什么不使用 Claude Code 内置的计算机使用功能?

如果它适合你的设置,那它是更简单的选择:无需安装,受 Anthropic 支持,而且不会让你的终端出现在截图中。glovebox 面向不适合使用它的情况。以下内容摘自 Anthropic 的文档,核查日期为 2026-11-03:

Claude Code 内置功能glovebox
你的其他应用Claude 工作时会隐藏保持可见;输入会在后台发送到目标应用
默认读取方式缩小后的截图无障碍文本差异
谁可以使用通过 claude.ai 使用的 Pro、Max 或 Ultra;不包括 Team、Enterprise、Bedrock、Google Cloud 或 Foundry任何人;它不会与模型或账户通信
脚本化运行不支持 -p 模式基准测试会通过脚本驱动它自动运行;尚未测试 claude -p 本身
会话一次一个,由锁文件强制执行没有全局锁;可同时运行多个命名会话
记住授权仅限当前会话允许本次会话或始终允许
浏览器仅查看批准浏览器后可完全控制,权限更大,风险也更高

Claude Code 内置工具未参与下方基准测试,因此此表比较的是文档所述行为,而非实测结果。

基准测试

2026-11-03,在 macOS 上测试了 12 项任务、6 种配置,每项任务运行两次。所有配置使用相同的模型(Claude Sonnet 5.5,中等强度)、提示词和 Agent 循环;唯一变化的是工具。任务提示词未指定任何工具,并通过一个不使用待测工具的独立检查来判定结果。

配置通过往返次数返回的图像数按标价计算的费用
glovebox24/2412821$0.57
由 Claude 驱动的 Codex cua_repl20/2416630$1.41
由 glovebox 运行的 Anthropic 工具集22/24187179$1.65
agent-desktop22/2420422$2.32
open-computer-use21/24244385$2.76
Peekaboo20/24359183$5.67

各配置每项任务的往返次数中位数和费用

glovebox 未胜出的方面。 在 finder-rename 上,它并非最便宜(费用为 $0.061,而 Codex cua_repl 为 $0.041)。在 12 项任务中,它有 3 项往返次数不是最少,还有 3 项耗时不是最短。在 remote-desktop 上,它耗时 36 秒,而另外两种配置分别耗时 22 秒和 23 秒。

这些结果有多大参考价值:

  • 任务由我编写,测试也由我在一台 Mac 上一次完成。几项任务(bulk-entry、remote-desktop、coexistence)是围绕 glovebox 的目标设计的。
  • 每项任务只运行两次,因此通过次数意义不大:24/24 与 20/24 的差异不具备统计显著性。费用差距则更可靠,因为逐项任务都能体现这一点:glovebox 在 12 项任务中至少有 11 项的费用低于其他每种配置。
  • 测试的 glovebox 是以 0.3.0 版本发布的代码。结果文件中写的是 0.2.0,因为当时尚未更新版本号。
  • “Anthropic 工具集”指 Anthropic 的 API 计算机使用工具集,通过 glovebox 的前台路径执行。它因该路径而在 coexistence 上失败,因此这一结果不能代表已发布产品的表现。“Codex cua_repl”测量的是该工具在 Claude 下的表现形式,并非使用自身模型的 Codex。
  • Peekaboo 的第一次测试在允许前台输入后重新运行,这对它有所帮助。它在 bulk-entry 上的两次失败,是因为运行触及了我设定的每次 $0.75 预算上限。agent-desktop 通过其 CLI 运行,而非 MCP 模式。

测试方法、各任务的数据和原始结果:bench/ 和 bench/results/v2/summary.md。

对比

于 2026-11-03 对照各项目的 README 和文档进行核查。“—”表示无法从中确认。

平台每次调用的操作数调用间状态默认读取内容差异读取后台输入需求
gloveboxmacOS多个(一个脚本)持久 JS 会话辅助功能文本是是需安装 Xcode CLT 以构建辅助工具
Claude Code 内置功能macOS(CLI)——截图—否,会隐藏其他应用Pro、Max 或 Ultra
Codex 电脑操控macOS、Windows多个(一个脚本)持久 JS 会话辅助功能文本是macOS 上支持ChatGPT 应用和插件
lcumacOS(Apple silicon)、Linux与 Codex 相同;它运行 Codex 的运行时与 Codex 相同与 Codex 相同与 Codex 相同—已安装 ChatGPT 应用
agent-desktopmacOS、Windows、Linux每条命令一个,另有 batch引用与快照绑定辅助功能树 JSON—是Homebrew 或 npm
PeekaboomacOS 15+每条命令一个来自快照的元素 ID截图或 JSON UI 映射—是Homebrew 或 npm
open-computer-usemacOS、Linux、Windows每次 MCP 调用一个;CLI 支持序列—应用状态——npm
computer-use-mcpmacOS 14+每次调用一个元素 ID每次操作提供截图和树—是经公证的二进制文件
cua-drivermacOS、Windows、Linux————是参见其文档

如果你需要 Windows 或 Linux(agent-desktop、cua-driver、lcu),无需构建步骤的经公证二进制文件(computer-use-mcp),或者想使用 OpenAI 的实际运行时且已安装 ChatGPT 应用(lcu),请选用其他方案。

安全性

会话首次操作某个应用时,你会看到一个对话框:允许本次会话、始终允许或拒绝。除非运行 glovebox allow <bundle id>,否则终端、密码管理器、系统设置和其他少数应用会被屏蔽;列表见 SECURITY.md。如果脚本必须将某个应用置于前台,而你切换到其他应用,脚本就会停止。在后台运行的脚本会在你使用其他应用时继续执行;如果你授予“输入监控”权限,按下 Escape 可停止任何脚本。每项操作都会记录到 ~/.glovebox/actions.log。

获准的应用意味着其中的所有内容都已获准:允许浏览器后,Agent 就可以使用你已登录的所有网站。glovebox 不会筛查页面内容以检测提示词注入。请将其视为把该应用的远程控制权交给他人。详情:SECURITY.md。

已知问题: 后台应用的弹出菜单打开时,macOS 会将你的按键发送给该应用,因此你输入的文字可能会落入其中(详情)。

工作原理

agent ──MCP stdio──▶ glovebox mcp ──▶ kernel (persistent JS session)
agent ──shell──▶ glovebox run ──▶ daemon ──▶ kernel        │
                                                            ▼ Unix socket
                                        Glovebox Helper.app (Swift: AX, CGEvent,
                                        ScreenCaptureKit, approval dialogs)

后台输入会使用两个 macOS(SkyLight)私有函数,并在运行时查找;若不可用则回退到前台输入;glovebox doctor 会报告你使用的路径。其他所有功能都使用公开 API。不包含 OpenAI、Anthropic 或其他供应商的二进制文件。

状态

平台状态
macOS可用。为 macOS 14+ 构建;仅在 macOS 27(Apple silicon)上测试。
Windows计划支持(UI Automation)。参见路线图。
Linux计划支持(AT-SPI;Wayland 支持有限)。参见路线图。

运行真实测试,而非模拟测试:通过 MCP 运行 glovebox smoke 和 smoke --full(批处理步骤、持久绑定、差异、像素点击,以及在另一应用处于前台时执行后台点击、拖动和滚动);并通过 glovebox mcp 连接 Claude Code。完整列表:docs/testing.md。

一屏了解 API

  • gb.getApp(name) 可启动或查找应用,且不会抢占焦点。gb.listApps()。
  • app.getAXState() 以文本形式返回无障碍树;后续读取返回差异。{frames: true} 会添加元素框,{disableDiffing: true} 会返回完整树。
  • app.getScreenshot() 是获取图像的唯一方式。
  • app.click(target)、doubleClick、rightClick、scroll、drag、setValue、focus、selectText、performSecondaryAction。
  • app.pressKey("ctrl+a") 使用 xdotool 名称(super 表示 Cmd)。app.typeText("text\n")。
  • app.waitForChange() 和 app.settle() 用于等待延迟更新。
  • 目标可以是树中的元素索引,也可以是窗口图像中的 [x, y] 像素坐标,即截图的像素空间。

完整参考:docs/api.md,或在会话中调用 help()。

文档

  • docs/api.md:面向 Agent 和脚本作者的脚本 API。
  • docs/agents.md:连接各个 MCP 客户端或仅使用 shell 的 Agent。
  • docs/cli.md:所有子命令、标志、配置项和环境变量。
  • docs/recipes.md:可粘贴到一次 js 调用中的简短脚本。
  • docs/design.md:面向贡献者和评估者的设计决策及其原因。
  • docs/backend-protocol.md:辅助程序协议,用于移植到新平台。
  • docs/testing.md:单元测试和冒烟测试,以及在真实硬件上运行过的测试。
  • docs/roadmap.md:计划中的工作;其中没有已发布的内容。
  • SECURITY.md:哪些内容能保护你、哪些不能,以及如何报告漏洞。
  • CONTRIBUTING.md:从克隆开始的设置、测试和拉取请求规则。
  • CHANGELOG.md:各版本的变更和升级说明。

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。