用途
glass 是一个 Rust 编写的 MCP 服务器,为 AI 编程智能体提供对外部原生 GUI 应用的闭环操作能力:构建 → 查看 → 交互 → 调试。它让智能体能够启动 GUI 应用、捕获屏幕内容、注入鼠标和键盘输入、读取应用日志并检测视觉变化,从而独立构建和调试 UI 应用,而不是反复询问用户“这样看起来对吗”。
主要能力
- 启动与驱动:智能体可以启动 GUI 应用,并以外部黑盒方式驱动它,适用于任何工具包或语言编写的原生 GUI 应用。
- 查看与验证:支持截图(glass_screenshot)、无障碍树快照(glass_a11y_snapshot)以及帧差异检测(glass_diff,返回 changed_pct 和 bbox 文本,常规检查无需消耗视觉 token)。
- 交互:注入鼠标和键盘输入,支持点击、滚动和文本输入。glass_capabilities 配合 scope: "session" 可报告这些能力是否会影响你的桌面。
- 元素查找:glass_find_elements 用于检查候选元素,当目标不唯一或不够明确时使用。
- 日志读取:可以读取应用日志,辅助调试。
- 会话证据记录:通过 --trace-dir 可选启用,保留工具输入和请求结果在有限存储中,之后可用 glass-mcp trace inspect 和 trace export 验证并打包证据为 ZIP。默认关闭,保留的应用内容可能包含敏感数据。
平台支持
glass 提供以下后端:
- Linux:X11 和 Wayland 两个后端。
- Windows:原生后端。
- Android:AVD 模拟器,通过 adb 从任意主机驱动。
- iOS:模拟器中的原生应用,通过 xcrun simctl,输入和无障碍树通过 idb_companion,包括双指捏合。
- macOS:原生后端。
默认 Linux 显示和移动模拟器将输入与你的桌面分离;原生 Windows 和 macOS 目前共享输入。完整矩阵和系统要求见 docs/reference/platforms.md。传输方式为 MCP over stdio(默认)或网络 HTTP。
使用方式
- 从 Releases 页面下载对应平台的 glass 构建。
- 按照平台设置指南配置主机:Linux(docs/how-to/setup-linux.md,X11 或 Wayland;Xvfb / sway + bubblewrap)、Windows(docs/how-to/setup-windows.md,预构建 .exe + Sandboxie)、macOS(docs/how-to/setup-macos.md,安装公证的 .dmg,无需构建)、Android(docs/how-to/setup-android.md,AVD 模拟器,任意主机)、iOS(docs/how-to/setup-ios.md,模拟器,仅 macOS 主机)。
- 将 glass 连接到你的智能体,并运行 glass-mcp doctor 检查环境。
- 可选:使用 glass-mcp --tool-profile lean 减少智能体工具定义,用 glass_do 执行操作;用 glass-mcp tools --json 检查工具清单。
- 推荐安装开源的 glass-drive Agent Skill,帮助智能体更可靠地驱动 glass,避免在初始阶段重新发现“先廉价验证再查看”的循环。
示例:让智能体使用 glass 运行 examples/tasks-demo/tasks_demo.py(开启无障碍),复现“点击 Add 不添加任务”的 bug,通过驱动 UI 和无障碍树检查(而非仅截图)定位并修复代码中的 bug,然后验证任务确实出现。
适用场景
- AI 编程智能体构建和调试原生 GUI 应用。
- 需要自动化验证 UI 交互结果的场景。
- 跨平台(Linux、Windows、macOS、Android、iOS)的 GUI 测试与调试。
- 需要从无障碍树复现 bug 而无需截图的场景。
- 需要记录和审查运行证据的场景(可选)。
限制
- 对于没有无障碍树的画布或自定义渲染应用,需通过像素驱动(截图、点击坐标、差异检测)。
- 原生 Windows 和 macOS 的输入会与桌面共享。
- iOS 后端仅支持 macOS 主机。
- 会话证据记录默认关闭,保留的应用内容可能包含敏感数据。
- 具体平台能力支持程度(完整/部分/不支持/计划中)需参考 docs/reference/platforms.md。
- glass 为开放核心,采用 Apache-2.0 许可。