一个令人遗憾的现实是:无论是 Windows 还是 macOS 版本的 Codex Computer Use,都无法实现真正的后台执行。AI 操作会持续占用输入焦点,一旦用户移动鼠标或敲击键盘,任务便会卡顿或错乱。想要它默默完成自动化脚本?几乎不可能。这并非配置错误,而是设计上的根本限制。

Windows 版:前台会话保活的唯一可行方案
核心思路是让系统误以为你仍在操作。否则,AI 的光标移动和按键模拟会被 Windows 的 UIPI(用户界面特权隔离)拦截并直接中止。
第一步:以管理员身份启动 PowerShell,执行以下命令以关闭进程缓解策略——否则后续的模拟输入会被静默丢弃:
Set-ProcessMitigation -Name powershell.exe -Disable AuditOnly -Disable StrictMode
第二步:安装 AutoHotkey v2(注意是 v2 版本,非 v1),新建一个 script.ahk 文件,写入以下循环脚本:
Loop {
SendInput, {Click 100,100} ; 每3秒在屏幕左上角触发一次无害点击
Sleep 3000
}
Return
第三步:右键脚本文件,选择“Run Script”,确保任务栏出现绿色 H 图标,再启动 Codex Computer Use。这一步并非为了“欺骗”系统,而是绕过 Windows 对空闲前台进程的自动挂起机制。
需要特别提醒:此方法仅对 Windows 10/11 22H2 及更高版本有效。若通过远程桌面连接,务必勾选“在远程会话中保留本地输入焦点”,否则 AHK 点击将失效。
macOS 版:突破屏幕锁定即中断的硬性限制
macOS 的 Accessibility 权限只会在当前用户登录且屏幕未锁定时生效。一旦屏幕休眠或锁屏,Computer Use 将立即失去控制权,所有正在执行的 GUI 操作被强制终止。
方法一:直接禁止屏幕自动锁屏。路径为系统设置 → 锁屏,将“开始休眠”和“自动锁定”均设为“永不”。但此法存在明显安全风险,不建议长期启用。
方法二(推荐):使用 caffeinate 命令维持会话活跃。在终端执行:
caffeinate -dimsuw codex computer-use --task "deploy-api"
参数说明:-d 防止磁盘休眠,-i 阻止空闲挂起,-m 锁定内存不换出,-s 保持屏幕点亮,-u 允许用户交互——这一条至关重要,否则 Codex 无法响应自身弹窗。
方法三:配合 nohup 和 AppleScript 实现后台保活。创建一个 launch agent plist 文件,注入以下 AppleScript 片段,确保每 90 秒激活一次前台:
tell application "System Events"
keystroke " " using command down
end tell
该命令等效于按下 Cmd+Space 触发聚焦搜索,不会干扰当前窗口,但能重置 macOS 的“前台活跃计时器”。
跨平台通用止损方案:提前固化操作边界
无论 Windows 还是 Mac,一旦 Computer Use 进程被系统中断,恢复后都无法续接原任务流——它不会记住断点,也不会重试失败步骤,只会报错退出。
因此,必须在任务启动前,使用 codex task define 定义原子化子任务。例如:
codex task define --name "build-dist" --steps '["npm ci", "npm run build"]'
codex task define --name "upload-s3" --steps '["aws s3 sync dist/ s3://my-bucket/", "aws cloudfront create-invalidation --distribution-id XXX --paths /index.html"]'
然后用 codex task run --sequential build-dist upload-s3 强制串行执行,每个子任务独立启停。这样即使中途被中断,只需重新运行最后一个失败的 task name,无需从头开始。
这一步不能省略:Codex 不会自动分解长任务,你必须手动切分,否则一次中断就等于一切重来。
