桌面Agent不缺脑子,缺的是个敢让它碰的笼子
去年一个开发者让 Claude Code 清理 Git 历史,它顺手删了整个仓库。不是提示词有问题——是它敲命令的机器和开发机是同一台。
过去半年能看懂屏幕、点击按钮的模型一只手数不过来。但多数人跑完 demo 就退了——光标自己闪起来,你不知道下一秒是 ls 还是 rm。
瓶颈不是"Agent 能干什么",是"你让它在哪儿干"。
CUA(18,000 Star,MIT 协议)把这个做成了基础设施。
不只沙箱,是一套四件套
| 组件 | 解决什么 | 接入 |
|---|---|---|
| cua-sandbox | 执行环境隔离 | pip install cua |
| cua-driver | 后台操控真桌面 | MCP → Claude Code |
| cua-bench | 评测 + 轨迹回放 | cb run |
| Lume | macOS VM | lume run macos-sequoia:latest |
核心是 sandbox,Python 3.11+ 装一个包:
from cua import Sandbox, Image
async with Sandbox.ephemeral(Image.linux()) as sb:
result = await sb.shell.run("echo hello")
screenshot = await sb.screenshot()
await sb.mouse.click(100, 200)
await sb.keyboard.type("Hello from Cua!")
ephemeral 是灵魂——用完即弃,Agent 删什么都没事,下次启动干净如初。底层用 QEMU、容器还是云端,对你透明。
cua-driver 走反向:必须让 Agent 操作真桌面(填表单、跑企业微信),跑在后台不抢焦点。接入 Claude Code:
claude mcp add --transport stdio cua-driver -- cua-driver mcp

什么时候必须上沙箱
- 调 API、读写文件:不需要。Docker 够用。
- 操控桌面 UI 且操作不可逆:必须。装软件、改系统没有 Ctrl+Z。
- 频繁调试复现:沙箱 + benchmark。轨迹回放定位比盯屏幕快十倍。
- macOS 专属开发:Lume。Apple Silicon 原生性能,不用买 Parallels。
最关键的是第三种——可复现调试。Agent 出错了"改提示词再跑"不叫工程化。有轨迹回放才叫。

这条路刚起步
CUA 把隔离从"自己搭 QEMU"变成 pip install cua,像 Docker 把 cgroups 打包成 docker run。工具链和云端还没彻底解决,但不影响结论:
做桌面 Agent,第一步不是调模型 API。是 pip install cua,让它在删了什么都无所谓的沙箱里跑。
你在真桌面上跑过 Agent 吗?
