尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Cua Driver Hyprland 插件验证体系:Discovery-only 构建、故障注入测试与物理 Omarchy 验收全解

Cua Driver Hyprland 插件验证体系:Discovery-only 构建、故障注入测试与物理 Omarchy 验收全解 Cua Driver Hyprland 插件验证体系Discovery-only 构建、故障注入测试与物理 Omarchy 验收全解【免费下载链接】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本文完整解读 cua 仓库中 Hyprland 插件测试计划覆盖该实验性 Wayland 合成器插件从合并前聚焦检查到物理裸机最终验收的全部分层验证体系。读者将掌握默认 discovery-only 构建与实验性输入构建的边界、十项聚焦 pre-merge 检查、live_discovery.py/nested_lifecycle.py/input_lifecycle_live.py/desktop_state_live.py等运行器的命令与参数、故障注入用例的判定标准以及 Fleet 打包通道和物理 Omarchy 验收行的证据要求可直接用于复现该插件当前的验证流程。一、背景插件的构建形态与测试边界该测试计划服务的对象是 cua 仓库中的一个可选、实验性的 Hyprland 插件。理解测试计划前必须先厘清其构建形态因为绝大多数测试的断言都建立在构建形态之上。正常构建默认是 discovery-only默认关闭、只做发现negotiation、status、liveness拒绝一切输入变更返回类型化结果background_unavailable。这里discovery仅指协议协商、状态与存活探测不包含应用目标发现或输入投递。实验性输入构建input experiment与独立的input v3 候选cua-input-v3.md都有显式构建开关与外部测试操作者授权属于不随正常包发布的试验路径。稳定版 Cua Driver0.23.2与 nightly均不通过该插件提供隔离后台输入。任何测试都必须据此设置预期。从 CMakeLists.txt 可以确认完整的构建选项矩阵这是测试计划中哪些用例在哪种构建下可跑的源头CMake 选项默认值含义CUA_HYPRLAND_BUILD_PLUGINON构建 ABI 钉死的 Hyprland 插件仅限 LinuxCUA_HYPRLAND_INPUTOFF构建 trusted-local 逐动作输入协议 v3 候选CUA_HYPRLAND_INPUT_TRACEOFF仅为原生认证插桩 v3 输入要求CUA_HYPRLAND_INPUTCUA_HYPRLAND_TEST_INPUTOFF构建非发布的隔离输入 VM 实验要求 64 位十六进制 Ed25519 测试操作者公钥CUA_HYPRLAND_EXPECTED_VERSION空构建时要求精确的 hyprland pkg-config 版本如0.56.2源码还强制了互斥约束CUA_HYPRLAND_INPUT与CUA_HYPRLAND_TEST_INPUT同时开启会直接FATAL_ERROR输入实验固定在 Hyprland0.56.2。这些约束直接决定了测试计划中该实验不支持正常构建的断言。测试计划给出的关键定位Discovery-only 测试必须fail closed失败即关闭——绝不允许为了走通某条路径而开启输入变更。其 VM 验证记录 与 并发真实应用验证 属于实验性证据不是生产验收正常的桌面捕获、窗口枚举、前台动作与 AT-SPI 语义动作必须单独记录。二、聚焦合并前检查Focused pre-merge checks测试计划要求针对构建所用的精确 Hyprland 头文件运行以下十项检查这是后续一切实时验证的前置门槛。警告即错误的严格构建在工具链允许处将警告视为错误。需在 mock 套件中同时编译 Hyprland0.56.2的 legacy status-command 适配器与更新的 Socket1 适配器。CMake probe 测试在一个构建目录内验证 C26、pkg-config 标志传播、不支持头文件拒绝与 tier 变化。必须记录合成器与插件的编译器家族与版本二者须匹配才能作为实时加载证据。ELF 依赖检查必须接受共享 C 运行时、拒绝静态链接运行时若编译器暂存目录不完整导致负向用例出现两份输出都要保留。二进制包解析边界在零、边界、超限大小上测试包解析覆盖坏 magic、不支持版本、非零 flags、截断、队列饱和、非阻塞读写期间的断连。Socket 放置与所有权验证 socket 位于当前 Hyprlandper-instance 运行时目录、inode 模式为0600、安全处理 stale socket且清理逻辑不能删除其他进程的文件。SO_PEERCRED认证在处理请求前接受合成器 UID、拒绝其他 UID 或不可用凭据。I/O 线程 poll 失败强制失败后验证 listener 关闭、socket 路径消失、后续连接失败、状态保留失败。EMFILE/ENFILEaccept 失败在有界文件描述符限额下验证重试时间有界而非可读 listener 上的忙循环。协议/epoch/能力协商覆盖 stale epochs、不支持版本、缺失能力、握手与握手后空闲超时、keepalive 流量、重连与合成器重启。不透明目标 token验证 token 不能与指针、对象 ID 或 PID 关联销毁时被修剪永远不跨 epoch 存活。精确的background_unavailable每种变更形态在 focus、z-order、cursor、目标状态、primary-seat 活动或无关窗口无变化时返回精确拒绝。注意错误详情仅用于诊断不是协议 v2 中稳定的机器可读原因字段。传输 ack ≠ 应用交付传输层ack不能满足应用投递断言harness 必须要求类型化结果与独立状态 oracle。ABI 负向测试对一个 Hyprland 版本构建、在一次性环境中的另一版本下尝试加载。可接受结果是显式拒绝或不可用状态且无 socket崩溃、部分注册或能力通告均视为失败。非 Linux 主机的约束可移植协议测试可在任何支持 C26 的主机上运行。Unix 传输 smoke 仅在缺少AF_UNIX SOCK_SEQPACKET的非 Linux 开发主机上使用SOCK_STREAM发布证据必须在 Linux 上运行同一测试因为生产路径编译并实际执行SOCK_SEQPACKET与SO_PEERCRED。在这些主机上配置测试需加-DCUA_HYPRLAND_BUILD_PLUGINOFF——通过 shim 不算 Linux 传输证据。三、实时传输检查live_discovery.py在已加载精确模块、且一次性 Hyprland 会话中启用 discovery 的前提下运行实时传输检查python3 tests/live_discovery.py --reload-module /absolute/path/to/cua-hyprland-plugin.so脚本检查真实包协商、存活、全部六种变更拒绝、socket 模式、合成器窗口/工作区/光标状态不变、卸载时连接关闭、重载后产生新 epoch。它不验证应用状态、实时前台抓取、硬件输入隔离或不同 UID 对端——这些属于独立验收行。--reload-module会卸载并重载指定模块省略它则只做传输检查。从 live_discovery.py 源码可以看到其关键断言脚本拒绝在-O/PYTHONOPTIMIZE下运行状态断言要求abi.match True、能力supported enabled [discovery]、transport.ready True、compositor_epoch ! 0且协议固定为{major: 2, minor: 0, max_frame_bytes: 4120}即 cua-inject-v2.md 定义的 v2 线协议。对端状态通过hyprctl -j读取 activewindow、clients、activeworkspace、cursorpos 等组合出可比较的桌面状态快照。四、双实例隔离与干净重启nested_lifecycle.py在一次性 Hyprland Wayland 桌面内测试双实例隔离与干净重启python3 tests/nested_lifecycle.py --module /absolute/path/to/cua-hyprland-plugin.so运行器启动两个使用临时配置的嵌套 Hyprland 进程按精确子 PID 找到每个进程只把匹配模块加载进这两个进程。它在两者中都运行实时拒绝检查重启其中一个检查旧连接关闭、socket 移除、新 socket/epoch 生成与兄弟实例存活。成功或失败都会停止两个自有进程并保留临时日志——强制终止算失败不算干净重启通过。父进程事后必须仍能回答版本查询其配置从不被编辑、模块从不加载进它。由于嵌套窗口可能影响父进程焦点、合成器启动可能更新会话状态测试计划明确要求使用一次性父进程。记录项包括源码 SHA、模块摘要、环境、stdout、stderr 与保留日志。JSON 结果将该检查与应用投递物理输入隔离区分开它不认证包安装、直接 DRM 启动、任意 ABI 组合或完整 driver 桌面矩阵。托管 CI 只测试该运行器的清理/错误路径用 mock原生结果必须在 Fleet 客户机或其他声明好的 Wayland 环境运行。五、持键/持指针输入生命周期故障Held-input lifecycle faults这部分针对的是实验性输入路径。会话生命周期候选把热重载恢复替换为配置开关config-toggle恢复历史 hot-reload 候选则反之。配置开关用例# 使用 toggle casePATH 是测试拥有的 Lua include被一次性合成器配置 source # 内容必须恰好为一行hl.config({plugin {cua {enabled true}}}) 换行 python3 input_lifecycle_live.py --case toggle --toggle-file PATH ...运行器通过插件状态验证禁用与重新启用要求新的准入 epoch 与新的批准同时保持同一批应用继续运行。它会在输入或卸载前拒绝历史reloadcase当状态要求桌面重启时。独立的卸载/替换拒绝与全新桌面测试仍然必需——配置开关不能证明它们。可移植套件覆盖 20 次开关间的 seat 所有者复用、失败传输恢复、重启必需生命周期标记、inode 感知的 socket 清理。这些 mock/单元检查不建立原生 seat 投递、键盘映射刷新、短暂桌面转换期间的撤销或真实多进程 lane 行为。原生可靠性记录 记录了被测源、测量结果、录像、设置失败与剩余限制。运行前提与权限input_lifecycle_live.py只能在一次性 Fleet 客户机中运行要求实验构建被显式加载、源码构建的 Driver 服务以--permission-mode unrestricted --dangerously-bypass-approvals启动、两个原生 GTK fixtures。正常构建不支持此测试。首先通过 Driver 观察两个 fixture 窗口提供经过审查的 JSON 计划包含background与foreground的 PID/窗口对、匹配的background_bounds与foreground_bounds、两个窗口图像点from与to、以及独立 primary grab 的窗口局部foreground_point。运行器拒绝已变化的几何并在应用动作前后取新 Driver 快照。参数通道--plan、--evidence、--driver、--driver-socket、--input-directory、--primary-grab、--background-journal、--foreground-journal、--foreground-wire用--record-video提供支撑性 Driver 视频证据。日志与 wire log 属于既有 isolated-input fixtures。授权流程运行器写出request-initial.json并最多等待35 秒。在宿主机上审查精确的待处理目标并用input_operator.py对 epoch/challenge/target 签名。只授予能力10拖拽与恢复键探针带有界生命周期。只把签名后的 grant 作为grant-initial.json传入——私钥留在客户机之外运行器没有任何签名或隐式批准路径。故障用例每次运行选一个用例语义--case stop通过独立操作者连接撤销输入--case disconnect在 agent MCP 代理持有拖拽期间终止其进程observer 保持独立连接--case expiry --compositor-pid PID故意让指定 Hyprland 进程停滞超过租约到期用 10 秒左右的短 grant独立的 PID-fd watchdog 在调用者失败时 4 秒内恢复该进程经 systemd 启动时用KillModeprocess避免调用者终止连带杀死 watchdog--case toggle --toggle-file PATH禁用并重新启用准入保留 seats 与既有应用进程仅历史候选--case reload --reload-module PATH测试卸载/重载恢复重启必需候选拒绝此 case改用独立 retirement runner判定标准应用必须在故障注入前收到一次 press、750 ms 内收到匹配的 release。故障落在两秒拖拽的早期因此自然完成无法满足 Stop/断开/卸载界限。对 expiry界限从合成器恢复SIGCONT时起算500 ms 拖拽必须报告lease_expired——停滞期间桌面被刻意冻结该用例证明的是恢复后的到期清理而非无中断前台运行或合成器无法运行时的清理。前台 fixture 必须保留其 grab、点击计数与键盘状态其独立 Wayland wire log 在故障窗口内不得出现任何指针或键盘输入事件。仅凭光标端点匹配不能通过本检查。原始日志与 grants 保持私密只发布分类结果、时序、源码与工件摘要及声明限制。关于reload的重要边界历史 reload 清理不能证明幸存的客户端会绑定替换 seat 或接受后续输入。会话生命周期候选改为要求配置开关后幸存客户端恢复、替换后全新桌面恢复。原子键包不暴露持键流所以这些用例只能作出持指针声明。这些聚焦测试补充而非替代规范桌面矩阵与物理主机验证。六、待决权限撤销Pending authority revocationinput_authority_live.py测试签名 grant 被兑现之前的 Stop 与 Cancel不派发输入、不建立应用投递。python3 input_authority_live.py --command STOP --input-directory ... --plan ... --evidence ... --disposable python3 input_authority_live.py --command CANCEL --input-directory ... --plan ... --evidence ... --disposable两条 lane 都必须空闲且未被认领。计划是恰好两个已观察原生一次性 fixture 目标的 JSON 数组分属不同进程每个目标带正pid与不带0x前缀的小写十六进制address。运行器写出request-before.json。宿主机用input_operator.py对命名请求签名只用点击能力1让renewal-0比active-0更晚到期公开 grant 以grants-before.json按请求名键控的对象传入。运行器兑现active-0但保留 renewal 与pending-1未用。Stop 必须拒绝两份未用 grantper-lane Cancel 必须保留兄弟 lane 的待决 grant。目标重绑定后旧 grant 必须仍被拒绝。将request-after.json签为grants-after.json证明新授权仍有效lane 0 的新 grant 必须有效但先于其被撤销的 grant 到期由expires_before_unix_ms表示——这验证旧目标的回放高水位标记不会拒绝新目标绑定的更短 grant。时间安排示例初始 grant 签 50 秒、renewal 签 60 秒、新 grant 签 10 秒并在初始截止前完成第二次转移。每次转移有 40 秒限制grant 必须满足协议的60 秒上限并在提交时有效。运行器检查未变的派发计数器、无 held/focused 合成状态、操作者连接存活与最终 Stop 清理。input_authority_test.py用脚本化对端测试运行器不执行合成器代码。七、单向 seat 退休One-way seat retirementinput_retirement_live.py在真实 Driver MCP 拖拽被持有期间卸载插件然后检查同路径与不同路径的替换模块都拒绝加载直到桌面重启。使用全新一次性会话与干净、已提交的候选。两个原生 GTK fixtures 必须从启动起就有 Wayland wire logs证明它们绑定了两个合成 seat两条 lane 初始空闲。除生命周期运行器的 plan、journals、Driver/input socket 路径、primary-grab 二进制、evidence 目录外还需提供两个 fixture wire logs、--compositor-pid、--driver-service-pid、--source-sha、--module、--replacement-module、各自的--module-sha256/--replacement-module-sha256、--driver-sha256。替换模块必须已暂存到不同的规范路径与 inode——同一构建的副本只测不同路径拒绝不是不同构建升级。必需参数--disposable-session-restart-required明确承认该单向转换。用--help查看精确参数名。宿主机把grant-request.json签为grant.json能力10拖拽与键探针剩余 15–60 秒。运行器验证匹配的应用 press/release 落在750 ms 取消界限内、plugin_shutdown、旧连接关闭、socket 移除、两个 seat 能力归零、全局移除、主输入不变。合成器与客户端身份、心跳与新鲜 Driver 快照必须持续有效。每次替换尝试都必须在启用、ABI 匹配的插件状态中产生显式运行时重启拒绝插件缺失或 ABI 检查失败不能算通过。成功运行后插件保持卸载、生命周期标记完好。后续输入测试前重启一次性桌面全新桌面投递与迟客户端清理仍需独立原生覆盖。retirement_evidence_test.py用合成数据检查证据 oracle 与预检失败不是原生退休证据。八、桌面状态故障控制Desktop-state fault controlsnative desktop-state validation record 记录了五对匹配的故障/控制对、工件身份、实测取消与清理时间、保留失败与限制。desktop_state_live.py是聚焦实验安全测试不是规范桌面矩阵。要求一次性 Fleet 客户机、显式加载的输入实验、无限制权限的源码构建 Driver 服务使用原生 GTK raw-event fixtures 并保留其 journals 与 Wayland wire logs。helper 拒绝把任意进程作为目标。对每个--case destroy|move|resize|lock|dpms先跑--mode control再跑--mode action --control PATH_TO_CONTROL_RESULT。两次运行绑定相同的前台 fixture、几何、源码 SHA、模块摘要、所选故障身份同时绑定 Driver 与对手二进制及 harness 文件。control 在无 agent 输入时测量故障对合成器的效果。lock 可合法改变焦点因此仅匹配光标端点不能证明 agent 未添加干扰比较要求精确前台状态、有序光标移动、输入事件与焦点转换。使用--observer-driver-socket选择第二个同源码构建的 Driver 服务做观察与录像action 服务不得有活动录制。这分离了输入响应延迟与同步 post-action 轨迹捕获对同一服务的第二个 MCP 连接不能隔离录制开销。传入生命周期运行器的 fixture 路径外加--source-sha、--module、--compositor-pid、--compositor-exe、--instance、--disposable。用精确background_address和适用时变更的move_to/resize_to对扩展计划。几何故障要求已 floating 的 fixture。对 destroy在启动后台 fixture 前、其他客户端稳定后从两条实验 lane 捕获pre_target_resources销毁后资源计数必须回到该基线——过期的弱焦点引用不是充分证据。action 运行器等待应用收到按钮 press 后再向两秒拖拽注入故障。它要求在故障派发后750 ms 内出现类型化拒绝与清除的权限、held 输入与 agent 焦点且剩余时间足够使自然完成无法满足期限。幸存目标必须收到匹配的按钮 release销毁的 surface 无法确认 release该用例改用消失与修剪资源。意外的键盘或滚动输入会使每个拖拽用例失败。宿主机操作者审查request-initial.json与request-recovery.json并提供能力10的不同签名 grants运行器为每个 grant 等待 35 秒且从不接收签名密钥。销毁后它还通过recovery-plan.json请求单独启动的替换目标恢复必须拒绝旧权限、要求新 grant、恰好投递一对 Escape press/release、保持前台输入与合成器状态。任一次批准前前台 actor 必须已拥有主焦点——新启动目标可能在设置期间抢焦点需显式恢复前台 actor 再测量后台投递。设置不是隔离证据被 primary-target 冲突撤销的 grant 也不是故障测试。用生成的ext-session-lock-v1客户端协议构建session_lock_fixture.c并经--lock-fixture传入它使用真实协议锁、在每个通告输出上提供不透明黑色 surface、等待合成器确认无 surface 时 Hyprland 的 missing-surface 宽限期会延迟确认。fixture 不是生产锁屏。独立 watchdog 恢复 DPMS 或请求优雅解锁绝不通过杀掉锁客户端来解锁会话——崩溃客户端可能让会话保持锁定此时丢弃一次性客户机。两种模式都要求最终化的 Driver 视频。失败运行与清理结果与通过证据同等保留。只发布消毒后的结果、时序、版本与摘要。这些用例测试合成器循环观察到的持续 lock/display-off 状态它们不证明完全落在采样之间的 off/on 转换会被 latch。原子键包提供恢复证据不是被中断持键流的保证。九、Fleet 打包通道Fleet packaging lane用 packaging/arch/PKGBUILD 从 monorepo 源码构建 Omarchy/Arch Fleet 镜像。记录源码 SHA、精确 Hyprland 包版本、插件包版本、模块摘要与镜像身份。该通道必须证明只安装到/usr/lib/cua/hyprland/不做任何配置编辑、服务启用、自动加载或替换 Hyprland 自有文件显式 load、JSON discovery/status 检查、一次性客户端协商、长生命周期客户端重连、显式 unload 与干净 Hyprland 重启模拟 Hyprland 包变更后精确的 ABI 依赖失败同用户两个 Hyprland 实例间 socket 隔离、不同 UID 对端被拒在 fixture-state、focus、z-order、cursor 与 input-leak oracles 下的全部 discovery-only 变更拒绝。Fleet 通道还必须识别每个客户端是图形会话内创建的一次性进程还是长生命周期进程——会话外启动并复制 display 变量的进程不是等价证据。Chromium 与 Electron 行必须记录其有效 Ozone 后端并在测试拒绝前确认它们渲染并暴露预期 fixture。在同一候选 SHA 上运行仓库常规 Linux 源码/单元检查与相关 Cua Driver 目录。Fleet 验证可复现打包与生命周期行为不是最终硬件声明。十、物理 Omarchy 最终关卡Physical Omarchy final gateFleet 打包通道通过后、任何能力或发布声明之前在裸机 Omarchy 机器上用精确 Hyprland/插件对重复候选包。记录加载前、加载后、discovery 后、拒绝变更后、卸载后与合成器重启后的状态。独立验证应用状态、focus、z-order、光标位置以及主 seat/无关窗口无输入。物理运行是最终验收关卡VM、嵌套合成器或 Fleet 成功都不能替代它。候选 SHA、Hyprland 包、协议、打包、变更行为或 harness 之后任何改变都要在提升前重跑受影响证据。初始基线精确为Omarchy4.0.2-1、Hyprland0.56.2、xdg-desktop-portal-hyprland1.4.1、Cua Driver0.23.2、UWSM/SDDM。五个值都须与候选 SHA 和插件模块摘要一同记录。每一行单独运行并保留类型化协议结果与所列独立 oracle。所有应用行要求DPMS 开启。由于插件是 discovery-only变更尝试必须返回background_unavailable且不得改变应用、focus、z-order、光标、主 seat 与无关窗口。验证行必需证据Stock0.23.2捕获带 fixture 自有视觉标记的非黑帧归类为 stock 捕获证据非插件证据Stock0.23.2前台动作前后活动窗口身份证明 driver 是否显式激活了目标加 fixture 状态激活属前台路由行为非隔离后台输入Stock0.23.2AT-SPI 动作标识语义路由的可访问性与 fixture 状态证据不作原始输入声明GTK3 原生 Wayland类型化拒绝且 GTK3 fixture 状态不变GTK4 原生 Wayland类型化拒绝且 GTK4 fixture 状态不变Qt6 原生 Wayland类型化拒绝且 Qt6 fixture 状态不变LibreOffice 原生 Wayland类型化拒绝且文档状态不变Chromium Ozone/Wayland记录 Chromium 版本、启动 flags 与有效 Wayland Ozone 后端先证明 fixture 渲染再要求类型化拒绝与页面状态不变Electron Ozone/Wayland记录 Electron/Chromium 版本、启动 flags 与有效 Ozone 后端先证明 fixture 渲染再要求类型化拒绝与应用状态不变DPMS off派发前要求类型化拒绝且不声明任何动作不要隐式打开 DPMS绝不把黑帧当成功一次性图形会话客户端从真实图形会话环境启动一个全新进程完成 discovery 协商收到类型化变更拒绝并干净退出不依赖其他调用的状态长生命周期图形会话客户端在真实图形会话内启动协商 discovery存活多次调用检测合成器/插件重启与 stale 连接重连并协商新 epoch然后收到类型化变更拒绝裸机结果是 Fleet 之后的最终认证。缺失行、未类型化失败、把黑帧当捕获成功、焦点或光标移动、输入泄漏或无法重连的客户端都会使认证失败。hyprctl证据限于合成器管理与插件的cua:status界面。每条 focus、workspace、DPMS、load、status 与 unload 命令须单独记录没有一条是应用变更证明。同样list_apps过滤以及cua-driver serve或单次cua-driver call的授权属于 driver 侧测试而非插件能力——它们可用于诊断 agent 集成但不得出现在插件能力结果中。十一、仓库已记录的原生验证结果测试计划配套的四份验证记录提供了截至当前仓库状态的真实执行结果可帮助复现者对齐预期validation.mdDiscovery 基础验证。基于 Cua commit4da67bb61c262c663fa88559d1d3f1a138b3a463在 Omarchy4.0.1-1/Hyprland0.56.2-1上通过 6/6 CTests、真实加载、10 次连续卸载/重载循环六种变更全部background_unavailable且合成器状态不变、禁用/重启用新 epoch、合成 ABI 指纹篡改导致显式拒绝。还记录了一次静态链接 C 运行时导致重载挂死的失败调查——这正是构建强制共享运行时的原因后续在0.56.1-3上验证了真实 ABI 指纹不匹配拒绝。该记录明确系统安装与依赖升级拒绝仍未经证验。input-validation.md隔离输入 VM 验证历史单 seat 记录。真实 Driver MCP 调用向后台应用投递 click/key/hotkey/scroll/drag前台应用保持 primary-seat 指针 grab前台 wire log 无 enter/leave/button 事件。记录了实验期间修正的五个失败NODELETE 保留、可见性、seat 版本 9、action_outcome_mismatch、装饰窗口 4 像素坐标偏移。lifecycle-validation.md持键输入生命周期验证。基线断开测试 1962.39 ms 释放未达 750 ms 界触发回归修复只读 pending-termination 信号、每 25 ms 轮询修复后 Stop 26.87 ms、断开 61.76 ms、到期 18.18 ms恢复后合成器停滞 1056.27 ms、卸载/重载 60.58 ms。realapp-validation.md并发真实应用验证。两个独立 Driver MCP 连接同时编辑 LibreOffice Calc 与 Inkscape拖拽重叠 1.49–1.77 秒停靠/移动指针用例均无未命令的主运动、焦点变化或输入泄漏Cancel 单 lane 保留兄弟 lane全局 Stop 使两条在途拖拽返回stopped。primary_trace.py做事件级合成器插桩分析。desktop-state-validation.md桌面状态安全验证。五对匹配 fault-only 控制与后台拖拽全部通过Move 241.08 ms、Resize 189.02 ms、真实会话锁 60.96 ms、DPMS off 64.40 ms、目标销毁 7.03 ms类型化拒绝全部在 750 ms 内清除状态。还记录了一次缓存几何回归修复拖拽固定到开始时接受的几何 revision。这些记录反复强调结果只针对各自声明过的精确源码 SHA 与工件摘要普通 CI、mock 测试或历史原型结果都不构成该候选的原生认证。此外production-proof.md 记录了生产 v3 证据的准备工作用cua-driver mcp --direct复用既有 per-action 权限检查不引入签名器、操作者 grant 或额外批准 UI并规定了 pinned 限定目标libreoffice-fresh 26.2.5-3与 Inkscape1.4.4-6、JSON 计划字段purpose/agents/phases/outputs等与能力/lane_busy容量证明。十二、证据边界与关键结论通读整个测试计划可以提炼出支撑后续维护与复现工作的核心原则证据分层不可跨层替代可移植单测 → Linux 原生 CTests → mock/脚本化 peers → 嵌套合成器 → Fleet 客户机 → 物理裸机每一层都声明了不能证明什么。VM、嵌套或 Fleet 成功永远不是物理最终验收。Discovery-only 是安全默认正常构建六种变更全部 fail closed输入实验必须显式构建、显式加载、显式授权且只针对声明过的精确候选。类型化结果 独立 oracle 双重要求传输 ack、光标端点匹配、hyprctl命令、transport 归因均不能单独作为应用投递或隔离证明应用 journal、Wayland wire log、事件级 trace 与保存文件 oracle 才是判定依据。精确可复现是前提源码 SHA、模块摘要、编译器家族/版本、ABI 指纹、环境与保留日志构成每次运行的身份绑定任何改变都触发重跑。插件不等于 Driverlist_apps过滤、cua-driver call/serve授权、per-call 能力与策略都是 driver 侧职责插件只做本地协议认证与协商v2 发现、v3 输入候选。对该插件而言当前仓库的结论是发现层基础已验证但系统安装与物理主机认证仍开放输入实验是聚焦证据而非生产发布。测试计划中的所有命令live_discovery.py、nested_lifecycle.py、input_lifecycle_live.py、input_authority_live.py、input_retirement_live.py、desktop_state_live.py都要求一次性环境与明确的工件身份是任何希望复现或扩展该插件验证的人应首先遵循的操作手册。【免费下载链接】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),仅供参考
返回列表