如何看懂界面再动手:Open Computer Use 的 get_app_state、截图与 element_index 使用教程
【免费下载链接】open-codex-computer-use👾 Open Computer Use – Open-Source Alternative to Codex Computer Use项目地址: https://gitcode.com/gh_mirrors/op/open-codex-computer-use
Open Computer Use(open-computer-use)是一个开源的 Computer Use 服务,为 Codex Computer Use 提供开源替代方案:它把屏幕截图、无障碍树(accessibility tree)和元素定位封装成 MCP 工具,让 AI 助手能在 macOS、Linux、Windows 上"看懂界面再动手"。本文带你掌握其中最核心的三件套——get_app_state(获取应用状态)、截图、element_index(元素索引),几行命令就能让 AI 稳定地点击、输入、滚动,而不是靠猜坐标瞎点。
为什么 AI 要先"看"再操作?
传统桌面自动化最大的坑是盲打坐标:屏幕一变,点就点空了。Open Computer Use 的思路和官方 Codex Computer Use 一致——每一步操作前先调用get_app_state,它会一次性返回:
| 返回内容 | 作用 |
|---|---|
| 📸 截图(PNG) | 让 AI"看见"窗口当前长什么样 |
| 🌲 无障碍树 | 以缩进文本列出窗口、按钮、输入框等控件 |
| 🔢 element_index | 每个可交互元素被编号,后续操作直接引用编号 |
这套"先观测、后行动"的模式,正是 SKILL.md 中官方工作流的核心规则:使用element_index前必须先跑一次get_app_state,跨会话或界面大变化后不要复用旧索引。
三步完成安装与权限准备
npm i -g open-computer-use open-computer-use doctor # 检查权限;macOS 需授予"辅助功能"和"屏幕录制" ocu call list_apps # ocu 是同一命令的短别名- macOS 需要 14.0 或更高版本;Windows / Linux 无需额外授权。
doctor会在缺少权限时自动弹出引导界面。- 详细安装说明见 installation.md。
读懂 get_app_state:一份返回里的三层信息
一条命令即可"拍"下某个应用的完整状态:
open-computer-use call get_app_state --args '{"app":"TextEdit"}'以 Finder 为例,真实返回长这样(节选自仓库内实测样本 tool-call-samples-2026-04-17.md):
App=com.apple.finder (pid 1106) Window: "open-codex-computer-use", App: Finder. 0 standard window open-codex-computer-use, Secondary Actions: Raise 1 split group 2 scroll area 3 outline sidebar 4 row (selectable, expanded) Value: Favorites 25 scroll area 26 outline Description: list view, ID: ListView注意几个数字前缀——0、26、4——它们就是element_index。工具定义里get_app_state还支持三个可选参数(见 ToolDefinitions.swift):
text_limit:文本默认截断为 500 字符(结尾会带...)。要看聊天记录、邮件正文等长文本时,传"text_limit": 1000或"max"。max_tree_nodes/max_tree_depth:无障碍树默认渲染 1200 个节点、64 层深度。长网页、大表格"看不全"时调大它们即可,例如{"app":"Google Chrome","max_tree_nodes":3000,"max_tree_depth":96}。
截图本身有体积保护:结果 PNG 会被限制在约 900KB 内、最长边 1280px(见 AccessibilitySnapshot.swift),保证传输给 AI 时不会爆上下文。
element_index 的正确打开方式
拿到状态后,操作工具直接引用元素编号,而不是像素坐标:
# 点击索引为 1 的元素 open-computer-use call click --args '{"app":"TextEdit","element_index":"1"}' # 给可编辑控件直接赋值(比逐字输入更快更稳) open-computer-use call set_value --args '{"app":"TextEdit","element_index":"2","value":"Draft"}'四条黄金习惯(来自 usage.md 的"Choosing Targets"):
- 动作前紧跟一次
get_app_state,索引只在同一次进程会话内有效; - 页面跳转、弹窗出现、操作失败后,重新拍状态;
- 优先用元素动作,坐标点击只作兜底;
- 可编辑控件优先用
set_value,比type_text更可靠。
💡 小提示:click还支持click_method(accessibility/app_post/sky_click/global)来精细控制点击路径,新手保持默认auto即可。
多步任务:让序列复用同一份 element_index
单独调用call时,每次都是新进程,索引不共享。所以 Open Computer Use 提供了序列模式——一个进程内连跑多个工具,天然复用最新的状态:
open-computer-use call --calls '[ {"tool":"get_app_state","args":{"app":"TextEdit"}}, {"tool":"set_value","args":{"app":"TextEdit","element_index":"2","value":"Hello"}}, {"tool":"get_app_state","args":{"app":"TextEdit"}}, {"tool":"click","args":{"app":"TextEdit","element_index":"36"}} ]'仓库里就放了一个现成示例 textedit-overlay-seq.json,演示"set_value → 拍状态 → click → 再拍状态"的节奏:
open-computer-use call --calls-file examples/textedit-overlay-seq.json --sleep 0.5如果接入 MCP 客户端(Codex、Claude Code、Gemini CLI 等),配置只有几行,AI 会自动遵循"先get_app_state再操作"的节奏,配置样例见 usage.md。
常见翻车场景与排查
| 症状 | 可能原因 | 解决办法 |
|---|---|---|
get_app_state找不到应用 | 名字拼错 / 应用未运行 | 先跑ocu call list_apps,用返回的名称或 bundle id |
| 快照是空的 | 窗口被最小化、隐藏,或缺屏幕录制权限 | 把窗口恢复可见;重跑doctor |
文本结尾是... | 触发了 500 字符默认截断 | 传text_limit: 1000或"max"重拍 |
| 点击没反应 | 索引过期 | 重新get_app_state再点 |
完整的排查清单(含 Windows/Linux 会话问题)见 troubleshooting.md。
延伸阅读
- 项目总览与快速开始:README.md
- 工具定义(9 个工具的完整参数说明):ToolDefinitions.swift
- 快照与树预算实现:AccessibilitySnapshot.swift
- 官方工具调用实测样本:tool-call-samples-2026-04-17.md
- 使用与排障参考:usage.md / troubleshooting.md
记住一句话就够了:先拍状态,认准编号,再动手。把get_app_state当成每轮操作前的"读屏",element_index当成元素的"门牌号",AI 的桌面自动化就从"看运气"变成了"稳执行"。
【免费下载链接】open-codex-computer-use👾 Open Computer Use – Open-Source Alternative to Codex Computer Use项目地址: https://gitcode.com/gh_mirrors/op/open-codex-computer-use
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考