FIELDNOTES返回交互报告 ↗
FIELDNOTES / DEEP DIVE · 2026.09.22

本指南中的命令在本地项目根目录运行。网站只展示调研与操作说明,不会直接连接或操作你的电脑。CLI 实验封装与配置可下载:CLI Lab 源码包。下载包不包含驱动二进制;解压后运行 install_local.py 获取校验过的固定版本。

Terminal Computer Use Lab

可以从 Terminal 使用 Computer Use,无需打开 Codex Desktop。链路是 Codex CLI / Claude Code → MCP → Cua Driver → macOS 应用。这里复用开源 Cua Driver 的原生驱动,提供自己的薄 CLI 封装;它不是 OpenAI 私有 @oai/cua 的移植,也不是完整的新模型代理。

Terminal 是控制入口,仍需一台有登录图形会话的 Mac 和必要的 macOS 权限。CuaDriver.app 在这里充当具有稳定签名身份的后台 helper,不是需要日常打开的聊天界面。纯 SSH / 没有图形登录的机器不等于能直接操作桌面。

已在这台 Mac 验证

版本固定信息见 固定版本清单(随本地项目保存)。GitHub 将此版本标记为 prerelease: true;这里按确切已发布版本固定,没有把它称为稳定 GA。源码审读还使用了较新的主线提交,差异见研究附录。

现在即可运行

在项目根目录执行,仅需 Python 3.9+ 标准库:

python3 cli-lab/cu.py inspect
python3 cli-lab/cu.py list-tools
python3 cli-lab/cu.py describe launch_app
python3 cli-lab/cu.py describe get_window_state
python3 cli-lab/cu.py plan launch_app '{"bundle_id":"com.apple.calculator"}'
python3 cli-lab/cu.py config codex
python3 cli-lab/cu.py config claude

inspect/list-tools/describe 是静态元数据检查,不查看正在运行的应用。plan 只打印将要执行的 argv。config 只输出配置,不修改 Codex、Claude 或系统设置。封装通过 argv 数组调用进程,不使用 shell 拼接。

如果重新获取该二进制:

python3 cli-lab/install_local.py

下载脚本只向当前 Lab 写文件,只从 tar 中提取一个普通可执行文件,校验固定 SHA-256;不执行官方安装脚本,不写 /Applications、shell rc 或 TCC。这个独立文件用于接口研究,封装不会用它直接启动 macOS GUI/MCP 服务。

开始实际控制前的一次性设置

以下是官方 macOS 安装流程,本次没有执行。它会安装 /Applications/CuaDriver.app、建立 ~/.local/bin/cua-driver,必要时修改 shell PATH;要求 macOS 14+。这是从 Terminal 驱动原生 App 的正常依赖,不依赖 Codex Desktop。

/bin/bash -c "$(curl -fsSL https://cua.ai/driver/install.sh)"

open -n -g -a CuaDriver --args serve
cua-driver permissions grant

在 macOS 设置中为 CuaDriver 开启辅助功能与屏幕录制权限,并按系统要求退出重启 helper。不要把权限归属混淆成 Codex Desktop、当前 Terminal 或随机裸二进制。Cua 默认有内容不包含在内的产品遥测;如需关闭可执行 cua-driver telemetry disable。Lab 自己运行的子进程已经通过环境变量关闭遥测。

permissions grant 会主动走系统许可界面并可能做捕获探测,所以本次没有运行。较新主线文档规定 permissions status 是无提示查询且不做直接截图探测;对不同旧版本,应按该版本文档确认行为。

接到 Codex CLI

安装并完成权限设置后:

codex mcp add cua --env CUA_DRIVER_RS_TELEMETRY_ENABLED=0 -- cua-driver mcp
codex

上述 codex mcp add 语法已用本机 --help 核实,但没有执行注册。若新 Terminal 无法找到 cua-driver,将 MCP command 改成 ~/.local/bin/cua-driver 展开后的绝对路径。

也可把 python3 cli-lab/cu.py config codex 输出的 TOML 合并进 Codex 配置。Claude Code 可使用 config claude 输出的标准 stdio MCP JSON。两种方式都将自然语言规划交给既有 CLI agent,Cua 只负责观察/操作工具。

第一次任务建议明确指定 Calculator:读取当前状态,计算 6 × 7 并核对 42。这是建议的后续验证任务,本次未执行。

直接调用工具 / 做自己的 agent loop

正式安装之后,cu.py 优先使用 PATH 中的官方 cua-driver。也可通过全局参数 --driver /absolute/path/to/cua-driver 指定。

# 真正打开 Calculator;这一条是 GUI 操作
python3 cli-lab/cu.py run launch_app '{"bundle_id":"com.apple.calculator"}' --execute

从返回结果拿实际 pidwindow_id,再查询该窗口。下面用占位 ID 展示结构,必须换成刚读到的值:

python3 cli-lab/cu.py plan get_window_state '{"pid":12345,"window_id":67890,"include_screenshot":false}'

get_window_state 默认包含截图和 AX 树include_screenshot:false 可只取树。树本身也可能包含应用内容,所以不要把它当作纯环境检查。点击优先使用新快照返回的 element_token;需要元素索引时同时带最新 snapshot_id。不要硬编码示例里的控件索引或拿旧窗口 ID 重试。

最小闭环:

任务 → 读取工具 schema → 观察指定窗口 → 模型选择动作
     → 执行动作 → 再观察并核对结果 → 完成/停止

本次封装到“执行器”这一层。你可以把 plan / run 的工具参数接自己的模型调用与状态机;config / mcp 则让现成 Codex CLI 承担 agent loop。Windows/Linux 也有 Cua Driver,但本 Lab 固定下载的是 macOS 二进制。

文件

文件 用途
cu.py 原始 Python CLI 封装,无第三方 Python 依赖
install_local.py 项目局部下载、校验、只提取二进制
driver-release.json 固定 tag、发布时间、下载 URL、SHA-256
vendor/cua-driver 已验证的离线检查用二进制,不提交到 Git
../research/cli/ 官方源码快照、schema、smoke 结果与来源

官方来源