
如何把 Cua Driver 注册为开机自启并在重启后仍存活的常驻守护进程【免费下载链接】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 的守护进程持有 per-pid 元素缓存、权限策略、录制与配置状态、macOS TCC 归属以及 Windows 交互会话上下文。只要你的外部 MCP 客户端或一次性 CLI 调用cua-driver call …在重启后仍然要能用就需要把守护进程注册为开机自启项让它在重启后自动回到运行状态。本文按 Windows、macOS、Linux 三个平台给出文档中的注册方法、验证方式和边界限制。注意通过CuaDriver.create()在同进程内使用 SDK 的应用走的是同进程运行时不需要本文的自启配置。前提条件已通过各平台的一行安装脚本装好 Cua Driver平台要求见 安装文档macOS 14Sonoma及以上Apple Silicon 或 IntelWindows 10/11 或 Windows Server带交互式桌面会话和 PowerShellx86_64 的 Linux 桌面会话X11/XWayland或 opt-in 原生 Wayland加 AT-SPI 2。能用cua-driver --version看到版本、用cua-driver doctor跑通环境检查。以下所有自启条目默认都以standard权限模式启动守护进程。权限模式在启动时固定不能对运行中的守护进程修改如需bounded或unrestricted必须把对应配置写进自启条目本身见固定权限模式。在 Windows 上注册Scheduled Taskcua-driver autostart子命令在 Windows 上是原生可用的。在交互式会话RDP 或本地控制台里一次性执行cua-driver autostart enable cua-driver autostart kickenable注册一个名为cua-driver-serve、LogonType: Interactive的 Scheduled Task让守护进程留在 Session 1 而不是 Session 0。命令是幂等的升级后重跑会自动更新二进制路径。kick立即启动该任务不需要等下次登录。如果通过 SSH 或在 Session 0 以SYSTEM身份执行enable会报No mapping between account names and security IDs was done错误——改用 RDP 或本地控制台执行。通过一行安装脚本安装的机器安装程序会尝试注册该任务非交互式或 SSH 安装会跳过注册之后用上面的enable补上。查看任务状态cua-driver autostart status # registered (running)上面是文档示例输出。判定规则只有not-registered能确认 Scheduled Task 不存在permission-denied或unknown表示当前进程无法检查 Task Scheduler命令以非零退出并保留原始诊断此时不要盲目重新注册。移除注册cua-driver autostart disable会话行为RDP 断连后任务继续运行断开会话处于Disc状态仍是活的交互会话守护进程只在显式注销或重启时停止下一次交互式登录会再次触发该任务。在 macOS 上注册手写 LaunchAgentcua-driver autostart尚未在 macOS 实现需要自己写一个 LaunchAgent。把下面的文件保存为~/Library/LaunchAgents/com.trycua.cua-driver.plist/Applications/CuaDriver.app是一行安装脚本放置的应用路径?xml version1.0 encodingUTF-8? !DOCTYPE plist PUBLIC -//Apple//DTD PLIST 1.0//EN http://www.apple.com/DTDs/PropertyList-1.0.dtd plist version1.0 dict keyLabel/key stringcom.trycua.cua-driver/string keyProgramArguments/key array string/Applications/CuaDriver.app/Contents/MacOS/cua-driver/string stringserve/string /array keyRunAtLoad/key true/ keyKeepAlive/key true/ /dict /plistRunAtLoad让它在加载时启动KeepAlive让 launchd 在进程退出后拉起它。然后加载launchctl load ~/Library/LaunchAgents/com.trycua.cua-driver.plistLaunchAgent 守护进程由launchd启动TCC 归属为com.trycua.driverAccessibility 和 Screen Recording 授权一次后这些授权在重启后仍然有效。反过来如果只在终端里启动而没有 LaunchAgentmacOS 会把提示归属到终端授权就不会应用到 Cua Driver。可选分支如果你有 cua 仓库的本地 checkout可以在仓库根目录运行 helper 脚本代写这个 LaunchAgent脚本会构建本地二进制产物get_config.source_sha内嵌该 checkout 的完整 Git commit改动过或未跟踪的源码树会标记为commit-dirty无.git的源码快照需要显式提供CUA_DRIVER_SOURCE_SHAbash libs/cua-driver/scripts/install-local.sh --autostart在 Linux 上注册systemd user unitcua-driver autostart目前只支持 WindowsLinux 需要手写一个 systemduserunit。保存为~/.config/systemd/user/cua-driver.service[Unit] Descriptioncua-driver background daemon Aftergraphical-session.target PartOfgraphical-session.target [Service] Typesimple ExecStart%h/.local/bin/cua-driver serve Restarton-failure RestartSec2 [Install] WantedBygraphical-session.target%h是 systemd 对主目录的展开。Restarton-failure加RestartSec2让单元在异常退出后 2 秒重启。然后重载并启用systemctl --user daemon-reload systemctl --user enable --now cua-driver.service systemctl --user status cua-driver.service两类边界情况CI 或无头机器上希望守护进程在用户登出后仍存活启用 lingerloginctl enable-linger $USER$USER是当前登录用户命令由系统 shell 展开。无头机器没有graphical-session.target此时必须把[Install]段改为WantedBydefault.target否则enable没有可挂钩的目标守护进程不会随开机启动。固定权限模式--permission-mode、--capability-manifest、--approve-capability-manifest、--dangerously-bypass-approvals只在守护进程启动时读取一次。要让无人值守的重启后仍以同一模式回来而不是回落成standard要把这些配置放进自启条目。macOS每个 flag 作为独立string加在ProgramArguments的serve之后keyProgramArguments/key array string/Applications/CuaDriver.app/Contents/MacOS/cua-driver/string stringserve/string string--permission-mode/string stringbounded/string string--capability-manifest/string string/Users/you/cua-session.yaml/string string--approve-capability-manifest/string /arraylaunchd不展开~也不走 shellmanifest 路径必须是绝对路径——把示例中的/Users/you/cua-session.yaml替换成你机器上的真实绝对路径。编辑后重新加载launchctl unload ~/Library/LaunchAgents/com.trycua.cua-driver.plist launchctl load ~/Library/LaunchAgents/com.trycua.cua-driver.plistWindowscua-driver autostart enable注册的始终是裸的serve命令、没有模式 flag所以改为配置用户级环境变量Scheduled Task 在登录时会继承它们setx CUA_DRIVER_PERMISSION_MODE bounded setx CUA_DRIVER_CAPABILITY_MANIFEST_FILE $env:USERPROFILE\cua-capabilities.yaml setx CUA_DRIVER_CAPABILITY_MANIFEST_APPROVED 1setx只影响之后新建的进程需要重启守护进程才生效cua-driver stop cua-driver autostart kickLinux扩展 unit 文件里的ExecStartmanifest 路径按实际文件替换ExecStart%h/.local/bin/cua-driver serve --permission-mode bounded --capability-manifest %h/cua-session.yaml --approve-capability-manifest然后重载并重启systemctl --user daemon-reload systemctl --user restart cua-driver.service安全边界这些自启形态都等价于受信任的启动配置——能编辑 plist、Scheduled Task、systemd unit 或上述环境变量的人就能改变守护进程回来时的模式。坏配置会直接让启动失败而不是静默降级为standardbounded没有已批准的 manifest、或unrestricted缺少确认时守护进程根本不会绑定它的 action socket。确认守护进程起来之后用一个 manifest 不允许的工具发起调用应当看到被拒绝cua-driver status cua-driver call a tool outside allow.tools {} # Error: ...其中a tool outside allow.tools是占位符替换为你 manifest 的allow.tools之外的任意工具名# Error: ...为文档示例表示该调用应报错。验证守护进程在运行cua-driver status # Cua Driver daemon is running # socket: /Users/you/Library/Caches/cua-driver/cua-driver.sock # pid: 12345上面是文档示例输出socket 路径和 pid 以你机器实际值为准。在 Windows 上 socket 路径是\\.\pipe\cua-driverstatus还会报告会话号——用它确认守护进程仍在交互会话Session 1而不是 Session 0因为 GUI 工具在 Session 0 会返回空数组。各平台重启后的存活机制对应macOS 由 LaunchAgent 的RunAtLoadKeepAlive保证且 TCC 授权跨重启保留Windows 由LogonType: Interactive的计划任务在下一次交互式登录时触发Linux 由enable的开机挂钩、Restarton-failure加 linger 时覆盖登出场景保证。停止与限制干净停止cua-driver stop该命令向守护进程发送关闭信号自启条目LaunchAgent、Scheduled Task 或 systemd unit保持注册状态会在下次登录或触发条件时再次启动。相关边界LogonType: Interactive是 Windows 注册的硬性要求S4U或Password等替代方案会把守护进程放进 Session 0GUI 工具在那里返回空数组。cua-driver autostart status的permission-denied/unknown不等于未注册只是当前进程无法检查 Task Scheduler。更多autostart子命令说明见 CLI 参考权限模式各允许什么见 Permission modesbounded模式下的 manifest 写法见 Write a capability manifest。【免费下载链接】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),仅供参考