OpenAI 把 Computer Use 能力塞进 openai-agents-python 和 openai-cookbook 后,社区已经不再满足于「让它点一下按钮录个 GIF」。本月 HN 上 24,000 stars 的 trycua/cua、OpenAI 自家的 openai-cookbook(74,784 stars,2026-07-21 还在持续更新)、以及 browser-use(105,859 stars,2026-07-20 pushed)的真实使用场景都在做一件事:把视觉模型套进一个可控、可重试、可调度的工程循环里。本文用 5 步带你把这个循环写出来。
一、为什么不能用裸 prompt
直觉上「给模型一张截图 + 一句『点击登录』」就够了。实际上不是。Computer Use 的可靠性瓶颈从来不在模型本身,而在外层循环的设计——没有裁剪的全屏截图、没有截断的动作列表、没有重试策略的循环,会让一个能用 30 次的任务在第 4 次截图后崩溃。
下面这张图展示了一个最小可工作循环:

关键点:截图必须裁剪、动作必须节流、稳定后再截下一帧。否则模型拿到滚动中的页面,坐标立刻漂移。
二、5 步搭建工程循环
Step 1: 环境与依赖
实测可用版本(2026-07-21 GitHub API 实时验证):
- `openai ≥ 1.50`(支持 `responses` API + `computer_use_preview` 工具)
- `playwright ≥ 1.45` 或 `browser-use ≥ 0.7`(任选其一驱动浏览器)
- `pillow ≥ 10.0`(截图裁剪)
- macOS 14+ 或 Ubuntu 22.04(Windows 需要 `pywinauto`,本文不展开)
pip install -U openai playwright pillow
playwright install chromium
Step 2: Prompt 设计
模型看到的 prompt 不是「请登录」——是结构化的:
You are controlling a Mac desktop. The current screen is attached as
{image}. Return a JSON action list. Allowed actions:
- {"action": "click", "x": 120, "y": 340}
- {"action": "type", "text": "user@example.com"}
- {"action": "scroll", "dx": 0, "dy": -300}
- {"action": "key", "key": "Return"}
- {"action": "done", "reason": "logged in"}
Never invent coordinates outside the visible area. Always crop
your mental viewport to the {viewport_w}x{viewport_h} size.
viewport_w/viewport_h 必须在 prompt 里写死,否则模型会给 iPhone 尺寸的坐标。
Step 3: 循环控制
核心循环(用 openai-agents-python 28,065 stars 项目支持的 Runner 模式简化):
for step in range(MAX_STEPS):
img = capture_and_crop(window_box) # 裁剪到目标窗口
actions = ask_model(img, history)
for act in actions:
run_on_mac(act) # PyAutoGUI 或 AppleScript
if any(a.get("action") == "done" for a in actions):
break
time.sleep(0.8) # 等页面稳定
Step 4: 截图裁剪
不做裁剪的循环,每次送进模型的图片是 4K 全屏,token 成本直接翻 3 倍。代码片段:
from PIL import Image
img = Image.open(full_screen)
crop = img.crop(window_box) # window_box 是 (x, y, x+w, y+h)
crop.save("state.png", optimize=True)
裁剪后模型看到的画面就是「目标窗口内部」,坐标预测误差显著下降。
Step 5: 重试与降级
模型不是 oracle。trycua/cua 的 Container 抽象里专门处理三类失败:
| 失败模式 | 处理 |
|---------|------|
| 模型返回坐标越界 | 重新截图,prompt 强化 viewport 边界 |
| 动作执行后页面没变化 | 等 1.5s 二次截图,让模型自纠 |
| done 但实际未完成 | 设 verify=True,用后置断言(如 URL 匹配)二次确认 |
下面是 macOS 上整个 pipeline 的时序:

三、关键点
- 裁剪截图比调 prompt 性价比高:viewport 写死 + 裁剪到目标窗口,坐标误差立刻降一档。
- 节流比加速更重要:800ms 等待比任何「fast path」都稳,滚动和 SPA 路由尤其需要。
- 重试逻辑必须有上限:超过 15 步仍未 `done` 应该熔断,否则一次失败任务会烧掉几美元 token。
- Mac 上用 PyAutoGUI,Linux 用 `xdotool`,Windows 用 `pywinauto` —— 别试图抽象一层统一接口,3 平台输入栈差异巨大。
四、行业影响
browser-use、stagehand、cua 三个项目本月都在刷新高 star 上限,说明「视觉模型 + 系统控制」已经从科研样机阶段进入工程工具阶段。下一波迭代大概率集中在更小尺寸的专用 CUA 模型(Holo1.5 已经迈出第一步)和沙箱安全(AI ClickFix 那种 prompt injection 攻击是真实威胁)。
五、结语
Computer Use 真正的难点不在 prompt,而在把它放进一个能「稳定、可观测、可恢复」的工程循环里。先把 5 步循环跑通,再考虑多步任务编排——这是 2026 年写桌面自动化的正确打开方式。
参考资料
官方文档
- OpenAI Cookbook: Computer Use API [200] - 2026-07-21 直连可达
- arXiv: CUARewardBench [200] - 2025-10-21,评估 CUA 的 reward model
- arXiv: RiOSWorld [200] - 2025-05-31,多模态 CUA 风险基准
- arXiv: Reliability of Computer Use Agents [200] - 2026-04-20
- arXiv: CUA-Skill [200] - 2026-01-28
开源项目
- openai/openai-cookbook [200] - 74,784 stars,2026-07-21 pushed
- openai/openai-agents-python [200] - 28,065 stars,2026-07-21 pushed
- browser-use/browser-use [200] - 105,859 stars,2026-07-20 pushed
- trycua/cua [200] - 20,421 stars,2026-07-21 pushed
- browserbase/stagehand [200] - 23,581 stars,2026-07-21 pushed
- aditya-nadkarni/spongecake [200] - 180 stars,2025-04-25
行业报道
- 量子位 首页 [200] - 国内 AI 行业聚合
- HN: Cua YC X25 Launch [200] - 172 points / 73 comments
社区讨论
- HN: AI ClickFix - Hijacking CUA [200] - 安全讨论
- HN: Holo1.5 Foundational Models for CUA [200] - 模型趋势
对比基准
- arXiv: CUARewardBench [200] - reward model 评估基准
本文由 AI 生成。内容基于公开资料整理,可能存在事实偏差,引用链接请以原始来源为准。
