AREXOpen in interactive Feed

AREX Feed Article

Cloudflare 宣布 OpenAI Codex 可运行于 Durable Objects:以与本地一致的执行环境常驻云端

November 11, 2026

北京时间 11 月 11 日 14:50,Cloudflare 官方开发者账号 在 X 上发帖:「OpenAI Codex 现已可以运行在 Durable Objects 上,就像它运行在你的笔记本上一样。」Durable Objects 是 Cloudflare 平台上把计算和存储绑在一起的。按这条官宣,OpenAI 的编码 agent Codex 可以不再只跑在开发者的终端里,而是作为一个常驻对象运行在云端,执行环境与本地笔记本一致。帖子没有附博客文章链接,技术细节全部装在一张代码截图里;截至 11 月 12 日凌晨(北京时间),它获得 907 个赞、57 次转发和 42 条回复。

口径上需要区分:这项能力的公开材料目前都出自 Cloudflare 一方,官宣帖、changelog 和文档均为该公司自行发布;只把 Codex CLI 描述为在终端里检查代码、修改代码、运行命令的编码 agent,本文检索到的材料中没有 OpenAI 对这次集成的公告。下文机制部分均以 Cloudflare 官方文档为据。

一句话官宣,一张代码截图

帖子附图是一段 worker.ts 代码:export class Coder extends DurableObject,类里先实例化 Tasks、Streams、Sessions、Workspace 四个能力,再新建一个 CodexHarness,把它们连同模型配置一起挂进去;示例模型通过 AI Gateway 指定为 openai/gpt-6.1-sol,最后由 Lifecycle.install 把这些能力装到对象的生命周期上。这段代码与 Cloudflare 11 月 9 日 里「实验性 Agents SDK 示例」的示例代码逐行对应。

@CloudflareDev 是 Cloudflare 面向开发者的官方支持账号,约 9.1 万关注者,带商业认证。官宣措辞与官方文档同源:Agents 文档对这套方案的描述就是「让 OpenAI Codex 连同它的工具与配置运行在 Cloudflare 上,就像它运行在你的笔记本上一样」。

容器里跑 CLI,对象存记录,凭据留在容器外

配套的 (页面标注最后更新于 11 月 10 日)写明了机制:Codex 运行在一个 Cloudflare Container 里,由 Durable Object 通过 agents/harness/container 包中的 ContainerHarness 驱动。文档把分工归纳为三条:

  • CLI 拥有执行循环。工具、插件、设置和会话格式都归 Codex CLI 自己,与本地一致;
  • Durable Object 拥有记录。会话、操作、转录和 CLI 的会话文件都存进对象自带的 SQLite 数据库;
  • 凭据留在容器之外。CLI 在容器内调用的是占位主机名加占位 key,请求离开容器后,由 Worker 里的 ContainerEgress 入口补上真实凭据。

环境本身不需要 Dockerfile:harness 启动 cloudflare/debian-trixie 镜像,首次使用时装 Codex,然后给文件系统拍快照,之后的启动直接从快照恢复。codex() 预设可以配置模型、传给 codex exec 的 -c key=value 覆盖项、@openai/codex 的版本,以及只在首次启动执行、随后固化进快照的 setup 命令,比如写入 ~/.codex/config.toml 或 AGENTS.md。编程接口上,prompt() 提交任务并等待结果;submit() 存下任务即返回,wait() 稍后在同一个对象上取回结果,operationId 用于去重。

中断之后:三种恢复路径和一组沙箱规则

「常驻」成立与否,取决于中断后能否接续。文档列出三种情况的恢复行为:Durable Object 被驱逐或重新部署时,一个 Lifecycle 任务会重新挂回仍在运行的容器,并补播错过的事件;容器空闲五分钟后,harness 给文件系统拍快照并停机,下一个 prompt 恢复快照、续上 CLI 的会话;容器在一个回合中途死掉时,该回合以状态 unanswered、原因 container_lost 收尾,会话本身保留——如果副作用可以安全重复,还可以传 onContainerLost: "retry" 重跑这一回合。

第一处限制在文件上:容器内的文件从最后一次快照恢复,快照之后做的改动可能丢失,必须存活的文件要放进单独的持久存储。

第二组是沙箱规则:容器就是沙箱,CLI 在其中不带自己的权限提示运行,容器内一切内容都应视为 agent 可读,每个到达 harness 的路由都要加认证;每个 prompt 都可能执行命令并消耗模型额度。

官宣之前,能力分三步铺出来

10 月 30 日,Cloudflare 先让 Durable Objects 默认延迟代码更新:部署后,活动中的对象可以继续跑旧代码最多 300 秒(可配置至 24 小时),给在途工作留出收尾时间;同一条 也把「长时运行的 agent」列为这种对象支撑的场景。

11 月 9 日,changelog 发布与附图同源的:把 Codex 的 Rust 回合处理代码改编成 WebAssembly,在 Durable Object 里跑 agent loop。四个能力各有分工——Tasks 给模型调用和工具执行记账,已完成的步骤重启后直接复用记录结果,被打断的步骤可以重跑;Sessions 保存对话历史并压缩模型上下文;Streams 存下有序事件,重连后可回放;Workspace 提供持久文件的读写。changelog 同时给出示例代码在 cloudflare/agents 仓库中的位置,改编成 WASM 的 Rust 代码就在该示例的 wasm-kernel 里。11 月 10 日 19:30(北京时间),官方 changelog 推号 发帖提示:「在 Cloudflare Workers 上用 Durable Objects 运行 Codex agent loop,agent 现在可以持久化对话和文件,在重启后存活」;同日,Agents 文档的 Codex 指南上线。11 月 11 日,@CloudflareDev 发出了面向开发者的这句官宣。

Durable Objects 并非只面向 agent:官方产品页把它定位为「有状态应用与分布式系统的构件」,用途清单里是协同编辑、聊天、多玩家游戏这类场景,每个对象有全局唯一名字和自带的持久存储。这次官宣则把一个默认长在开发者终端里的 CLI 放进了这种对象。

回复区问出的三件事:订阅登录、计费和休眠

官宣帖的回复区里,出现了三类文档没有展开的问题。用户 tomrford 问能不能用 ChatGPT 订阅登录来跑、会不会有封号风险,Douglance 也追问订阅登录这条路径是否可行。两份文档在这件事上的口径并不重合:Cloudflare 的 harness 指南围绕 OpenAI API key、AI Gateway 的 Unified Billing token 或存储的 provider key 展开;OpenAI 的 Codex CLI 文档则为本地使用提供 Sign in with ChatGPT(以 ChatGPT 账号登录)等登录方式。

中文用户「马哥」(@SuperLucas0755)问的是账:「我更想看长任务的账:agent 一跑几十分钟,按活跃时长计费,比一台常驻的小机器便宜还是贵?」成本方面,Cloudflare 的文档没有给出任何数字,只提醒每个 prompt 都可能执行命令、消耗模型额度。另有用户 somi_ai 问长任务能不能熬过对象的 hibernation(休眠);指南只写了容器侧的空闲快照行为,对象休眠期间长任务如何续接,文档没有正面回答。

截至发稿,这三个问题在帖子和文档里都没有得到回答。

参考链接