乐于分享
好东西不私藏

AI 终于能操控你的 Mac 了:Peekaboo 3.0 来了

AI 终于能操控你的 Mac 了:Peekaboo 3.0 来了
"我去年就开始做这件事了,但当时的模型还不够好。现在它们够了。"—— Peter Steinberger,Peekaboo 作者

这句话不是谦辞,而是一个信号:AI Computer Use 的时代,真的来了。

背景:为什么这件事很难

让 AI 看懂屏幕并执行操作,听起来简单,实际上是一个多层次的技术难题。

传统的 GUI 自动化工具(如 Selenium、Playwright)依赖确定性的 DOM 结构或固定的元素选择器。

它们对网页有效,但对原生桌面应用束手无策。因为一个原生窗口背后没有 HTML,没有 CSS,只有像素和系统 API。

更难的是理解。自动化脚本能点击坐标,但它不知道这个按钮是否是当前任务需要的。这需要视觉理解 + 语义推理,而这恰恰是大模型擅长的领域。

问题在于,两年前的视觉模型还不够稳定:识别率不高、定位不准、对 Retina 屏幕下的小元素经常出错。

Peekaboo 的作者早在 2024 年就开始构建这套系统,但他选择等待,等模型成熟。

现在,等待结束了。

Peekaboo 是什么

Peekaboo 是一个 macOS 原生自动化工具,它为 AI 智能体提供眼睛和手:

眼睛:通过 Apple 官方的 ScreenCaptureKit API 进行像素级屏幕捕获,无需改变窗口焦点。

:通过 macOS Accessibility API 执行点击、输入、滚动、快捷键、菜单操作等。

它有两种使用方式:

# 方式一:命令行直接使用peekaboo agent "打开备忘录,新建一个包含三件事的 TODO 列表"# 方式二:作为 MCP 服务器挂载到 Claude Desktop / Cursornpx -y @steipete/peekaboo

两种方式暴露的是同一套工具集,这是 3.0 架构统一的重要成果之一。

3.0 的核心升级

1. Action-first:从看到做

这是 3.0 最根本的范式转变。

v2 的核心是截图 + AI 分析,是一个观察工具。v3 引入了完整的 Action 层:

关键设计:see 命令会生成带有稳定 ID 的 UI 快照,后续的 click、type 等操作可以引用这个 snapshot_id,避免重复截图,大幅提升执行效率。

# 捕获 Safari 界面,获取快照 IDSNAPSHOT=$(peekaboo see --app Safari --json | jq -r '.data.snapshot_id')# 基于快照点击按钮,无需重新截图peekaboo click --on "重新加载此页面" --snapshot "$SNAPSHOT"

2. 统一的截图 + UI 检测

v2 中截图和 UI 元素识别是两个分离的步骤,需要两次 AI 调用。v3 将其合并为单次操作,一次 see 调用同时返回:

· 像素级截图(支持 Retina 2× 缩放)

· 结构化 UI 元素树(按钮、文本框、菜单项等)

· 每个元素的稳定标识符

这极大降低了 Agent 的 token 消耗,也让操作链路更可靠。

3. CLI 与 MCP 的 JSON 统一

过去 CLI 和 MCP 服务器输出的 JSON 格式存在细微差异,给开发者带来不必要的适配成本。3.0 完全统一了输出 schema,意味着:

· 为 MCP 写的解析逻辑,直接适用于 CLI 脚本

· 更容易写测试、做调试

· Agent 框架可以无缝切换使用方式

4. 更好的快照机制

Snapshot(快照)是 v3 的核心抽象。每次 see 调用生成一个带时间戳的 UI 状态快照,存储在内存中并设有自动过期机制。这带来两个优势:

调试友好:可以对同一快照执行多个操作,复现问题时有据可查。

Agent 循环加速:在截图 → 分析 → 操作 → 截图的 Agent 循环中,快照复用让延迟从数百毫秒降至几十毫秒。

技术架构:Swift + TypeScript 的分工

Peekaboo 采用了一个有趣的双语言架构:

TypeScript 层负责:MCP 协议实现、AI provider 路由、工具注册和参数校验。

Swift 层负责:与 macOS 系统 API 的直接交互,包括无焦点截图、元素树遍历、鼠标/键盘事件注入。

这种分工是工程上的正确选择:TypeScript 生态对 MCP 支持更成熟,而 Swift 是访问 Apple 私有系统能力的唯一可靠路径。

Peter曾尝试用 AppleScript 实现,但 AppleScript 截图必须改变窗口焦点,这对 Agent 运行时是不可接受的。

多模型支持:不绑定单一 AI

Peekaboo 3.0 支持多个主流视觉模型:

· Claude 4.x 系列(claude-opus-4、claude-sonnet-4)

· GPT-5.1 系列

· Grok 4-fast(视觉能力)

· Gemini 2.5

· 本地 Ollama 模型(LLaVA、Qwen2-VL 等)

配置方式简洁,通过环境变量指定优先级列表,支持自动 fallback

{  "mcpServers": {    "peekaboo": {      "command": "npx",      "args": ["-y", "@steipete/peekaboo"],      "env": {        "PEEKABOO_AI_PROVIDERS": "anthropic/claude-opus-4,ollama/llava:latest"      }    }  }}

本地模型选项对于处理敏感屏幕内容尤为重要,截图中可能包含密码、私人消息、财务数据,你不一定想把这些东西发送到云端。

一个更大的图景

Peekaboo 3.0 的发布,叠加上作者那句模型现在够好了,指向一个正在成形的技术趋势:

桌面级 AI Agent 正在从实验走向实用。

过去一年,Anthropic 推出了 Computer Use API,OpenAI 发布了 Operator,微软在 Windows 中集成了 Copilot Actions。这些都在做同一件事:让 AI 从对话框里的助手变成能操作电脑的同事。

Peekaboo 的价值在于,它是这个方向上 macOS 生态中最完善的开源实现

它不依赖任何特定 AI 公司的闭源基础设施,可以配合任何支持 MCP 的 Agent 框架使用,也可以作为独立 CLI 工具嵌入到任何自动化流水线中。

对开发者而言,这是一个值得现在就上手研究的工具,不是因为它完美,而是因为它代表了 AI 辅助开发的下一个形态。

快速上手

# 通过 Homebrew 安装brew tap steipete/tapbrew install peekaboo# 授予权限(系统设置 → 隐私与安全性 → 屏幕录制 / 辅助功能)# 运行第一个 Agent 任务peekaboo agent "截取当前屏幕并告诉我屏幕上有什么"# 或挂载为 Claude Desktop 的 MCP 服务器# 编辑 ~/Library/Application Support/Claude/claude_desktop_config.json

详细文档见:https://peekaboo.sh

模型终于够好了。而工具,也已经准备好了。

© THE END

转载请联系本公众号获得授权

凌晨5点聊科技 · 凌晨 5 点,先于他人捕捉 AI 圈的关键信号