深入分析 OpenAI Astra 模型如何实现高效的计算机使用,并梳理视觉驱动与混合 AI 计算机控制方法的发展历程。
AI translation, not an official translation. Refer to the original for technical details.
Adapted from @kylejeong# Astra 的计算机使用功能究竟是如何运作的? 上周,OpenAI 发布了 GPT‑6 Astra,这是他们迄今为止最智能的模型。尽管它在智能体编程和对齐基准测试中表现出色,他们还是选择重点展示一项特定能力:计算机使用。 模型发布视频是"Put That There"的延伸——这是 1979 年的一段影像,主角是 MIT 建筑机器小组(后来成为 MIT 媒体实验室)的 Chris Schmandt 和 Eric Hulteen。视频中,他们指示计算机,正如你所猜到的,"把那个放到那里",并在投影屏幕上摆放图形。撰文时,该帖子已获得 1.31 亿次浏览(令人难以置信)。(https://www.youtube.com/watch?v=RyBEUyEtxQo) (https://x.com/OpenAI/status/2095595741528125780) 关于计算机能够自主操控自身的构想由来已久。但 Astra 究竟为何如此擅长这项任务? 本文旨在准确地向你讲解 Astra 是如何如此有效地使用你的计算机的。我叫 Kyle,就职于 Browserbase,过去三年我们一直致力于将计算机使用功能部署到生产环境中。 计算机使用究竟是什么?我将其定义为 AI 自主控制基于计算机的系统的能力。 这可能通过多种模态实现(图像、视频、文本),在过去三年里,我们已经多次调整了实现方式。 ## 计算机使用简史 九个月前我已经简要写过这个话题,但自那以后发生了许多变化。(https://kylejeong.com/blog/what-is-computer-use) 2024 年 10 月,Anthropic 随 Claude 3.5 Sonnet 一同发布了计算机使用功能。他们采用的是纯视觉计算机使用方案,即模型通过截图来判断如何与计算机屏幕进行交互。该模型基于像素进行后训练,并以 JSON 格式返回像素坐标与操作指令,例如: 这些指令随后通过 Stagehand 或 Playwright 等驱动程序转换为浏览器或计算机交互操作。(https://www.stagehand.dev/) (https://playwright.dev/python/) 继 3.5 Sonnet 之后,其他实验室也开始发布类似的计算机使用模型,同样采用视觉方案,训练模型识别屏幕上的像素。OpenAI 发布了 Operator 和 computer-use-preview,Google DeepMind 为 Gemini 2.5 Pro 添加了计算机使用功能(我们实际上参与了评测工作)。(https://www.browserbase.com/blog/evaluating-browser-agents) 但这些模型并不完美。由于它们是基于像素进行后训练的,各实验室必须选定特定的视口尺寸(如 1288 x 711),并在整个训练过程中保持不变。当你在不同的窗口尺寸下使用这些模型时,它们会完全失效,开始错过按钮,变得毫无用处。 另一个显而易见的局限是,这些模型仅采用纯视觉方案与应用程序交互,而某些复杂的交互是"仅凭眼睛"无法感知的。 纯文本方案以及 DOM + 视觉混合智能体也经历了大量实验。一个有趣的计算机使用实验是 Standard Intelligence 推出的 FDM-1,它通过编码视频(而非静态截图)来实现计算机使用。(https://docs.stagehand.dev/v3/basics/agent) (https://si.inc/posts/fdm1/) ## Astra 有何不同? 要理解 Astra 的与众不同之处,我们需要回溯到 5.6 模型系列,并谈谈 Codex/ChatGPT 执行框架。计算机使用既是一个执行框架(工程)问题,也是一个模型(研究)问题——模型负责决策,执行框架负责执行。要构建出色的计算机使用功能,两者都需要解决。 电脑操控(Computer-use)已经"很酷"有一段时间了,但尚未被证明可以投入生产环境(主要是因为我们之前讨论过的不稳定性)。当 OpenAI 在 Codex 应用中发布电脑操控功能后,许多开发者开始每天使用它,并逐渐意识到它有多强大。 你可以把任何任务委托给 Codex,它会打开应用内置浏览器,或直接控制你的浏览器来完成你交代的任何任务。它甚至可以在后台执行任务,让你同时继续用浏览器做其他事情。 Codex 中的电脑操控不再缓慢、不再不准确,用起来实际上感觉相当顺畅。它比 Atlas(OpenAI 搭载原生 CUA 的浏览器)快得多,而且通过编写和执行代码,能做到更多事情(生成图表、调用其他工具等)。(https://openai.com/index/introducing-chatgpt-atlas/) Astra 在 5.6 能力的基础上,让一切变得更快、更便宜(至少在最大思考模式下是如此)。 要理解其中的原理,你需要先了解计算机的基本结构。如今,大多数计算机提供的是 GUI(图形用户界面),也就是你我都能看见的界面。我们看着屏幕上的像素,决定点击什么(这和旧版模型的方式类似)。但如果你实际上是盲人呢? 对于视力或听力受损的用户,Chrome 上的每一个网站以及大多数计算机,都提供某种形式的"无障碍模式"——它将屏幕上的所有内容映射到一棵无障碍树(即 a11y tree)上。这会强制应用暴露 UI 元素的语义信息,并使它们变得可交互。 下面是 a11y tree 在浏览器中的样子: 模型读取起来要容易得多,因为它去掉了所有定义视觉层的代码(对于网页来说,主要是 CSS 和类名)。 a11y tree 比截图占用更少的 token,同时提供相同甚至更好的屏幕上下文。Astra 正是利用这棵树来分发电脑操控动作(点击、输入、按键)。Chrome 上的每一个网站都会自动生成 a11y tree,这意味着它们全部都与 Astra 开箱即用兼容。(https://www.maxdesign.com.au/articles/axtree.html) ## 架构 其实相当简单。 当一个电脑操控会话开始时,Codex 会启动一个用于管理会话状态的 Node REPL,并绑定浏览器或原生电脑操控接口。智能体根据任务选择使用哪种绑定方式。 无论是原生应用还是浏览器,智能体都会通过文本、截图,或两者结合的方式观察页面,以获得最准确的状态表示。然后,它通过代码选择下一步动作。没错,电脑操控现在就是代码模式。OpenAI 的 API 文档甚至建议在所有电脑操控场景中使用代码执行。(https://x.com/kylejeong/status/2079995779700363502) (https://developers.openai.com/api/docs/guides/tools-computer-use) 示例输出如下所示: 本地服务(名为 CodexComputerUseIPC-5)执行该动作。执行包装器将元素选择转换为原生元素 ID(或在模型选择时转换为坐标),然后使用带有 JSON-RPC 消息和请求 ID 的原生管道传输来解析并完成操作。 在实践中,OpenAI 推荐使用 Playwright 和 PyAutoGUI 分别作为控制浏览器和计算机的框架。(https://github.com/openai/openai-cua-sample-app) 然后 Astra 会检查自己的工作。请求被成功送达,并不意味着该动作真正生效了。模型会请求再次观察,以将当前状态与预期状态进行对比验证。 之后循环继续,直到你的任务完成。由于电脑操控本质上是有状态的,Node REPL 必须在整个会话期间持续存在。 在上表中,Astra 是唯一需要自动审查的模型。但这并不是你所想的那样。Astra 采用了一套守护者策略(Guardian Policy),在允许执行计算机操作建议之前,会对其进行安全审查。(https://github.com/openai/codex/blob/a51da75131d389c20f63e60fe408670000743fbf/codex-rs/protocol/src/openai_models/guardian.rs) Guardian 使用 GPT 5.6 Luna 作为后台分类器,对当前工作流程及潜在的即将到来的风险进行评估,然后返回"高"或"低"。分类结果为"高"将触发对后续操作的阻断审查。随后,该操作会经过一个阻断审查器,对提议的操作进行全面评估。(https://github.com/openai/codex/blob/a51da75131d389c20f63e60fe408670000743fbf/codex-rs/ext/guardian-v2/src/async_scorer/sampler.rs#L53) 该策略会收到以下信息:关于提议操作及其参数的上下文、对话证据(包括用户授权)、父环境与权限上下文、可用的 REPL 证据和图像,以及审批请求及其原因。(来源)从技术上讲,它不保证能看到完整的无障碍树(a11y tree),但并非每次都需要完整的树才能进行准确分类。(https://github.com/openai/codex/blob/a51da75131d389c20f63e60fe408670000743fbf/codex-rs/ext/guardian-v2/src/sync_reviewer/prompt.rs#L136) 如果你一直在使用 Codex 进行任务委派,可能已经遇到过以下这些常见的 Guardian 拦截情况: - 权限授予:针对该权限及接收方的具体授权 - 登录及重要账户操作:用户是否明确授权 - 敏感数据提交:对数据本身及目标地址的权限 - 重要点击操作:实际界面状态与效果;表单输入/设置是否有误;是否符合用户指令 - 限制绕过:替代路径是否已获授权 - 破坏性操作:是否存在有意义的状态丢失或不可逆损害 - 超出范围的私有数据访问:该访问是否属于已授权任务的范围 在对齐基准测试中,Astra 的得分显著优于其前代模型。 ## I am speed 好,那么如果它做的事情和 GPT 5.6 完全一样,却还多了一道审查,它怎么会更快呢? 简短回答:它更聪明,所以完成任务需要的轮次更少。 Astra 在 10 万个 GB300 上进行了后训练,因此消耗了大量算力。但该模型更加智能,并在计算机使用环境中经过了大量强化学习。更聪明 → 完成任务所需轮次更少 → 速度更快。在这种情况下,推理速度并不是你在计算机使用能力上能立即感受到的瓶颈;当速度超过 300+ TPS 时,瓶颈将转移到操作执行速度上。(https://x.com/JensenHuang/status/2096700264569090384) 此外还有一些 harness 层面的优化,比如 WebSocket 预热、连接复用,以及使用 previous_response_id 的增量请求,但这些优化与操作速度无关,只影响工具启动时间。(https://github.com/openai/codex/blob/a51da75131d389c20f63e60fe408670000743fbf/codex-rs/core/src/client.rs#L1966) (https://github.com/openai/codex/blob/a51da75131d389c20f63e60fe408670000743fbf/codex-rs/core/src/client.rs#L1486) (https://github.com/openai/codex/blob/a51da75131d389c20f63e60fe408670000743fbf/codex-rs/core/src/client.rs#L1336) ## 当前的失败模式 它非常出色,但并非完美。Astra 可能会出现观测失败的情况,接收到不完整的无障碍树状态,或者截图细节不足,或者获取到的是过时视图。此外,在观测与执行操作之间,状态也可能发生漂移。在某些应用中,无障碍树可能变化非常频繁,从而导致操作失败。 长时程计算机使用仍然是一个相对未解决的问题。由于压缩效果非常好,你可以长时间以高保真度运行 Astra,但我们尚未看到计算机使用在连续运行数天乃至数周后的表现。 ## 计算机使用的前沿 计算机使用才刚刚开始变得厉害。我们见证了它从在琐碎任务上频繁失败,到在《我的世界》中比一个 10 岁的孩子更快拿到钻石。人们终于意识到,他们可以将多少事情交给 AI 去完成。(https://x.com/wuyang_zhou/status/2096548032128942370) 一旦模型从视觉截图转向使用无障碍树(a11y tree),性能就大幅提升了。更多算力意味着更好的模型和更低的价格,随着我们持续突破后训练的边界,模型在各实验室选择专项训练的领域特定任务上将持续进化。 Astra 将速度与准确性相结合,配备强大的安全护栏,确保你的智能体不会被劫持。每一次计算机使用模型的迭代,都让我们更接近生产就绪的计算机使用能力。 软件的未来是 AI 代表你完成工作,让你专注于真正需要人类大脑的问题。如果你想将计算机使用部署到生产环境,欢迎随时联系我! → Kyle 如果这些内容对你有所帮助或令你感到有趣,非常感谢你的关注和转发。我的私信随时开放,欢迎提问或反馈。 来源: - The Codex Repo(https://github.com/openai/codex) - Astra Launch Blog(https://openai.com/index/gpt-6-astra/) - ChatGPT 应用源代码: