Cua 开源解读:Computer-Use 2.0 与给 Agent 的整台计算机

trycua/cua 这一周从 GitHub Trending 第 2 位爬到了日增 383 star 的位置,目前 24k star,MIT 许可证。这个仓库做的事情写在自己首页第一行:给 AI agent 一台它能用的计算机。仓库里叠了四层东西:Cua Driver 桌面操作驱动、Cua Fleets 云端桌面池、Lume 本地 macOS/Linux 虚拟机、Cua-Bench 智能体操作计算机能力评测。

trycua/cua GitHub 仓库卡片

截图点击循环的天花板

Computer use 这个词最早描述的架构是单循环:模型看一张截图,推理像素,决定下一个动作(点击、滚动、输入或等待),然后重复。Anthropic 在 2024 年 10 月把这类智能体带进公众视野,OSWorld 和 Windows Agent Arena 让这个循环变得可度量。Cua 团队对这个领域不陌生,2024 年其两位创始人在微软参与建造的正是 Windows Agent Arena。

1.0 架构有两个刚性约束。其一,模型即操作员:服务商 API 接受提示词和截图,返回下一个计算机动作,模型直接驱动整个循环。其二,循环在前台运行,接管整台机器的鼠标键盘,人机不能同时用一台电脑。开发者因此把 agent 塞进虚拟机,用整台一次性桌面换一个可以跑循环的地方。屏幕是 agent 对任务的几乎全部信息来源,鼠标键盘是它几乎全部的动作空间。

2026 年 4 月,Codex 推出后台 computer use,Sky 团队也在同一方向给出了验证:agent 可以在后台操作一个窗口,坐在机器前的人继续用同一块桌面。Cua 团队此前探索过这条路但暂时搁置,Codex 发布六天后的 4 月 22 日,他们把 Cua Driver 开源。Computer-Use 2.0 指的是这之后的形态:任务由主 agent 持有(Claude Code、Codex 这类编码智能体,或 Hermes、OpenClaw 这类通用智能体),桌面操作以工具形式经 MCP 或 CLI 提供。同一个任务里,agent 可以写代码、调用结构化 API,也可以在需要时点界面,三种动作面按需切换。

动作阶梯与 macOS 底层路径

Cua Driver 是第一个围绕窗口而非整个桌面组织的可插拔 computer-use 驱动。agent 列出当前窗口、请求某个窗口的状态时,拿到的可访问性树和截图是一起的。动作执行是一个阶梯:可访问性树对目标控件描述足够好时,先走可访问性动作;树信息稀疏或目标是一块画布时,降到坐标级像素点击;两条路都失败,驱动才把窗口抬到前台几毫秒完成落点,再把焦点还原。

每次动作之后,驱动会回报三种状态之一:效果已确认、无法验证、疑似空操作,agent 据此决定是否升级动作路径。

macOS 的后台点击是最难的一块。Cua Driver 使用 Apple 未公开文档的 SkyLight 框架,让目标窗口在不被抬起的前提下进入"逻辑前台"状态,再把事件投递到对应进程;Chromium 应用还要在真实点击之前补一次屏幕外的 primer click,否则收不到输入。这些平台细节都藏在驱动内部,agent 看到的命令在三个操作系统上保持一致。

一台机器,多个 agent

0.8 版本把 Windows 和 Linux 后端稳定在与 macOS 相同的 Rust 接口上,同时把合成多光标做成三平台一致的能力:每个 agent 持有一个 session id,绑定自己的光标、动作日志和录像,输入被限制在分配给它的窗口集合里。给不同 agent 不重叠的窗口集合,它们就能在同一台机器上并行工作,不争抢物理光标和焦点。屏幕上那些彩色光标只是会话的可视记录,本身不承载输入。

团队还建了一套仓库内测试应用矩阵,用途单一:证明动作真的落到了目标上。Driver 返回成功不算数,测试框架必须独立观察到目标应用的状态变化,或者证明不被支持的路径在拒绝动作时没有抢焦点、没有改变窗口顺序、没有移动物理光标。当前矩阵有超过 500 项行为检查,覆盖 Windows、macOS、Linux X11、Sway 和 GNOME,横跨 Electron、Tauri、原生工具包和内嵌 WebView,每次运行留存轨迹、视频和日志。H Company 参与了这套矩阵的缺口审计。

采用方名单从 4 月的 Clicky 开始,之后是 Hermes、Qwen Code、H Company 和 Factory 的 Droid,其中几家把发现的问题作为修复推回了上游仓库。

Cua-Bench:给 agent 留下的结果打分

光标动没动不适合做评分依据:agent 可能看起来很忙地在原地绕圈,也可能看起来安静地用另一个工具把活干完了。Cua-Bench 把每个任务用代码写成三段:setup 把机器置成已知状态,agent 尝试任务,evaluator 直接检查文件和应用状态给出确定性分数,部分任务支持对未完成但正确的中间结果给部分分。官方博客成文时,任务目录有 130 个可验证任务,分布在 42 个环境、5 个平台上。

KiCad 电子设计任务组给出了一组直观数字。这 25 个任务与 Snorkel AI 合作建造,评分方式是把完成的电路导出网表,与参考设计的元件和连线逐项比对。七个前沿模型用同样的 200 步预算:GPT-5.5 完成任务数最多,25 个里完成 6 个;Gemini 3.5 Flash 平均分最高,拿到 5 个全分和 3 个部分分;没有一个模型突破全分天花板的三分之一;从空白画布开始画板的任务,七个模型全部零分,所有全分通过都发生在已有内容的板子上做修改。模型能做出合理的局部修改,然后在步数预算耗尽前没能交付完整成品。

评测器自己也要被评测。每个环境发布之前,QA 流水线把任务跑两遍:一个 agent 正常拿分,另一个故意违反任务规则刷分,评分器必须给前者满分、识别出后者;评审者读两条轨迹,对每个失败附上修复建议,不合格的评测器在发布前就被拦下。

Fleets:训练 run 的计算机问题

再往下一层是基础设施。RL 训练或大规模评测里,每次 rollout 都需要一台处于已知初始状态的隔离计算机。如果等 rollout 开始才去下载镜像、启动虚拟机,为这个任务预留的训练 GPU 只能跟着闲置。Cua Fleets 的做法是维持一组已启动的 warm pool 沙箱,任务开始时发起 claim 预约、直接拿回连接信息,结束后沙箱重启回干净状态归池。池子随等待请求数扩张、随预约释放收缩,最小空闲数和最大容量都可配置,缩容前有延迟,避免短暂的需求低谷触发又一轮冷启动。目前覆盖 Linux、Windows 和 Android,macOS 在 Cua 自有虚拟化栈上处于 Labs 预览。

接入方式与权限边界

三条接入面:支持 MCP 的 agent 直接连 cua-driver mcp;shell 风格的自动化用 cua-driver call;Python 的 cua_driver 和 TypeScript 的 @trycua/cua-driver SDK 由 UniFFI 生成绑定,架在一个版本化的 C ABI 之上,应用进程内直接加载、不依赖守护进程。Meta 的 Muse Code 也把 Cua Driver 作为本地 stdio MCP 服务器接入。

权限分三档:standard 是无提示的默认档;bounded 只放行经过审核的清单(manifest)里列出的工具和资源;unrestricted 需要显式传 --dangerously-bypass-approvals。macOS nightly 频道还有一个加密、仅存本地的 Computer History 预览,只存严格定义的元数据白名单,不存截图、键入文本、剪贴板内容和可访问性树。Lume 把 Apple Silicon 本地跑 macOS/Linux 虚拟机收敛成一行安装脚本,底层是 Apple 的 Virtualization.Framework。仓库仍在高频合并 PR,近期的 nightly 里出现了上报系统光标形状(#3883)和 jev-use agent 配方(#3916)等改动,Driver 版本号走到 0.28.x。

收尾

Cua Driver 解决的是后台输入的边界问题:窗口级操作、动作阶梯、回报确认状态、清单化权限。Cua-Bench 量出的是另一件事:同一套驱动之上,七个前沿模型在 25 个真实设计任务里最好的完成 6 个,空白画布任务全军覆没。演示视频展示的是单次成功运行,基准测出的是步数预算与空白起点的差距。仓库地址 github.com/trycua/cua,MIT 许可证。

来源:trycua/cua · Computer-Use 2.0(Cua 官方博客) · Cua Driver README