Trending 排名:#2|日期:2026-09-20|Stars:24,742|Forks:1,697|主语言:HTML|License:MIT
AI Agent 真要接管电脑,难点不是“会不会截图”。难点是它到底在哪台机器上做事、能不能在后台点按钮、权限是谁授予的、失败后怎么复盘,以及同一套任务能不能拿来训练和评测。
Cua 解决的正是这条链路。它不是一个单点自动化脚本,而是把本地 macOS VM、云端隔离桌面、跨平台桌面驱动、Computer-Use Agent SDK、任务评测框架和研究模型放进同一个工程里。换句话说,它想给 Agent 一台真正可用、可隔离、可评测的“电脑”。
这类项目我会先看边界。Cua 的 README 很热闹,但源码里真正有价值的地方是边界分得比较细:Agent 通过 MCP 或 SDK 发起动作,Driver 负责窗口、会话、权限和平台适配,Sandbox/Fleet 负责运行环境,Bench 负责把任务变成可复现的环境和评分器。它没有把“能点一下鼠标”包装成“全自动办公”,这点反而让我更愿意认真看。
📋 项目概览
| 项目 | 内容 |
|---|---|
| 项目名 | trycua/cua |
| 一句话 | 给 Computer-Use Agent 提供本地/云端电脑、桌面驱动、SDK、评测和数据生成工具链 |
| GitHub | github.com/trycua/cua |
| Stars | 24,742(采集快照);Trending 页面稍后显示 24,746 |
| Forks | 1,697 |
| 主语言 | HTML 37.6%、Rust 21.6%、Python 19.8%、TypeScript 6.3%、Go 5.1%、Swift 3.4% |
| License | MIT |
| 创建时间 | 2025-01-31 |
| 最近更新 | 2026-09-20 02:14:05 UTC |
| 版本 | Python cua 0.1.6;cua-driver 0.28.2;cua-bench 0.2.11;cua-cli 0.1.15;cua-sandbox 0.8.0 |
| 工程规模 | 浅克隆验证:4,936 个跟踪文件,768 个测试相关文件;物理代码行粗计约 97 万行,含 HTML、样例、生成绑定和资产 |
🔥 为什么值得关注
桌面自动化过去常被做成两类东西:一类是脚本工具,比如点击、截图、键盘输入;另一类是 Agent Demo,展示模型“看屏幕、做操作”。Cua 的不同点在于,它把这两头之间缺的工程层补了出来。
一个真实的 Computer-Use Agent 任务通常会跨过好几层:先创建一个隔离环境,启动浏览器或桌面应用,拿到屏幕状态,再把动作发给系统,然后验证 UI 是否真的变化。这里的每一步都有坑。macOS 的 TCC 权限不会因为二进制路径相同就自动归属正确;Linux 的 X11、Wayland 和 AT-SPI 行为不一样;Windows UIA 和普通像素点击也不是一回事。Cua Driver 的源码里专门处理了这些边界,甚至把权限模式固定在 daemon 启动期,而不是允许 Agent 在工具调用里临时提高权限。
另一个有意思的点是它没有停在“操作电脑”。仓库里有 cua-bench,用于构造带评分器的 GUI 任务;也有 CUA-S1,研究更小、更窄的 Computer-Use 决策模型。也就是说,Cua 的目标不是只帮一个 Agent 点按钮,而是把运行、评测、训练数据和模型研究串起来。这个方向很重,也更接近接下来 Agent 基础设施真正要补的东西。
🏗️ 核心特性
-
跨平台 Cua Driver:把桌面操作做成 MCP 和 SDK 边界
libs/cua-driver是仓库里最硬的一层。Rust CLI 支持mcp、list-tools、describe、call、serve、status、sessions、history、permissions、skills等子命令。Python 和 TypeScript SDK 通过 UniFFI 绑定同一套 Rust 运行时,不是各写一套桌面自动化逻辑。pip install cua-driver cua-driver list-tools cua-driver describe get_desktop_state cua-driver mcp这里的重点不是命令多,而是 Driver 把 Agent 边界、应用 SDK 边界和 daemon 边界分开了。Agent 走
cua-driver mcp;应用可以直接导入CuaDriver.create();需要稳定权限身份的应用可以启动私有 daemon,再把 MCP 连接信息交给外部 Agent。 -
权限模式在启动期固定,降低 Agent 自我提权空间
Cua Driver 的源码里把权限模式分成
standard、bounded、unrestricted。危险模式必须通过--dangerously-bypass-approvals显式选择;能力清单走--capability-manifest和--approve-capability-manifest。这些参数属于serve启动期配置,普通 MCP 连接不能拿一条工具调用去改。模式 含义 工程边界 standard默认模式,用于常规自动化 可通过受信任启动参数授予少量能力,例如 existing-profile bounded只允许清单中列出的工具和资源 需要能力清单,并在启动时确认清单已审核 unrestricted跳过运行时批准提示 需要显式危险参数;适合一次性、隔离、可信环境 这不是 OS 级沙箱。它更像 Agent 面向工具层的控制平面。真正的隔离还要靠 VM、容器、云端 Fleet 或宿主机策略。
-
Sandbox/Fleet:给 Agent 分配一台可回收的电脑
cua-sandbox提供 Python API,既能创建临时沙箱,也能连接已有沙箱。Fleet 是它的云端后端,适合把多台桌面放进池子里让任务领取。README 里还专门提醒:保留 warm capacity 会产生资源占用,退出 claim 不等于一定释放池容量。from cua_sandbox import Sandbox, Image async with Sandbox.ephemeral( Image.from_registry("registry.example/desktop-workspace@sha256:...") ) as sb: await sb.shell.run("uname -a") await sb.screenshot()持久 claim 的写法也比较直接:
from cua_sandbox import Sandbox sb = await Sandbox.create( pool="workspace", name="workflow-123", service="mcp", keep_alive_minutes=30, ) reference = sb.to_dict() await sb.disconnect() sb = await Sandbox.from_dict(reference) await sb.keep_alive(minutes=30) await sb.close()这类 API 对后台任务很关键。Agent 可以把“我在哪台机器上执行”变成一个可保存、可恢复的引用,而不是每次都从一台全新机器开始。
-
Lume:Apple Silicon 上的本地 macOS/Linux VM
Lume 用 Apple Virtualization.Framework 管理本地 VM。它的 README 示例展示了从 IPSW 创建 macOS Tahoe VM,并用 unattended preset 配好
lume用户、SSH、自动登录、禁用睡眠等设置。lume create macos-tahoe --ipsw ~/Downloads/macos-tahoe.ipsw --unattended tahoe lume run macos-tahoe这对 macOS 自动化尤其有意义。很多桌面 Agent 评测如果直接跑在开发者主机上,权限、登录状态、窗口焦点都会污染结果。Lume 的价值在于让 macOS 测试环境可复制,虽然它仍然受制于本机硬件、IPSW、系统权限和 Apple 虚拟化能力。
-
Cua Bench:把 GUI 任务变成可评分样本
cua-bench是评测和数据生成层。源码中的 CLI 解析器提供cb run task、cb run dataset、task、dataset、agent、trace等命令;测试文档里把 simulated provider、worker server、runner、action parser 分开测。uv tool install 'cua-bench[browser]' uv tool run --from 'cua-bench[browser]' playwright install chromium cb run task ./tasks/click-button --oracle --wait cb run dataset ./datasets/cua-bench-basic --max-parallel 4 --oracle --wait更重要的是它的任务结构:环境启动、动作执行、评估函数是分开的。一个简单按钮任务可以先验证
evaluate()返回 0,再运行参考解法,最后要求评分变成 1.0。这比“模型最后说成功了”可靠得多。 -
CUA-S1:小模型只做窄决策,不冒充通用 Agent
CUA-S1 目前是早期研究组件。README 写得很克制:源码包含 Python 模型、合成数据、训练、评估和可选 Driver 集成;不包含或自动下载权重、数据集、demo 二进制和录屏;当前 source-only release 不建立 checkpoint 性能结论。
这点值得保留。Computer-Use 里很多子问题并不需要一个完整大模型每步都长链路推理,例如表单字段映射、候选动作打分、是否 abstain。Cua-S1 把这类任务单独拿出来做“小而窄”的模型研究,方向合理,但当前还不能当作成熟可用的通用电脑操作模型。
🔬 技术架构深度解析
1. 数据平面与控制平面
Cua 的架构可以拆成两条线。数据平面负责真实环境和 UI 状态,控制平面负责身份、会话、权限和工具调用。
开发者/Agent
│
├─ MCP: cua-driver mcp
│ │
│ ├─ JSON-RPC / MCP tools
│ └─ skill/resource 读取
│
├─ SDK: Python / TypeScript / Rust UniFFI
│ │
│ └─ CuaDriver.create() 或 connect(socket)
│
└─ CLI: cua / cb / lume / cua-driver
│
▼
┌────────────────────────────────────────────┐
│ Cua Driver / Sandbox / Bench control plane │
├────────────────────────────────────────────┤
│ session 权限模式 daemon/socket │
│ tool schema 能力清单 telemetry/update │
└────────────────────────────────────────────┘
│
▼
┌────────────────────────────────────────────┐
│ execution plane │
├────────────────────────────────────────────┤
│ 本机桌面 本地 VM 云端 Fleet 容器/模拟环境 │
│ macOS AX/ScreenCaptureKit │
│ Windows UIA / WebView2 │
│ Linux X11/Wayland/AT-SPI │
└────────────────────────────────────────────┘
这个拆法会带来一个现实取舍:同一套公开 API 后面并不是同一种执行环境。Linux 容器、macOS VM、Windows 桌面、浏览器模拟任务的能力不同,失败模式也不同。报告里如果只写“跨平台自动化”,就会掩盖最关键的工程成本。
2. Driver 的调用路径
cua-driver 的源码把 CLI、MCP、daemon、SDK 放进同一个 Rust workspace。Agent 常用路径大概是这样:
Agent
│ MCP stdio
▼
cua-driver mcp
│
├─ macOS 默认走 app daemon,保留 TCC 归属
├─ Linux/Windows 可由 stdio 进程直接拥有 runtime
└─ --socket 可接已有 daemon
│
▼
CuaDriver runtime
│
├─ session 管理:隐式/显式会话、idle、撤销
├─ tool schema:list/describe/call
├─ permission mode:standard/bounded/unrestricted
└─ platform backend:macOS / Windows / Linux
│
▼
窗口状态、截图、元素 token、鼠标键盘动作、结果验证
源码里一个细节很重要:mcp 的 --direct 和 --socket 互斥;在 macOS 上普通 stdio MCP 默认不直接拥有 runtime,而是尽量保留 app daemon 的 TCC 权限归属。这个设计看起来繁琐,但 macOS 桌面自动化绕不开。谁拥有 Accessibility 和 Screen Recording 授权,决定了实际能不能操作窗口。
3. Sandbox/Fleet 的生命周期
Cua Sandbox 更像“电脑资源调度器”,而不是单纯的 docker run 封装。它要解决的是:创建环境、暴露服务、执行命令、截图、保持 claim、恢复 claim、释放 claim。
Image / Pool / Template
│
▼
Pool.apply(...) ──► warm capacity / autoscaling
│
▼
pool.claim(name="job-123", service="mcp")
│
├─ shell.run(...)
├─ screenshot()
├─ driver.connect(...)
├─ tunnel / signed URL
└─ to_dict() / from_dict()
│
▼
close / disconnect / destroy
这里有三个边界要讲清楚:
| 边界 | 说明 |
|---|---|
disconnect() | 断开当前 SDK 连接,不等于删除远端环境 |
close() | 释放 claim,通常用于把占用还给池子 |
destroy() | 删除沙箱资源,属于更强的生命周期动作 |
这也是 Agent 系统经常出事故的地方。一个任务结束了,shell 断了,不代表云端桌面真的删了;claim 释放了,也不代表 warm pool 容量没有成本。
4. Bench 的任务管线
cua-bench 的价值在于把 GUI 任务拆成可运行、可评分的结构。源码测试里能看到按钮点击、下拉选择、滑块、表格单元格、KiCad 等任务目录。它不是只收集轨迹,而是要求环境和评估函数给出可验证结果。
task package
│
├─ environment: 启动页面/应用/服务
├─ observe: 获取屏幕、DOM、窗口状态
├─ action: click/type/scroll/drag/structured action
├─ oracle: 参考解法或人工轨迹
└─ evaluate: 返回 reward / success 标记
│
▼
run task / run dataset
│
├─ 单任务调试
├─ 数据集并行
├─ agent 评测
└─ trajectory 导出
如果要训练 Computer-Use 模型,这层会比 Driver 更重要。Driver 解决“怎么做动作”;Bench 解决“动作做得对不对”。没有后者,Agent 很容易变成看起来很忙,但结果不可复现。
5. 工程规模与可验证证据
我用浅克隆做了一个不依赖 GitHub API 的源码统计,并把文件列表写到本地再解析,避免命令行输出截断影响文件计数。结果如下:
| 指标 | 数值 | 解释 |
|---|---|---|
| 跟踪文件 | 4,936 | 使用 git ls-files -z 写入文件后解析 |
| 测试相关文件 | 768 | 按路径段和文件名规则粗略识别 |
| Python 文件 | 995 | 主要在 libs/python、libs/cua-bench |
| Rust 文件 | 482 | 主要在 libs/cua-driver、libs/fleet |
| Go 文件 | 224 | Fleet/后端相关占比较高 |
| TypeScript 文件 | 201 | SDK、文档站、前端控制面 |
| Swift 文件 | 144 | macOS/Lume/平台适配相关 |
| 物理代码行粗计 | 约 970,259 | 含 HTML、样例、生成绑定和资产,不等同手写核心代码 |
Top-level 模块分布也能说明它不是一个薄包装:
| 路径 | 文件数 | 主要含义 |
|---|---|---|
libs/python | 1,052 | Python SDK、Agent、Sandbox、CLI 基础包 |
libs/cua-bench | 1,005 | GUI 任务、数据集、runner、worker、测试 |
libs/cua-driver | 915 | Rust Driver、Python/TS 绑定、跨平台 GUI 测试 |
libs/fleet | 618 | Fleet SDK、服务端/客户端绑定、上传和资源控制 |
docs/content | 175 | 产品文档和教程 |
libs/typescript | 174 | TypeScript SDK 与前端包 |
libs/lume | 167 | 本地 VM 管理 |
需要提醒的是,代码量大不自动等于成熟。这个仓库包含不少生成文件、fixture、文档和研究组件。真正评估它时,应该看每个子系统的测试、版本和运行边界,而不是只看总行数。
6. 测试矩阵透露出的成熟度
libs/cua-driver/docs/test-matrix.md 里把测试分成两类:不依赖真实桌面的确定性协议测试,以及会启动 repo-local 应用的 harness E2E 测试。E2E 维度包括 OS、窗口系统、应用 harness、动作寻址方式、前台/后台投递、窗口/桌面作用域和外部 oracle。
| 平台 | 典型后端 | 证据边界 |
|---|---|---|
| macOS | AX、ScreenCaptureKit、AppKit、SwiftUI、WKWebView | 依赖正确 TCC 授权和可登录桌面环境 |
| Windows | UIA、WPF、WinUI3、WebView2 | 原生控件、窗口发现、桌面作用域需要分别验证 |
| Linux | X11、Wayland、AT-SPI、GTK3、Electron、Tauri | X11/Wayland 行为不同,不能混为一个 Linux 结果 |
| Browser/simulated | Playwright、DOM、worker API | 适合稳定评测,但不能代表任意原生桌面应用 |
这也是 Cua 比普通 Demo 更值得看的地方:它在源码文档里承认了这些差异,而不是用一个统一的“跨平台支持”把问题盖住。
📖 README 核心内容摘要
README 把 Cua 分成五条路径:Cua Fleets、CUA-S1、Cua Driver、Lume、Cua Bench。这个组织方式有点像产品导航,但每一块在源码里都有对应目录。
Cua Fleets
Fleets 提供云端隔离桌面。开发者先保有一个 Fleet 或 pool,再 claim 一台桌面给任务使用。Sandbox SDK 能执行命令、截图、连接服务,也能把 claim 转成可保存引用。这个功能适合后台 Agent、批量评测、数据生成,以及不想把 Agent 放在开发者主机上乱点的场景。
Cua Driver
Driver 是给 Agent 和应用使用的桌面操作层。它支持 MCP stdio,也支持 Python/TypeScript SDK。README 明确写了一个重要边界:语言 SDK 是给 client application 用的,不是给 Agent 再套一层语言原生 MCP facade;Agent 应该直接连接 cua-driver mcp。
claude mcp add --transport stdio cua-driver -- cua-driver mcp
如果要兼容 Claude Code 的 computer-use 风格截图路径,README 给了另一个注册方式:
claude mcp add --transport stdio cua-computer-use -- cua-driver mcp --claude-code-computer-use-compat
但源码帮助文本也写明,目前 compat screenshot tool 已在相关变更中移除,flag 更多是保留未来 wiring。发布文章时不能把它写成现成增强能力。
CUA-S1
CUA-S1 是研究组件。它把“表单类界面任务”作为第一个窄场景,用结构化界面元素和文档值做评分决策。README 反复强调它不是通用助手,也不是可靠性能的证明。这个边界很重要:源码开放不等于模型权重、数据集和 benchmark 结论都开放。
Lume
Lume 是本地 VM 层,主要面向 Apple Silicon 上的 macOS/Linux VM。它用 Apple Virtualization.Framework 创建虚拟机,支持 unattended preset。README 还说明遥测默认开启,但只记录伪匿名安装、release、命令和 API 事件元数据,不收集 prompt、VM 名、文件路径、命令参数或 VM 内容。
Cua Bench
Cua Bench 面向评测和训练数据。它提供环境接口、worker、benchmark runner 和任务数据集。README 里给出了核心测试命令:
uv run --with pytest pytest cua_bench/tests/ -v
uv run python -m cua_bench.scripts.benchmark_workers --num_workers 16 --num_steps 10
我更看重第一条:它说明项目把 gym interface、worker client/server、runner、actions parser 拆开测。第二条是 worker 吞吐测量脚本,不应该被解读成官方固定性能承诺。
🚀 快速上手
下面给一个低风险路径:先只安装 CLI/Driver,确认本机能看到工具面,再决定是否创建本地或云端沙箱。云端 Fleets 需要登录和资源清理,这里不把它写成无成本的一键体验。
1. 安装 Cua CLI 和 Driver
pip install --extra-index-url https://wheels.cua.ai/simple cua-cli
pip install cua-driver
2. 查看 Driver 工具面
cua-driver --help
cua-driver list-tools
cua-driver describe get_desktop_state
这些命令来自 cua-driver Rust CLI parser。list-tools 和 describe 属于只读检查,适合先确认安装是否正确。
3. 作为 MCP 接入 Agent
claude mcp add --transport stdio cua-driver -- cua-driver mcp
接入后,Agent 能通过 MCP 使用 Driver 暴露的工具。实际能否截图和操作,取决于操作系统权限、Driver daemon 归属、目标窗口和 permission mode。macOS 上尤其要按官方安装流程授予 Accessibility 和 Screen Recording,不要把普通终端进程当成稳定权限主体。
4. 创建云端或本地沙箱
Cua CLI 当前的 sandbox parser 支持 launch、ls/list、info/get、start、stop、restart、delete、exec 等子命令。一个典型启动命令如下:
cua auth login
cua sb launch ubuntu:24.04 --name agent-lab --cpu 4 --memory 8GB --disk 50GB
cua sb exec agent-lab -- uname -a
cua sb delete agent-lab --force
这里的关键不是命令本身,而是生命周期。测试完要删除或释放资源;如果使用 pool 或 keep-alive,要单独确认容量是否仍在占用。
5. 用 Python SDK 创建临时环境
import asyncio
from cua_sandbox import Sandbox, Image
async def main():
async with Sandbox.ephemeral(
Image.from_registry("registry.example/desktop-workspace@sha256:...")
) as sb:
result = await sb.shell.run("uname -a")
print(result)
await sb.screenshot()
asyncio.run(main())
这个示例来自 cua-sandbox README 的 API 形态。实际运行要换成你有权限访问的镜像;云端镜像、Fleet 凭证和服务端口都需要按官方文档配置。
6. 跑一个 Cua Bench 任务
uv tool install 'cua-bench[browser]'
uv tool run --from 'cua-bench[browser]' playwright install chromium
cb run task ./tasks/click-button --oracle --wait
cb run task、--oracle、--wait 在 cua-bench CLI parser 中存在。任务路径需要换成实际任务目录。第一次建议先跑 oracle,而不是直接接模型;这样可以先验证环境和评分器没问题。
📊 增长速度与社区热度
Cua 在 2026-09-20 的 Trending 排名是第 2。采集快照记录 Stars 24,742、Forks 1,697;GitHub Trending 页面稍后同日显示 24,746 Stars、859 stars today。由于两次采样时间不同,4 个 Star 的差异只能看作同日报告期间的观察差,不应该当作完整日增长。
按创建时间 2025-01-31 到本次快照粗算,Cua 的生命周期平均增长约 41.5 Stars/天。这个数只是长期基线;Trending 当日的 859 stars today 说明它处在明显的事件驱动增长阶段。
社区侧也能看出项目热度高但负载不轻:GitHub open_issues_count 为 1,033;Search API 同期拆分为约 513 个 open issues 和 520 个 open PRs。这个 PR 数很高,说明仓库活跃,也意味着维护者需要持续处理合并、版本和文档漂移。
| 指标 | 数值 | 说明 |
|---|---|---|
| Trending 排名 | #2 | 2026-09-20 快照 |
| Stars | 24,742 | 采集快照 |
| Forks | 1,697 | 采集快照 |
| 当日 Trending 增量 | 859 stars today | GitHub Trending 页面同日报告期间读取 |
| 生命周期平均 | 约 41.5 Stars/天 | 从创建日到快照日粗算 |
| Open Issues | 约 513 | Search API 拆分值 |
| Open PRs | 约 520 | Search API 拆分值 |
| 最近 push | 2026-09-20 02:14:05 UTC | 采集快照 |
完整 Trending 榜单如下,排名直接按页面顺序生成:
| Rank | Repository | Language | Stars | Forks | Today |
|---|---|---|---|---|---|
| 1 | cloudflare/security-audit-skill | JavaScript | 17,035 | 936 | 3,155 |
| 2 | trycua/cua | HTML | 24,746 | 1,697 | 859 |
| 3 | addyosmani/agent-skills | JavaScript | 97,278 | 10,263 | 556 |
| 4 | coder/coder | Go | 15,737 | 1,527 | 402 |
| 5 | anthropics/claude-code | TypeScript | 146,840 | 23,982 | 483 |
| 6 | Open-Dev-Society/OpenStock | TypeScript | 16,335 | 2,104 | 472 |
| 7 | higgsfield-ai/higgsfield | Jupyter Notebook | 5,076 | 926 | 196 |
| 8 | docling-project/docling | Python | 67,277 | 4,843 | 129 |
| 9 | cloudflare/quiche | Rust | 12,099 | 1,123 | 31 |
| 10 | asciimoo/hister | Go | 5,341 | 224 | 420 |
| 11 | ruanyf/weekly | 未标注 | 103,484 | 4,431 | 98 |
| 12 | ZuodaoTech/everyone-can-use-english | TypeScript | 38,028 | 5,219 | 48 |
| 13 | anthropics/knowledge-work-plugins | Python | 25,204 | 3,002 | 281 |
| 14 | cactus-compute/needle | Python | 11,740 | 752 | 234 |
| 15 | yynxxxxx/Codex-X | Rust | 3,499 | 452 | 32 |
🎯 适用场景
| 场景 | 适合程度 | 原因 |
|---|---|---|
| 给 Coding Agent 接一个真实桌面 | 高 | MCP 和 Driver 边界清楚,适合把 GUI 操作作为工具暴露 |
| 批量跑 GUI 任务评测 | 高 | Cua Bench 提供任务、runner、worker 和评分接口 |
| 云端隔离桌面给 Agent 使用 | 高 | Fleet/Sandbox 支持 claim、pool、服务暴露和生命周期管理 |
| 本地 macOS 自动化实验 | 中高 | Lume 能创建本地 VM,但依赖 Apple Silicon、IPSW 和权限配置 |
| 训练 Computer-Use 专用模型 | 中高 | 有数据生成和评测方向,但 CUA-S1 仍是早期研究组件 |
| 企业生产环境接管桌面流程 | 中 | 工程边界不错,但要自建权限、审计、隔离、凭证和资源回收策略 |
| 想找一个轻量点击脚本 | 低 | Cua 工程栈偏重,简单 RPA 场景可能过度设计 |
| 想直接得到通用电脑操作模型 | 低 | 仓库提供基础设施和研究组件,不等于给出成熟通用模型能力 |
💡 总结
Cua 最值得看的地方不是“AI 会操作电脑”这个表层卖点,而是它认真处理了 Computer-Use 的工程问题:环境从哪里来、动作由谁执行、权限在哪里固定、桌面状态怎么验证、任务怎么评分、数据怎么生成。
它也不是没有风险。仓库很大,版本面很多,README、源码、PyPI、npm、Rust crate、云端服务之间都可能出现漂移。Fleet 云端路径还涉及账号、费用和资源回收;Driver 的权限模式也不能替代 OS 级沙箱。把它接进生产前,应该先固定版本、跑最小任务、验证资源清理,再逐步扩大权限。
我的判断是:如果你关注 Agent 基础设施,Cua 比普通桌面自动化项目更值得跟。它把“给 Agent 一台电脑”这件事拆成了可以工程化验证的几层。虽然还很重,也还在快速变化,但方向对。