Claude Code vs Codex:Computer Use 实现原理深度拆解

0 阅读8分钟

一、核心概念澄清

在深入技术细节之前,首先厘清两个容易混淆的事实:

产品底层模型Computer Use 集成方式
Claude CodeClaude Sonnet 3.5/3.7、Claude 4 Opus/Sonnet、Claude 4.6、Opus 4.7直接通过 Anthropic API 的 computer_use 工具集实现
OpenAI CodexGPT-5-Codex、GPT-5.4GPT-5.4 是 OpenAI 第一个原生支持 computer use 的通用模型;早期 CUA(Computer-Using Agent)是 GPT-4o vision + RL 训练的专用浏览器 agent,已演化为通用能力

简单说:Claude 的所有视觉模型都内置了 computer use 能力;而 OpenAI 经历了从「专用 CUA 模型」到「GPT-5.4 通用模型原生支持」的演进。


二、架构全景对比

2.1 整体架构图

┌─────────────────────────────────────────────────────────────────────────┐
│                    Claude Code 架构                                      │
│                                                                         │
│  ┌──────────────┐   tool_use 请求   ┌─────────────┐  截图/动作执行       │
│  │  Claude API   │ ───────────────▶ │  Agent Loop  │ ──────┐            │
│  │  (Messages   │ ◀─────────────── │  (用户端)    │ ◀─────┤            │
│  │   API + Beta) │   tool_result    └─────────────┘       │            │
│  └──────────────┘                                ┌────────┴──────┐      │
│  tools: [computer_20251124, bash, text_editor]   │ Sandbox 环境   │      │
│  Beta Header: "computer-use-2025-01-24"          │ Xvfb + Mutter  │      │
│                                                  │ + Firefox/...  │      │
│  能力来源:模型基础视觉理解 + 工具调用对齐          └────────────────┘      │
└─────────────────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────────────────┐
│                    OpenAI Codex / GPT-5.4 架构                           │
│                                                                         │
│  ┌──────────────┐  computer_call 请求 ┌─────────────┐  截图/动作执行     │
│  │  Responses   │ ─────────────────▶ │  Agent Loop  │ ──────┐           │
│  │  API         │ ◀───────────────── │  (用户端)    │ ◀─────┤           │
│  │              │ computer_call_output└─────────────┘       │           │
│  └──────────────┘                                ┌────────┴──────┐       │
│  tools: [computer_use_preview]                   │ Sandbox 环境   │       │
│  参数: display_width, display_height, environment│ 默认禁网络     │       │
│                                                  │                │       │
│  能力来源:GPT-5.4 原生视觉+推理+RL 训练           └────────────────┘       │
└─────────────────────────────────────────────────────────────────────────┘

2.2 Agent Loop 对比

两者都采用 模型请求动作 → 用户执行 → 返回结果 → 循环 的架构,但 API 协议不同。

Claude(Messages API):

# 用户代码控制完整循环
while True:
    response = client.beta.messages.create(
        model="claude-opus-4-6",
        tools=[...],           # 工具定义在每次请求中
        messages=messages,     # 显式传递完整消息历史
        betas=["computer-use-2025-01-24"],
        thinking={"type": "enabled", "budget_tokens": 2000}
    )
    # 检查 stop_reason == "tool_use"
    # 执行工具 → 构造 tool_result → 追加到 messages

OpenAI(Responses API):

# 可用 previous_response_id 自动链接上下文
response = client.responses.create(
    model="gpt-5.4",
    previous_response_id=prev_id,  # 自动管理 history
    tools=[{...}],
    input=[...current step...]     # 只传本轮输入
)
# 检查 output 中的 computer_call
# 执行动作 → 构造 computer_call_output → 下轮请求

关键差异:

  • Claude 显式传递完整 messages 数组
  • OpenAI 支持 previous_response_id 自动链接上下文,更省 token
  • Claude 用 tool_result 类型返回结果;OpenAI 用 computer_call_output 类型

三、Computer Tool 能力对比

3.1 动作集对比

动作类型Claude (computer_20251124)OpenAI Computer 接口
截图screenshotscreenshot()
左键点击left_click (x, y)click(x, y, button=left)
右键点击right_click (x, y)— ❌
中键点击middle_click (x, y)— ❌
双击double_click (x, y)double_click(x, y)
三击triple_click (x, y)— ❌
鼠标移动mouse_move (x, y)move(x, y)
拖拽left_click_drag (path)drag(path)
滚轮scroll (direction, amount)scroll(x, y, scroll_x, scroll_y)
输入文本type (text)type(text)
按键key (key_name)keypress(keys)
按住按键hold_key (key) + 其他动作— ❌
精确控制left_mouse_down / left_mouse_up— ❌
等待waitwait()
自定义环境display_number (X11)environment (browser/mac/windows/ubuntu)
局部放大enable_zoom ✅— ❌

Claude 优势:动作集更丰富(约 17 种 vs 9 种核心),支持 hold_key(如 Ctrl+点击)、triple_click、鼠标按键精确控制(按下/释放)等细粒度操作。

OpenAI 优势:environment 参数显式告知模型当前环境类型,有助于模型选择正确的 GUI 交互策略。

3.2 工具声明方式

# Claude — tools 数组声明
tools = [{
    "type": "computer_20251124",       # 版本化工具类型
    "name": "computer",
    "display_width_px": 1280,          # 坐标空间声明
    "display_height_px": 720,
    "display_number": 1,
    "enable_zoom": True                # 可选功能开关
}]

# OpenAI — tools 数组声明(Responses API)
tools = [{
    "type": "computer_use_preview",
    "display_width": 1024,             # 坐标空间
    "display_height": 768,
    "environment": "browser"           # 环境类型提示
}]

四、底层模型能力对比

4.1 模型演进路线

时间AnthropicOpenAI
2024-10Claude Sonnet 3.5(新版)首发 computer_use—
2025-01—发布 CUA(GPT-4o + RL 训练),用于 Operator
2025-04Claude Opus 4 / Sonnet 4 发布,computer_20250124—
2025-09—Codex 升级 GPT-5-Codex,CUA 能力下放
2026-03—GPT-5.4 发布,第一个原生支持 computer use 的通用模型
2026-05Claude Sonnet 4.6 / Opus 4.6 发布—
2026-07Claude Opus 4.7 发布,更高分辨率支持—

4.2 视觉输入能力

维度Claude 4.6 FamilyClaude Opus 4.7GPT-5.4
Max 长边1568 px2576 px6000 px (original)
Max 总像素1.15 MP3.75 MP10.24 MP (original)
推荐分辨率1280×7201920×1080—
图片 detailAPI 内部自动缩放API 内部自动缩放low/high/original 可选
坐标空间匹配需要显式声明 display_width_px/height_px同左display_width/height

关键洞察:两边模型内部都会对超分辨率图片进行下采样,但处理方式不同:

  • Claude 是隐式处理:API 内部自动缩放后返回对应坐标
  • GPT-5.4 引入显式 detail level 选择,给开发者更多控制

Claude 官方特别强调:必须在发送前手动将截图缩放到 API 限制内,否则 API 会静默下采样导致「模型看到的图片」和「它返回的坐标空间」不匹配——这是 click 不准的第一大原因。

4.3 基准测试成绩

BenchmarkClaude 4.6Claude Opus 4.7GPT-5.4Human
OSWorld-Verified~48%72.7%75.0%72.4%
WebArena-Verified——67.3%—

⚠️ 注意:这些数字来自不同时间点的官方发布,具体测试设置(最大步数、分辨率)可能有差异,不完全可比。


五、安全机制对比

5.1 Prompt Injection 防护

方面ClaudeOpenAI
检测层模型内置抵抗 + 额外分类器检测截图中的恶意指令API 层三类安全检查
触发方式自动运行分类器 → 引导模型请求用户确认返回 pending_safety_checks → 应用层决定是否确认
检查类型统一的 prompt injection 分类器malicious_instructions(恶意指令)
irrelevant_domain(不相关域名)
sensitive_domain(敏感域名)
用户确认如果检测到,模型会主动请求用户确认下一步pending_safety_checks 必须通过 acknowledged_safety_checks 回传才能继续
可关闭可联系 Anthropic 关闭额外保护—

5.2 沙箱隔离

方面Claude CodeCodex
默认隔离参考实现提供 Docker 容器默认沙箱,网络访问禁用
网络策略建议域名白名单默认禁网,可按需开启
权限控制建议最小权限 VM/容器工作区文件系统限制

六、技术实现细节

6.1 坐标缩放的关键陷阱

两边都需要开发者处理的问题:

截图原始分辨率 (screen_w × screen_h)
        ↓ 下采样
模型看到的图片 (display_w × display_h)
        ↓ 返回坐标
模型输出点击坐标 (click_x, click_y) —— 注意这是 display 坐标系!
        ↓ 缩放回去
实际执行位置 (click_x * screen_w/display_w, click_y * screen_h/display_h)

Claude 官方给出的代码模式:

# 模型返回 display 坐标系的坐标,需要缩放回实际屏幕
scale_x = screen_w / display_w  # display_w 是传给 API 的值
scale_y = screen_h / display_h
actual_x = int(click_x * scale_x)
actual_y = int(click_y * scale_y)

6.2 Claude 的 enable_zoom 机制

Claude 4.6+ 新增 enable_zoom: True 功能:

  • 模型可以自主决定「放大」某个屏幕区域
  • 针对密集 UI 中的小目标(checkbox、系统托盘图标等)特别有效
  • 放大逻辑在模型内部完成,开发者无需额外处理

6.3 OpenAI Responses API 的 previous_response_id

GPT-5.4 引入的对话上下文管理机制:

# 无需手动拼接消息历史
response1 = client.responses.create(model="gpt-5.4", ...)
response2 = client.responses.create(
    model="gpt-5.4",
    previous_response_id=response1.id,  # 自动链接
    input=[...]  # 只传本轮
)

这比 Claude 每次显式传递完整 messages 数组更高效,节省 token。

6.4 Codex 的组合能力

Codex(GPT-5.4)可以同时使用多种工具:

  • bash — 执行 shell 命令
  • computer — 视觉+鼠标键盘
  • file_search — 文件搜索
  • web_search — 网页搜索
  • 自定义 MCP 工具

Claude Code 类似,可以组合 computer + bash + text_editor 三个 beta 工具。


七、开发体验对比

维度ClaudeOpenAI
API 类型Messages API (beta)Responses API
上下文管理手动传递 messagesprevious_response_id 自动链接
工具声明tools 数组 + beta headertools 数组
Beta 状态需要 beta header 标记computer-use-preview 模型专用
参考实现Docker + Python,GitHub 开源Azure OpenAI 提供 Playwright 示例
SDK 支持Python/SDK + CLIPython OpenAI Agents SDK + JS Agents SDK
可组合性computer + bash + text_editorcomputer + Playwright + 任意工具

八、总结:谁更好?

8.1 技术特性对比矩阵

维度Claude (4.6/4.7)GPT-5.4胜出
动作丰富度⭐⭐⭐⭐⭐ (17种)⭐⭐⭐⭐ (9种)Claude
OSWorld 成功率72.7% (Opus 4.7)75.0%GPT-5.4
图片分辨率上限3.75 MP10.24 MPGPT-5.4
enable_zoom 局部放大✅❌Claude
hold_key 等复合操作✅❌Claude
安全检查细化统一分类器三类检查OpenAI
上下文管理效率手动 historyprevious_response_idOpenAI
通用模型原生支持是(但通过 beta 工具)是(原生能力)持平
训练基础基础视觉模型 + 工具调用对齐RL 训练 CUA + 通用视觉风格不同

8.2 选择建议

选 Claude 如果:

  • 需要丰富的鼠标/键盘细粒度控制(hold_key、triple_click 等)
  • 目标 UI 密集、小目标多(enable_zoom 能显著提升)
  • 需要开源参考实现快速上手

选 GPT-5.4 如果:

  • 追求最高 OSWorld 等 benchmark 成绩
  • 需要处理高分辨率原始截图(10.24MP)
  • 希望 API 更标准、上下文管理更高效
  • 已经在使用 Codex 或 OpenAI Agents SDK

两者共同的工程挑战:

  1. 坐标缩放 —— 模型坐标系 vs 实际屏幕坐标系的对齐是 click 准确率的基础
  2. 图片下采样 —— 必须在发送前手动控制,不能依赖 API 自动处理
  3. Agent Loop 终止条件 —— 需要设置最大迭代次数防止无限循环
  4. Prompt injection 防护 —— 两边都有机制,但开发者仍需做好隔离

九、核心结论

两者底层都是「视觉模型理解截图 → 输出鼠标/键盘坐标 → 用户端执行 → 返回新截图」的 Agent Loop 范式,但设计哲学不同:

  • Claude:给模型更多动作选项,让它用丰富词汇表达意图(17 种动作 + enable_zoom)
  • OpenAI:用更好的训练和更高的分辨率让模型看清楚(RL 训练 + 10.24MP 输入)

选择哪一个更多取决于你的具体场景和已有的技术栈。


Sources

  1. Anthropic Computer Use API Docs — docs.anthropic.com/en/docs/age…
  2. Anthropic Best Practices for Computer and Browser Use — claude.com/blog/best-p…
  3. OpenAI Computer-Using Agent 发布 — openai.com/index/compu…
  4. OpenAI Introducing GPT-5.4 — openai.com/index/intro…
  5. OpenAI Agents SDK Computer 接口 — openai.github.io/openai-agen…
  6. Azure OpenAI Computer Use — learn.microsoft.com/en-us/azure…
  7. OpenAI Introducing Upgrades to Codex — openai.com/index/intro…
  8. OSWorld 2.0 Benchmark — arxiv.org/abs/2606.29…