OpenAI 将 Codex 的底层核心框架 Agent Harness 开源:你可以轻松将 Agent 接入自己的业务系统
OpenAI 把管理上下文、工具调用、沙箱和审批的 Codex 执行底座开放出来。开发者不用从零造 Agent 框架,就能让 Codex 进入现有的看板、工单和业务后台。
- Codex 不再只能待在编程插件或聊天框里;它的 Agent 能力可以接进物流后台、工单、报税和监控系统。
- 用户继续在原来的系统里工作:系统把当前对象和业务状态交给 Codex,重要操作按规则等待人工批准,结果再写回正式记录。
- 开发团队不用从零搭建上下文记忆、工具调用、沙箱、进度和审批机制,可以直接复用 Codex 已有的开源组件。
- 开源的是 CLI、SDK、app-server 等执行底座;模型、托管服务、IDE Extension 和 Codex cloud 没有一起开源。
OpenAI 这次到底开源了什么
OpenAI 开源了让 Codex 能连续干活的底层框架:Agent Harness。
可以把大模型想成一个聪明的大脑。大脑会思考,却不会自动知道自己正在处理哪张工单,也不会天然记住上一步做到哪里,更不知道该去哪个系统查数据、哪些操作可以直接执行、花钱或改记录前要找谁批准。要让它真正进公司上班,还得配上工作记录、工具箱、门禁和请示流程。Agent Harness 就是这套“上岗系统”。
这次开放带来三件很实际的事:
- 对开发者:少造一层基础设施。 上下文记忆、工具调用、沙箱、进度和审批机制,都可以复用 Codex 已有的开源组件。
- 对产品:AI 可以进入现有软件。 物流后台、工单系统、报税软件和监控看板都可以成为 Codex 的工作界面。
- 对用户:不用把工作重新搬进聊天框。 原系统提供当前对象和业务状态,结果仍回到原来的正式记录。
放进物流后台,它可以是这样:调度员选中一票延误货物,Codex 直接拿到当前状态并调查原因;遇到花钱改订等有后果的动作,系统按规则停下来等人批准。
不过,先把边界说清楚:OpenAI 没有把整个 Codex、模型和云服务全部开源。明确开放的是 Codex CLI、SDK、app-server 等 Harness 与接入组件;模型访问、托管服务、IDE Extension 和 Codex cloud 仍是独立部分。准确地说,开发者拿到的是 Codex 的 Agent 执行底座和接入层,不是整套 Codex 的自托管版本。
为什么光有模型,还做不成真正的 Agent
一次普通的大模型调用很简单:输入问题,等待回答。可一旦任务从“回答”变成“完成”,缺失的东西会迅速暴露出来。
模型要知道自己正在处理哪个对象;要记得此前做过什么;要读取文件、日志或业务记录;要调用外部工具;要在失败后换一条路线;还要区分哪些动作可以自动执行,哪些动作必须停下来等人批准。任务持续几十分钟甚至跨越多轮时,它还得压缩旧上下文,又不能把早期的重要判断一起忘掉。
Agent Harness 就是负责记住进度、调度工具、限制权限并继续推进任务的执行系统。
Agent 的能力来自一条不断维护状态的运行循环
业务对象、历史状态、规则和成功条件进入任务。
保留此前推理,并在长任务中压缩旧上下文。
读取文件和系统,执行允许范围内的操作。
将工具结果写回任务状态,失败时换路线。
Harness 为什么重要,最直接的问题是:同一个模型换一套运行方式,结果会差多少?OpenAI 给出了一个很有分量、但也很容易被滥用的数字。
在 ARC-AGI-3 这套公共任务集里,Agent 要在陌生的交互环境中持续观察、试错并找出规则,因此能否保住此前的判断和行动历史尤其重要。GPT-5.6 Sol 使用 ARC-AGI-3 官方的通用 Harness 时,RHAE(相对人类行动效率)为 13.3%;改为保留此前形成的 reasoning(推理状态),并用 compaction(把旧上下文压成仍可继续使用的摘要)代替简单丢弃最旧内容后,RHAE 升到 38.3%,输出 Token 数降至原来的约六分之一。
背后的机制并不神秘。丢弃 reasoning,相当于让 Agent 每执行一步都重新理解游戏;滚动截断则会让更早的观察和动作逐渐消失。保留推理让计划能够延续,压缩上下文则让 Agent 在长任务中保住关键认识,而不是简单忘掉最旧的内容。
但这个结果只属于特定模型、特定公共任务集和特定评测指标,不能写成“接入 Codex 后所有 Agent 都会提升三倍”。它说明:模型周围的运行架构,也会影响模型最终能发挥出多少能力。
关于 13.3%→38.3% 的完整实验,我们另有一篇拆解:
接进业务系统后,三层分别管什么
知道 Harness 是一套“上岗系统”以后,下一个问题就很实际:把 Codex 接进产品后,宿主应用、Codex app-server 和 MCP 分别负责什么?
这套架构把责任清楚地切成三层,各管一块。
业务留在应用里,Agent 循环交给 Codex,可信读写由 MCP 接回
当前对象 · 页面状态 · 业务规则 · 人工批准
线程与轮次 · 推理循环 · 沙箱 · 流式事件
可信数据 · 查询工具 · 业务动作 · 权限边界
第一层是宿主应用,也就是你原本的物流后台、工单系统或报税软件。用户选择了哪条告警、哪张工单或哪笔订单,当前页面展示了什么状态,业务允许做什么,哪一步需要人类同意,都由它定义。
第二层是 Codex app-server。它接过这些上下文,保存任务进度,驱动 Agent 持续调用工具,并把执行限制在沙箱和审批规则内。产品也能看到过程、随时中断并回应审批请求。
第三层是应用自有的 MCP 服务,可以把它理解成一组专门给 Agent 使用的业务接口。MCP 不是业务数据库本身;Agent 通过它读取权威记录,也可以请求改订、建单、更新状态等业务动作。只有满足宿主应用的规则和审批条件后,动作才真正发生。
完成后的变化还要回到原来的产品界面。Agent 的结论进入正式业务系统,由原系统继续充当最终记录和控制中心。
这套分工解决了 Agent 产品里最容易混在一起的三件事:
- Codex 负责把任务推进下去;
- MCP 负责把可信数据和受控动作交给 Codex;
- 宿主应用负责告诉两者什么重要、什么允许,以及最终结果应该落在哪里。
从一次性任务到产品功能,三种接法怎么选
大多数任务用不到 app-server。三种接法可以先用一句话记住:脚本或后台任务用 codex exec,业务代码里调用用 SDK,把 Agent 做成产品功能则用 app-server。
产品需要介入得越深,接入层就越靠近 Agent runtime
codex exec
- 生命周期
- 单次进程
- 产品控制面
- 输入、权限、最终或结构化输出
- 典型场景
- CI、定时任务、后台批处理
Codex SDK
- 生命周期
- 开始、继续、恢复
- 产品控制面
- 业务代码管理任务和流式结果
- 典型场景
- 服务端工作流、内部工具、应用逻辑
app-server
- 生命周期
- 持久线程与多轮会话
- 产品控制面
- 事件、中断、审批与自定义界面
- 典型场景
- 把 Agent 做成原生产品功能
codex exec 适合边界清楚的一次性任务,例如在自动化检查流程里审查代码、定时整理记录,或者在后台批量处理一组输入。它既能返回最终文本,也能输出可供程序继续处理的事件或结构化结果。任务启动、运行、结束,生命周期相对简单。
Codex SDK 适合由业务代码直接启动和管理 Codex 任务。应用可以开始新任务,也能继续或恢复过去的工作;产品团队不必自己处理 app-server 的底层协议。
Codex app-server 适合把 Agent 直接做成产品功能。应用可以长期保留任务,看到执行过程,随时中断,临时提供工具,并在 Codex 请求时处理审批。
不要把这三种方式理解成“低配、中配、高配”。选择时只看三个问题:任务是否需要持续状态,产品是否需要观察和干预执行过程,Agent 是否要在用户当前界面里完成有后果的业务动作。
如果只是一次后台分析,直接上 app-server 只会增加集成成本;如果 Agent 要长期存在于运营台里,只靠一条 codex exec 命令又很难承载会话、审批和界面同步。
选择哪一层只是实现问题。更大的产品问题是:这些能力最终应该被放进什么界面?答案未必是再造一个聊天框。
接入 Agent,不等于再加一个聊天框
产品团队接下来要决定的是:AI 应该放在哪里?OpenAI 的答案是,把 Agent 放进工作本来发生的地方,不要给所有软件统一加一个聊天框。
一个脱离业务系统、拿不到当前上下文的通用聊天框,会把整理现场的麻烦全留给用户:请你先把正在处理的订单、页面状态、业务规则和操作目的重新翻译成一段 Prompt。
用户要重新说明自己正在看哪条记录,把看板上的状态复制给模型,再判断模型建议是否基于最新数据。模型给出方案后,用户还要切回业务系统执行。上下文、分析和动作被分散在两个地方,重要边界也很容易在复制粘贴中丢失。
把同一项工作并排来看,差别不在模型会不会回答,而在上下文由谁整理、业务边界从哪里获得,以及结果最终落在哪里。
差别不在模型会不会回答,而在谁负责把业务现场交给模型
所以,仪表盘、工单页、报税表格和安全事件队列不会因为 AI 到来就失去价值。它们早已把干活需要的对象、状态、证据和按钮摆在一起。Agent 更合理的位置,是进入这些界面直接使用已有上下文,省掉用户从空白输入框重新描述现场的过程。
聊天当然不会消失。开放探索、模糊问题和临时分析仍然适合对话。应该放弃的,是把通用聊天框当成所有 Agent 产品的唯一形态。
Relay 演示:AI 怎样在物流后台把事情做完
Relay 使用虚构种子数据,不是真实客户系统;它把前面的三层分工和接入方式,落成了一笔完整的物流操作。
读、判断、申请、执行、回写,全都发生在原工作流里
调度员先选中真实工作对象。
路线、承诺时间、货值和异常一起进入任务。
Codex 获取可信的运营状态。
分析可以自动推进。
重新订舱、改记录或产生费用时停下。
只执行被明确允许的变更。
结果重新进入系统记录和界面。
调度员不是从零写一句“帮我分析物流延误”。他先在异常队列中选择一票货物,再点击“调查延误”或“比较补救方案”。这个点击本身已经交付了业务对象和用户意图,页面则继续提供路线、承诺时间、货值和当前异常等可见上下文。
Codex 随后通过 Relay 的 MCP 工具读取当前运营记录,判断问题发生在哪里,并比较可用方案。分析可以自动进行;但如果下一步是重新订舱、改变业务记录或产生费用,系统就会停下来要求调度员批准。动作获批并执行后,变化重新进入物流记录,业务视图随之刷新。
整个闭环可以压缩成七步:
选择对象 → 注入上下文 → 查询权威数据 → 调查与比较 → 人工批准 → 执行业务动作 → 刷新正式记录
它比“给聊天框接几个工具”多出来的部分,正是产品设计:什么时候自动交付上下文,哪些工具可用,哪种动作有后果,以及人应该在哪里重新接管决定。
类似模式已经进入不同领域。GitHub 与 JetBrains把 Codex 放进现有 IDE 工作流;Cisco在 Cloud Control 的 App Builder 中使用 Codex SDK;Thrive Holdings、Crete 与 OpenAI 则把 Codex 接进报税准备和从业者反馈闭环。
Thrive Holdings、Crete 与 OpenAI 的报税准备试点处理了 7,000 份税表,合作方自报将准备时间缩短了约三分之一。这个数字不是独立第三方评测,但它展示了工作流嵌入的第二层价值:Agent 不只完成一次任务,还能读取生产记录、吸收专家纠正、形成评测任务,再推动下一轮产品改进。
最后说清楚:哪些开源了,哪些没有
还有一个容易被误解的边界:Harness 可以嵌入产品,不等于整套 Codex 都能自由自托管。官方开放的边界没有这么宽。
| 已明确开源 | 没有随 Harness 一起开源 |
|---|---|
| Codex CLI | 模型本身与模型访问 |
| Codex SDK | OpenAI 托管服务 |
| Codex app-server | Codex IDE Extension |
openai/codex 仓库,Apache-2.0 许可 |
Codex cloud |
开发者拿到的是一套可以查看、修改并接进产品的 Agent 执行底座,以及从一次性任务到深度产品集成的不同入口;并没有因此拿到模型和云端服务的开源实现。
更重要的是,Harness 也不会替产品团队生成业务世界。哪张记录是权威数据,哪些工具可以调用,什么动作必须审批,怎样把结果写回系统,这些仍然必须由宿主应用定义。
所以,OpenAI 帮开发者省掉了搭建 Agent 执行底座 的大量工作;业务产品仍要由团队自己做好。差距最终来自对业务的理解,以及能否把数据、工具、权限和人工判断接成一条可靠流程,让 AI 真正在现有系统里把活干完。
延伸阅读:Harness 工程的十二条实践原则。
继续阅读Harness 工程十二条心法:Google 首席工程师一年实践,浓缩成可直接照做的流程和模板核心操作反直觉:选定的模型和 Agent 锁死不动,一个参数都不调,只改它周围的上下文和工具。
Codex 开源的不是聊天框,而是 AI 的上岗系统
OpenAI 开放了 Codex 的 Agent Harness 与接入组件。开发者可以把记忆、工具、沙箱和审批接进现有业务界面,但业务数据、权限与最终责任仍由自己的产品掌握。
先看清边界:拿到的是执行底座,不是整套 Codex
明确开源Codex CLI、SDK、app-server,以及 openai/codex 仓库。
仍然独立模型与模型访问、OpenAI 托管服务、IDE Extension 和 Codex cloud。
开发者可以复用和改造 Harness 接入层,但没有因此获得模型与云端服务的开源实现。
模型是大脑;Harness 补上工作记录、工具箱、门禁和请示
记住保存任务进度,压缩旧上下文但保住关键判断。
行动调用工具,在沙箱里观察结果、失败重试并继续。
刹车有后果的写操作停下来,等人审批后再推进。
在特定 ARC-AGI-3 实验中,保留推理状态并使用上下文压缩,使 RHAE 从 13.3% 升至 38.3%,输出 Token 降至约六分之一;这不是所有 Agent 的通用三倍提升。
三层各管一件事,最后仍回到原来的业务记录
宿主应用提供当前对象、界面状态、业务规则、审批边界与结果落点。
Codex app-server保存进度、驱动 Agent、流式返回过程并处理暂停与审批。
应用自有 MCP向 Agent 提供权威数据和受控的业务动作,不等于数据库本身。
Codex 把任务推进下去,MCP 交付可信数据与动作,宿主应用掌握什么重要、什么允许,以及结果写回哪里。
别按高低配选,按状态、干预和动作后果来选
codex exec边界清楚的一次性脚本、自动化检查和后台批处理。
Codex SDK由业务代码启动、继续或恢复 Codex 任务。
app-server把 Agent 做成可观察、可中断、可审批的原生产品功能。
只做一次后台分析时,app-server 可能增加不必要的集成成本;需要长期状态与人机协同时,一条 exec 命令又不够。
真正省事的不是聊天更聪明,而是不用重新描述工作现场
通用聊天框复制对象与状态 → 重写 Prompt → 判断信息是否最新 → 切回系统执行。
原生业务界面当前对象、可见状态、业务规则和操作边界直接交给 Agent,结果写回正式记录。
聊天仍适合开放探索和模糊问题;该放弃的是把通用聊天框当成所有 Agent 产品的唯一形态。
Relay:自动调查和比较,花钱改记录前必须等人点头
1—31—3 · 交付现场选择货物 → 注入页面上下文 → 通过 MCP 查询权威数据。
4—54—5 · 人机接力Codex 调查并比较方案 → 有后果的动作请求人工批准。
6—76—7 · 完成闭环获批后执行业务动作 → 更新正式记录并刷新业务界面。
OpenAI 省掉的是记忆、工具调度、沙箱和审批等通用底座;权威数据、可用工具、权限规则和最终责任,仍必须由宿主产品定义。
把 Codex 从聊天框搬进业务现场
问题不在模型不会回答,而在上下文、分析和动作被拆在两个地方。
特定 ARC-AGI-3 实验说明运行架构会影响结果,但不能外推为所有 Agent 都提升三倍。
宿主应用对象、规则和批准边界归我。
MCP我只交付可信数据和受控动作。
Codex 推进任务;MCP 连接数据和动作;宿主应用掌握业务规则与最终记录。
一次性任务用 exec,业务代码管理用 SDK,深度产品集成才需要 app-server。
点击本身已经交付了业务对象和意图,页面继续提供最新可见状态。
Codex 工作车方案已比较;改订会产生后果,请批准。
调度员证据看过了,批准。
分析可以自动进行;花钱、改记录等写操作按宿主规则停下来等人接管。
Harness 是现成的 AI 上岗骨架;数据、工具、权限和业务责任仍要由你的产品接好。
