拓冰建站拓冰建站
首页 / 资讯中心 / 正文

cua-driver 测试框架完全指南:从单元测试到跨平台 E2E Harness 的验证体系

cua-driver 测试框架完全指南从单元测试到跨平台 E2E Harness 的验证体系【免费下载链接】cuaScale computer-use 2.0 with open-source drivers, cross-OS fleets, and benchmarks for training, evaluation, and data generation.项目地址: https://gitcode.com/GitHub_Trending/cua/cuacua-driver 是 cua 仓库中负责桌面端驱动能力的 Rust 实现其测试体系分为单元/协议测试与Harness E2E 测试两大层次。本文以 libs/cua-driver/docs/test-harnesses-guide.md 为骨架结合仓库中的 CI 脚本、Rust 测试源码与测试夹具系统讲解测试代码的分布、规范化运行命令、跨平台矩阵内容、证据规范与贡献者工作流帮助你快速定位测试、理解每条 E2E 用例的判定标准并知道新增场景时改哪些文件。两句话看懂整个测试体系仓库内存在两条主测试层单元与协议测试不启动真实应用直接验证 Rust 代码与公开 MCP/CLI 契约和Harness E2E 测试构建并启动仓库自带的小型应用经由 Rust 驱动操作它再校验外部应用或桌面状态。Rust 测试是唯一的权威来源——Python 测试、旧 shell runner 与历史录制脚本都不属于规范化 E2E 路径。所有平台只保留一条无套件选择器的完整矩阵命令贡献者把整个矩阵看作一个整体而不是一组可任意挑选的独立命令。规范化 E2E 命令与证据权威每个操作系统对应一条规范化命令运行完整的矩阵不指定套件筛选器Linux: scripts/ci/linux/run-rust-e2e.sh Windows: .\scripts\ci\windows\run-rust-e2e.ps1 -RequireGui macOS: libs/cua-driver/tests/runners/macos-lume/run-all.sh操作系统级 workflow 可能把完整矩阵拆成多个独立 job 以隔离失败、便于报告——这只是执行层面的细节贡献者仍应把整套矩阵视为一条规范化套件。证据权威Evidence authority一份规范化结果必须是在精确源码 SHA 上执行的完整仓库 Harness 运行。一次性应用冒烟、手工拼装的脚本、视频或环境回放可以用于诊断故障或作为发布演示证据但不能替代完整矩阵。运行渠道上Windows 与 Linux 使用仓库的 GitHub 托管 workflow在严格环境 preflight 通过的前提下Windows Azure RDP 运行只是可选的环境对齐回放或托管 preflight 无法证明某项能力时的回退macOS 使用已登录的 Lume 维护者包装脚本。涉及浏览器相关变更或浏览器使用功能的发布认证时还需额外运行独立的 Chrome/Edge 矩阵macOS 包装脚本接受--standalone-browser参数Windows 与 Linux 对应 workflow 为.github/workflows/e2e-rust-standalone-browsers.yml。历史上遗留的*-plan.md、*-journal.md与发布证据文档只记录当时跑了什么不是当前执行指令也不覆盖本指南或 scripts/ci/README.md。仓库地图测试代码分布cua/ |-- libs/cua-driver/ | |-- rust/ | | |-- crates/ | | | |-- cua-driver/ Rust 驱动与集成测试 | | | |-- cua-driver-core/ 共享驱动逻辑与单元测试 | | | |-- cua-driver-testkit/ 共享 Rust E2E 辅助与证据采集 | | | |-- platform-linux/ Linux 后端 | | | |-- platform-macos/ macOS 后端 | | | |-- platform-windows/ Windows 后端 | | | -- cursor-overlay/ 光标证据辅助 | | |-- test-apps/ 被忽略的暂存 Harness 二进制 | | -- Cargo.toml Rust workspace | |-- tests/ | | |-- fixtures/ | | | |-- shared/web/ 共享网页与外部状态标记 | | | |-- apps/ 仓库内夹具源码 | | | -- build/ macOS/Linux/Windows 夹具构建器 | | -- runners/ | | -- macos-lume/ 维护者 Lume 配置与 guest 入口 | -- docs/ 测试矩阵、报告与贡献者文档 -- scripts/ci/ |-- linux/run-rust-e2e.sh Linux 规范化 runner |-- windows/run-rust-e2e.ps1 Windows 规范化 runner -- macos/run-rust-e2e.sh macOS 规范化 runner关键的分层职责是层拥有不拥有Rust 集成测试场景、驱动调用、断言、动作元数据OS 环境搭建与夹具编译cua-driver-testkit会话辅助、夹具启动、截图、录制、轨迹场景清单夹具应用可见控件与外部可观测状态标记驱动正确性断言OS runner构建环境、用户会话、测试选择、产物收集测试行为定义刻意不存在第二套需要 Rust 套件镜像的 Python E2E 实现。一次 E2E 测试的完整流程每条规范化 E2E 单元cell都遵循同一形态OS runner - 构建 Rust 驱动与仓库内夹具 - 启动或连接真实桌面会话 - Rust testkit 启动一个 Harness 应用 - Rust 测试发现目标窗口 - get_window_state 提供无障碍树与截图 - 动作通过 AX 元素索引或 PX 坐标寻址目标 - 在动作支持的条件下以前台或后台方式投递 - 校验夹具状态、焦点、像素或协议响应 - testkit 写出视频、截图、轨迹、日志与结果数据工具返回ok不足以让 E2E 单元通过夹具必须展示动作确实发生或者测试必须验证文档化的结构化拒绝structured refusal以及无焦点/无输入副作用。测试层详解单元与协议测试这些测试不依赖仓库内 GUI 应用通常不需要--ignored位置或前缀验证内容rust/crates/*/src/**核心驱动、平台无关逻辑、schema 与辅助protocol_*_test.rsMCP 握手、工具调用、会话、媒体与错误schema_*_test.rs共享 schema 与后端一致性transport_config_persistence_test.rsCLI/MCP 配置持久化protocol_element_token_test.rs元素令牌element-token协议行为这类测试应当快速、确定、可在普通 CI worker 上安全运行。它们不能证明一次真实的点击、按键、滚动或后台输入真的到达了应用。Harness E2E 测试这些是位于 libs/cua-driver/rust/crates/cua-driver/tests/ 下的 Rust 集成测试。大多数标记为#[ignore]因为需要桌面、已构建的夹具与平台权限——它们由 OS runner 挑选执行而不是由普通单元命令执行。规范化 E2E 套件有两个行为所有者所有者目的共享应用Shared app通过 Electron 与 Tauri 验证同一 Web 行为原生 HarnessNative harness特定工具包的控件与原生窗口行为WebView、CDP 与页面工具集成归属于实际使用它的共享或原生所有者不构成第三个公开测试族或命令。Delivery投递不是测试族而是每个动作行上的一个维度只要驱动与 OS 同时支持同一动作就会以前台和后台两种模式被测试。捕获与桌面作用域是独立的环境检查焦点保持focus preservation是可挂到任意动作行上的横切 oracle。焦点、z 序、光标与桌面状态检查都是横切不变量而不是独立测试族——这些名字描述的是职责不是新的真相来源或替代无选择器规范化调用的命令。完整矩阵内容WindowsRunnerscripts/ci/windows/run-rust-e2e.ps1Runner 区域Rust 测试真实 Harness 或应用共享应用矩阵cross_platform_behavior_test.rsElectron 与 Tauri原生控件harness_wpf_test.rs仓库内 WPF 应用原生控件harness_winui3_test.rs仓库内 WinUI3 应用Web 集成harness_web_test.rsWebView2 与 Electron捕获契约capture_contract_test.rsWPF 加驱动树/图像输出启动契约launch_windows_test.rs仓库内 Electron 启动与焦点行为Agent 光标agent_cursor_windows_test.rs源码构建的光标覆盖层与像素证据桌面作用域desktop_scope_windows_test.rs无窗口桌面输入与作用域拒绝这些行使用的横切仪表包括 testkit 的DesktopObserver、捕获校验、光标证据与桌面作用域检查。这些不变量挂在各自拥有的动作行上而不是作为独立测试族运行。Windows 是目前覆盖最广的原生矩阵涵盖 UIA 控件、Web 集成、后台焦点检查与 Windows 特定输入路由。macOS规范化 Runnerlibs/cua-driver/tests/runners/macos-lume/run-all.sh补充托管 runner手动以精确的 40 字符源码 SHA 派发.github/workflows/e2e-rust-macos.yml其探针必须通过后才运行独立的 shared、native 与 capture job。Runner 区域Rust 测试真实 Harness 或应用共享应用矩阵cross_platform_behavior_test.rsElectron 与 Tauri原生 Web 矩阵cross_platform_behavior_test.rs仓库内 WKWebView 宿主原生控件harness_appkit_test.rs仓库内 AppKit 应用原生控件harness_swiftui_test.rs仓库内 SwiftUI 应用已装应用启动installed_app_launch_macos_test.rsCalculator 与 TextEdit已装应用 AX 投递installed_app_textedit_macos_test.rsTextEdit捕获契约capture_contract_test.rs已装驱动与 macOS 捕获 API桌面作用域desktop_scope_macos_test.rsmacOS 窗口与桌面作用域WKWebView 宿主与 Electron、Tauri 运行同一个类型化共享 Web 目录。Calculator 与 TextEdit 为内置应用的启动焦点与原生 Cocoa 后台值投递补充类型化支持行但它们不替代仓库内夹具。维护者包装脚本在把行为矩阵委托给scripts/ci/macos/run-rust-e2e.sh之前会先提供精确源码构建并验证私有 Lume seed 的 TCC/签名契约。托管包装脚本在全新macos-26runner 上使用同一行为矩阵要求 GitHub 托管的 Aqua 会话与 SIP-off VirtualMac 环境、创建临时代码签名 Keychain、安装证书签名的本地应用只为该应用精确 csreq 授予 Accessibility 与 Screen Capture 权限并在任何测试开始前验证权限状态归属于驱动 daemon。托管结果在镜像与签名身份提供与维护 Lume seed 相同的发布对齐保证之前始终只是补充证据。LinuxRunnerscripts/ci/linux/run-rust-e2e.shRunner 区域Rust 测试真实 Harness 或应用共享应用矩阵cross_platform_behavior_test.rsElectron 与 Tauri原生控件harness_gtk3_test.rs仓库内 GTK3 应用捕获契约capture_contract_test.rsLinux 捕获后端桌面作用域desktop_scope_linux_test.rsX11/Wayland 桌面作用域Linux 需要分别对待 X11 与 Wayland。Nix 提供可复现的构建与桌面环境但 E2E 测试仍然需要真实的 X11 或 Wayland 会话。Linux 不需要 GIF 输出——MP4、截图、无障碍树、轨迹与日志才是有效证据。Wayland 结果与合成器相关托管通道使用 Sway 证明 wlroots 协议GNOME 需要可选的 WinRects Shell 辅助以获取权威的 frame/buffer 几何、观测、捕获与已验证的目标激活portal/libei 授权在用户撤销前一直有效因此后续驱动进程不会重新弹出同意对话框KDE 需要未来可寻址目标的 KWin 适配器portal 可用性本身不能证明输入能安全投递到命名窗口。标准 Wayland 不暴露物理指针位置因此规范化 Wayland 行不声称拥有真实光标保持 oracle焦点、完全遮挡、哨兵输入隔离、活性与夹具状态 oracle 仍然是强制的。AX、PX 与 Delivery 维度各平台当前的投递/拒绝/未证明动作台账见 action-support.md。这些术语描述不同维度术语含义AX通过无障碍/UI 自动化元素寻址目标PX通过屏幕坐标或指针几何寻址目标Foreground投递时允许把目标带到前台Background目标应在不被抬升、不抢焦点的前提下接收动作Window scope捕获或动作限定在单个目标窗口Desktop scope捕获或动作覆盖整个桌面共享与原生动作矩阵应覆盖左键、右键、双击、输入文本、按键、热键、滚动、子窗口与拖拽在驱动支持的 AX/PX 与前台/后台组合上进行测试。不支持的后台路由必须声明拒绝契约允许的结构化错误码加桌面副作用 oracle拒绝会让要求投递的单元失败。不应存在一个只为了在后台重复同样动作的独立delivery测试族。原生 Harness 行使用与共享矩阵相同的类型化 case/result 契约当前原生set_value行声明后台投递契约包含 no-focus/no-raise 观测无投递概念的动作显式标记not_applicable。横切不变量DesktopObserver 与哨兵桌面观测器是横切测试仪表对任意动作、Harness 或目录区域回答同一个问题驱动执行或拒绝了该操作同时没有打扰用户的前台应用或桌面吗cua-driver-testkit::DesktopObserver拥有共享接口见 observer.rs 中TargetWindow、ObserverCapabilities、TargetZ、DesktopSnapshot、FocusEvent、DesktopJournal等类型。Windows、macOS 与 Linux 原生后端在动作前后快照前台窗口、目标 z 序、光标与焦点状态一个独立的全桌面 Electron 哨兵在完全覆盖目标的同时记录键盘、指针、滚轮、可见性、焦点与心跳事件。后台行直接启用这两部分仪表没有专门的守卫套件。不变量或场景检查内容后台点击/输入/按键目标动作不把焦点从用户前台窗口移走最小化启动launch_app(start_minimizedtrue)不抬升新应用后台热键键盘组合不抢焦点子窗口点击目标创建的窗口不意外成为前台后台截图读取目标不改变焦点或 z 序Agent 光标可见性启用并移动时捕获像素中出现光标哨兵契约在目标仅部分覆盖或心跳停止时失败关闭fail closed。任何行为单元运行之前严格环境 preflight 会故意向哨兵发送输入并故意抬升后台目标——只有观测到泄漏输入与瞬态焦点丢失、哨兵被恢复并再次完全遮挡目标后通道才会继续。Windows、macOS 与 X11 要求哨兵的活动焦点日志报告丢失Wayland 使用合成器支持的原生焦点观测器因为 Electron/Ozone 对外部表面焦点转换不会可靠发出 DOMblur事件哨兵心跳与泄漏输入日志在 Wayland 上仍然强制。这个阳性对照防止已损坏的守卫让所有后台行看起来都是绿的。焦点断言可以证明没有抢焦点却无法证明点击改变了目标应用状态——因此动作行必须同时检查目标的外部状态并在测试后台投递时检查横切桌面观测器。这些测试需要真实的交互式 Windows 用户桌面拒绝 Session 0、锁定桌面与断开的 RDP 会话没有CUA_REQUIRE_GUI1时不可用桌面可在本地开发中自跳过而规范化 Windows runner 会启用硬失败行为。证据产物结构规范化 GUI 运行的每个测试单元都应产生以下证据artifacts/cua-driver/os/ |-- recordings/cell-label-pidpid-sequence/recording.mp4 |-- recordings/cell-label-pidpid-sequence/trajectory.json |-- recordings/cell-label-pidpid-sequence/turn-*/before_state.json |-- recordings/cell-label-pidpid-sequence/turn-*/before.png |-- recordings/cell-label-pidpid-sequence/turn-*/after_state.json |-- recordings/cell-label-pidpid-sequence/turn-*/after.png |-- cases.jsonl |-- environment.jsonl |-- results.jsonl |-- summary.md -- rust-target.logGitHub Actions 摘要为每个有意义的单元保留一行OS、Harness、动作、AX/PX 寻址、投递模式、驱动路由、预期与观测行为、oracle 以及一条证据链接以精确视频路径为标签打开所属通道归档。单元测试只需普通测试输出与日志不需要桌面视频。在 run-rust-e2e.sh 中可以看到具体落地runner 设置CUA_E2E_DECLARATIONS_FILE、CUA_E2E_ENVIRONMENT_FILE、CUA_E2E_RESULTS_FILE、CUA_E2E_RECORDINGS_ROOT等环境变量先跑canonical_e2e_environment_is_readypreflight再逐个执行 Rust 目标最后用cua-driver-testkit的cua-e2e-report二进制做--require-video校验并生成 summary它还会用ffprobe验证每条录制轨迹可播放、用jq检查每条视频都被某个类型化结果行认领杜绝孤儿视频。Hyprland 验证决策2026-09-07文档记录了一项重要的验证决策用于区分普通 CI、完整托管的 X11/Sway/Windows Harness、原生 Hyprland 验收与有界应用证据。维护者为原生 Hyprland 选择同一条规范化 Linux Rust Harness在准备好的原生 Hyprland 桌面、精确候选 SHA 上运行 scripts/ci/linux/run-rust-e2e.sh 的完整all套件保留 runner 要求的单元、断言与证据检查记录合成器与后端来源。X11 运行不能建立原生 Hyprland 覆盖环境失败与失败单元始终是失败不允许跳过测试或篡改预期结果。启动原生 Hyprland Harness 前需在一次性桌面的 Lua 配置中应用如下 map-time 规则并重载hl.window_rule({ name cua-canonical-sentinel-animation, match {title ^CuaTestHarness Sentinel \\[cdp[0-9]\\]$}, no_anim true, })preflight 会独立验证该精确哨兵的no_anim随后在首次 Driver 激活前等待映射后的全屏就绪。hyprctl clients报告的是几何目标而非动画中的表面边界仅凭重复的相等目标不能证明动画完成。该规则只改变测试哨兵的动画不改变其摆放或产品的几何守卫运行后需恢复原配置——它是确定性夹具要求不是 Omarchy 用户配置要求。后台TARGET输入的生产兼容门见 hyprland_compatibility.rs只接纳有资格的原生 Calc26.2.5-3与 Inkscape1.4.4-6包。普通 GTK、Electron 与 Tauri 夹具不符合 v3 后台原始输入资格它们声明的拒绝行为只能证明拒绝本身不能证明插件投递或隔离不允许放宽后台生产准入或添加测试旁路来使其合格。已接纳的前景扩展为普通原生顶层表面新增独立的生产FOREGROUND_TARGET路由由HELLO以foreground_target:true宣告不适用 Calc/Inkscape 后台包门。现有完整套件已覆盖定义的 GTK3、Electron、Tauri 前景用例前台激活与主光标移动是有意为之且无恢复承诺主光标接管前必须验证精确目标投递以及对按住键/按钮、抓取、约束、拖放的拒绝前台拖放在主输入/焦点转换时的取消需要评审与原生证据任何后台拒绝不得升级到该路由。在两个合格应用上保留简短的真实应用生产冒烟与仪表化隔离证明作为补充兼容证据验证实际应用效果、插件传输归属、主座位隔离与清理未仪表化冒烟无法建立基于 trace 的声明。保留在源码f180e8828b8f31cc153e3c44eaa89a9c13c5bc68的证明包含 20 个仪表化动作、9 个指针效果、6 个观测区间外加 6 动作的未仪表化冒烟保存的输出确认 Calc 单元格 A1 含a、Inkscape 对象 x 坐标从 40 变 42 而 y 保持 60插件树与未仪表化模块哈希在1133a06e4f205cf80188a7ac9e41102f37611fea未变。这是有界支持证据不是完整应用矩阵或发布字节证明。有界计划及其限制见 production-proof.md。显式的 Inkscape-only 限定 profile 支持有界的打包候选精确 Inkscape1.4.4-6、独立原生客户端、两条应用通道、独立 SVG oracle 与第三方容量拒绝。它保留默认 Calc/Inkscape profile 与原生全套件门且不记录新的原生通过结果。长 Python Calc/Inkscape 计划含跨两应用 34 个策略用例的三次完整重复不再是合并要求扩展 Python 压力运行仅作为特定未解决失败的诊断。该决定只改变测试策略不记录新的通过结果也不豁免 RFC 3550 中涉及的 CI、原生证据或发布门。当前已实现的能力Rust 拥有规范化场景定义与外部状态断言。Electron 与 Tauri 在所有受支持 OS 上使用同一共享 Web 夹具共享目录见 index.html含WEB_HARNESS_MARKER_v1与data-cua-id状态标记。Windows、macOS、Linux 原生 Harness 都是从源码构建的仓库内应用。三个 OS runner 对完整矩阵使用无选择器命令。共享与原生 Harness 所有者发出相同的类型化 v2 结果记录。规范化 GUI 行在报告前收集并验证轨迹与 MP4。规范化 GUI 行要求每个目标回合都有可解析的前/后状态与非空的前/后目标窗口图片。唯一窄例外是成功执行 Windowsbring_to_front恢复而其最小化目标没有动作前图片或宿主捕获不可用的情况此时必须保留成功动作响应、捕获的动作后无障碍状态、显式捕获分类、轨迹与 MP4任何其他缺失预期证据都会导致报告失败。每单元视频在夹具就绪与前台/后台姿态后开始投递前有 300 ms 基线捕获持续到外部 oracle 采集结束trajectory.json必须以behavior_video.status finalized结尾。光标审查媒体使用agent_cursor_showcase_test共享行为矩阵 daemon 刻意使用--no-overlay避免合成光标像素污染动作 oracle。Windows 托管运行通过GetConsoleWindow选择继承的 HostedComputeAgent/runner 控制台、验证其身份并通过ShowWindow(SW_MINIMIZE)最小化它再建立夹具或哨兵姿态。严格通道 preflight 在缺少夹具、桌面访问、权限、无障碍、捕获、录制支持或后台守卫失效时直接失败而不是静默跳过。规范化 runner 设置CUA_E2E_FORBID_SKIPS1未过滤的共享运行还在 Windows/Linux 设置CUA_E2E_EXPECTED_MIN_CELLS80、macOS 设置 120使被过滤、缩短或意外清空的目录无法报告为绿色。显式诊断单元或 Harness 过滤器只禁用最小计数检查匹配零单元在 Rust 矩阵内仍然失败。GitHub 摘要把每条带证据的行链接到其通道归档并展示精确录制路径轨迹路径保留在类型化证据与归档中。单元/协议测试与交互式 E2E 测试保持分离。待实现的工作剩余工作是平台覆盖与验证而不是另一套测试层级扩展原生动作行。共享 Web 矩阵覆盖所有已声明的 AX/PX 与前台/后台单元AppKit、SwiftUI、WPF、WinUI3、WebView2 与非 GTK3 Linux 工具包仍存在 action-support.md 中列出的未证明原生组合。保持精确源码校验。每个被接纳的平台运行必须记录一个不可变源码 SHA 并保留类型化证据契约。补齐代表性桌面缺口。托管 Sway 已通过完整 Electron、Tauri、GTK3、捕获与桌面作用域目录真实 GNOME 46 会话通过 GTK3、捕获与桌面作用域但仍需共享渲染器目录与 portal 视频对齐Plasma 6 仍需经验证的 KWin 激活适配器与第一条被接纳的行为通道。增加代表性工具包表面。GTK4、Qt5/Qt6、VTE、VCL 与 GL 画布仍是有可选的真实应用缺口共享 Electron/Tauri 覆盖不能替代这些原生技术栈。Flake 清理。用外部状态轮询替换剩余的固定原生等待并在复用 Harness 进程前添加夹具重置令牌。文件收敛计划目标不是把所有断言塞进一个巨型测试文件而是让每个行为有唯一所有者、让横切证据可复用。目标所有权结构rust/crates/cua-driver-testkit/src/ -- observer.rs 跨 OS 桌面副作用接口 rust/crates/cua-driver/tests/ |-- cross_platform_behavior_test.rs 共享 Electron/Tauri 动作矩阵 |-- harness_wpf_test.rs Windows WPF 动作行 |-- harness_winui3_test.rs Windows WinUI3 动作行 |-- harness_web_test.rs WebView2/Electron 页面与 CDP 行 |-- harness_appkit_test.rs macOS AppKit 动作行 |-- harness_swiftui_test.rs macOS SwiftUI 动作行 |-- harness_gtk3_test.rs Linux GTK3 动作行 |-- capture_contract_test.rs 树与截图读取契约 |-- desktop_scope_os_test.rs 窗口/桌面作用域不变量 -- protocol_*_test.rs 协议与 schema 测试桌面观测器是辅助而非测试族。动作行在测试后台投递时调用它然后记录两个结果① 目标应用状态是否改变或驱动是否返回文档化的结构化拒绝② 焦点、z 序、光标与桌面状态是否保持在契约内。焦点、z 序、光标与输入泄漏断言归属于行使它们的类型化动作行启动、捕获、光标与桌面作用域契约保留其窄拥有场景。规范化 runner 是唯一面向用户的命令通道选择器只是内部诊断。贡献者工作流新增场景时按此步骤新增或更新仓库内夹具及其外部状态标记。在rust/crates/cua-driver/tests/下新增 Rust 场景。声明 AX/PX 寻址、前台/后台投递、作用域与 oracle。改变跨 OS 结构时同步更新 test-matrix.md 与本指南。仅当测试是平台特定时更新对应 OS runner 的选择。先在本地运行最小 Rust 测试再调用 OS 命令之后才宣布矩阵完成。最终目标是在各平台拥有一个可理解的 Rust E2E 模型只在 OS 确实不同的地方使用平台特定 Harness。新增动作或模态时文档、共享夹具 oracle、Rust 测试与 OS 特定 runner 选择必须一起更新——这份跨 OS 检查清单能防止只在 Windows 通过的测试被误认为跨平台覆盖。【免费下载链接】cuaScale computer-use 2.0 with open-source drivers, cross-OS fleets, and benchmarks for training, evaluation, and data generation.项目地址: https://gitcode.com/GitHub_Trending/cua/cua创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门