"我去年就开始做这件事了,但当时的模型还不够好。现在它们够了。"—— 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 圈的关键信号
夜雨聆风