ByteNoteByteNote

字节笔记本

2026年9月6日

open-computer-use:Codex Computer Use 的开源替代方案

API中转
¥120

OpenAI 的 Codex Computer Use 演示了一条不太一样的屏幕操作路线:不靠截图和坐标猜测,而是站在操作系统辅助功能(Accessibility)之上,直接读取界面元素树来点击和输入,对正在用电脑的人来说是非侵入式的。开发者 iFurySt 把这条路线做成了开源项目 open-computer-use:一个封装成 MCP 的 Computer Use 服务,任何 AI agent 或 MCP 客户端都能接入,一套代码覆盖 macOS、Linux、Windows。项目目前 1900+ stars,MIT 协议。

项目简介

open-computer-use 的定位很直接:把 Computer Use 做成本地服务,同时提供两种形态。一个是 stdio MCP server,给支持 MCP 的客户端用;另一个是 ocu 命令行,人和脚本可以直接调用同一个工具集。作者在 README 里写明了来由:Codex Computer Use 证明了基于 Accessibility 的非侵入式 CUA 可行,于是决定做个开源版本。

项目用作者自己的 harness-template 模板搭建,接近 100% AI 生成,作者还专门写了一篇博客讲这套 AI 优先的开发方法。macOS 运行时用 Swift 编写,要求 macOS 14.0 以上;Windows 和 Linux 各自使用平台自己的运行时。

核心特性

一套工具面,三个平台通用。 九个核心工具在 macOS、Linux、Windows 上行为一致:list_appsget_app_stateclickperform_secondary_actionscrolldragtype_textpress_keyset_value。agent 换平台不用换操作方式。

基于元素树而非视觉模型。 get_app_state 返回带 element_index 的界面状态,后续动作直接引用元素索引,不用截图猜坐标。长文本、长列表有 text_limitmax_tree_nodes 参数兜底。

多客户端一条命令接入。 Codex(CLI 与 App)、Claude Code、Gemini CLI、OpenCode 都有现成安装命令,也支持手动写 MCP JSON 配置。

doctor 自检。 权限缺失时才打开引导界面,平时不打扰。

序列执行复用状态。 --calls 把多个工具调用放进同一个进程,元素索引映射在操作间复用,成功操作之间默认歇 1 秒,避免手速过快点空。

技术栈

  • macOS 运行时:Swift,基于系统辅助功能 API
  • 分发:npm 全局安装,open-computer-useocu 两个入口
  • 协议:stdio MCP(Model Context Protocol)
  • 测试:make smokemake stress(支持压测循环数)、make agent-smoke 用真实 agent(claude、codex、hermes)跑端到端冒烟
  • 许可:MIT,第三方署名见 THIRD_PARTY_NOTICES.md

安装指南

bash
npm i -g open-computer-use

macOS 需要 14.0 或更高版本。首次运行时系统会要求授权辅助功能(Accessibility)和屏幕录制(Screen Recording),授权一次即可;Windows 和 Linux 不需要这一步。

然后把它装进你的 agent:

bash
# Codex:写入 ~/.codex/config.toml
open-computer-use install-codex-mcp

# Codex App 插件
open-computer-use install-codex-plugin

# Claude Code:写入 ~/.claude.json
open-computer-use install-claude-mcp

# Gemini CLI:当前项目
open-computer-use install-gemini-mcp
# 或写入用户级配置
open-computer-use install-gemini-mcp --scope user

# OpenCode
open-computer-use install-opencode-mcp

任何 MCP 客户端也可以手动配置:

json
{
  "mcpServers": {
    "open-computer-use": {
      "command": "open-computer-use",
      "args": ["mcp"]
    }
  }
}

如果你习惯用 Skill 的方式,也可以不装 MCP,直接装成 agent 技能:

bash
# Codex
npx skills add iFurySt/open-codex-computer-use -g -a codex --skill open-computer-use -y

# Claude Code
npx skills add iFurySt/open-codex-computer-use -g -a claude-code --skill open-computer-use -y

快速开始

先跑一次自检:

bash
open-computer-use doctor

然后看看桌面上有哪些应用:

bash
open-computer-use call list_apps

使用示例

典型的操作流程是先读状态,再用元素索引行动:

bash
# 读取 TextEdit 的界面状态
open-computer-use call get_app_state --args '{"app":"TextEdit"}'

# 点击刚才返回的元素索引 0
open-computer-use call click --args '{"app":"TextEdit","element_index":"0"}'

# 输入文本
open-computer-use call type_text --args '{"app":"TextEdit","text":"Hello from Open Computer Use"}'

多步操作建议放进一个进程,元素索引状态可以复用:

bash
open-computer-use call --calls '[{"tool":"get_app_state","args":{"app":"TextEdit"}},{"tool":"press_key","args":{"app":"TextEdit","key":"Return"}}]'

也可以把序列写成 JSON 文件:

bash
open-computer-use call --calls-file examples/textedit-overlay-seq.json --sleep 0.5

API 参考

MCP 工具共九个:

工具用途
list_apps列出可操作的应用
get_app_state读取界面状态,返回带 element_index 的元素树
click点击元素或坐标
perform_secondary_action右键等次要动作
scroll滚动
drag拖拽
type_text输入文本
press_key按键
set_value直接设置可编辑控件的值

CLI 常用命令:call(单工具调用)、call --calls / --calls-file(序列执行)、doctor(权限自检)、mcp(启动 MCP server)、-h(帮助)。

项目链接

分享: