引言
2026年6月3日,OpenAI 正式将 Codex Agent 向 ChatGPT Plus 用户全面开放。这不只是"ChatGPT 能写代码了"这么简单——Codex 背后是一套完整的云沙箱编码智能体架构,能独立完成从需求理解、代码编写、测试验证到 PR 提交的完整软件工程流水线。
作为一个每天和代码打交道的工程师,我第一时间研究了它的技术文档。这篇文章不讲产品体验,只讲它是怎么做到的。
问题背景:为什么代码助手一直没做好"自主完成任务"?
市面上的代码 AI 工具(Copilot、Cursor、Tabnine)本质上都是补全型工具:你写一行,它续一行;你问一个问题,它给一个答案。这类工具的局限在于:
- 无法持久操作文件系统:每次对话都是无状态的,修改一个函数无法"知道"整个项目上下文
- 无法运行和验证代码:生成的代码对不对,需要你手动跑测试
- 无法处理跨文件任务:比如"把所有接口从 REST 改成 gRPC",这类任务涉及十几个文件的协同修改
Codex Agent 的出现,正是为了解决上述三个问题。它的核心思路是:给 AI 一个隔离的、有状态的、能执行命令的云端工作空间。
技术原理:云沙箱 + 强化学习训练的执行智能体
1. 底层模型:codex-1
Codex Agent 的核心模型叫 codex-1,它不是简单的 GPT-4o 加了几个 Function Call,而是基于 o3 架构,通过强化学习(RL)在真实编码任务上专项训练的新模型。
训练目标有三个维度:
- 风格对齐:生成贴近人类代码审查偏好的代码,而非机器味十足的写法
- 指令精确遵从:理解模糊的工程指令并准确执行(如"重构这个函数,提升可读性")
- 测试驱动迭代:反复运行测试直到通过,而不是"生成完就结束"
这里最关键的是 RL 训练方式:传统代码模型用监督学习(给模型看"正确代码"),Codex-1 是让模型在真实环境中执行真实任务,根据测试通过率、代码质量指标来更新权重。这和人类程序员的学习方式本质上是一样的——不是看答案,而是跑程序、看报错、改代码。
2. 核心架构:隔离云沙箱执行环境
每当用户提交一个任务,Codex 不是在你的电脑上运行,而是:
用户提交任务描述
│
▼
创建独立云沙箱容器
┌─────────────────────────────────────────┐
│ 预装代码库(通过 GitHub 集成) │
│ 预装依赖(npm/pip/cargo 等) │
│ 网络访问:默认关闭(可手动开启) │
└─────────────────────────────────────────┘
│
▼
codex-1 模型执行:
① 读取/编写文件
② 运行命令(pytest / eslint / tsc 等)
③ 观察输出 → 修改代码 → 再运行 → 直到通过
│
▼
任务完成(耗时 1~30 分钟)
生成可验证证据(终端日志 + 测试结果引用)
│
▼
用户审核 → PR / 合并 / 继续修改
网络隔离是重要的安全设计:默认情况下沙箱无法访问外网,防止模型在执行期间"悄悄"下载恶意依赖或泄露代码。
并行执行是效率设计:每个任务跑在独立容器里,用户可以同时提交多个任务,互不干扰。
3. AGENTS.md:给 AI 的"工程师入职手册"
这是 Codex 最有工程品位的设计之一。项目根目录放一个 AGENTS.md 文件,类似 README,但专门写给 AI 看:
# AGENTS.md
## 如何运行测试
- 单元测试:`pytest tests/ -v`
- 类型检查:`mypy src/`
- 代码风格:`ruff check .`
## 项目规范
- 所有公共函数必须有 docstring
- 禁止使用 `print`,统一用 `logger.info`
- 数据库查询必须走 `repository` 层,禁止在 service 层直接操作 ORM
## 目录结构说明
- `src/core/`:核心业务逻辑,不依赖任何外部框架
- `src/adapters/`:外部系统集成(数据库、API、消息队列)
- `tests/unit/`:纯单元测试,禁止 mock 外部依赖以外的内容
有了这份文件,Codex 知道:测试命令是什么、代码规范是什么、目录结构是什么。它不会盲目改文件,而是像一个已经读完项目文档的新同事。
优先级规则也很工程化:嵌套更深的 AGENTS.md 优先级更高(子模块可以覆盖全局规范),用户直接指令优先级最高。
代码示例:用 Codex API 提交一个异步任务
以下是通过 OpenAI API 直接调用 Codex Agent 的完整示例(Python,使用 openai SDK):
import time
from openai import OpenAI
client = OpenAI() # 从环境变量读取 OPENAI_API_KEY
# 1. 提交编码任务(异步)
response = client.responses.create(
model="codex-mini-latest", # 或 "codex-1" 使用完整版
input="重构 src/utils/date_parser.py 中的 parse_date 函数,"
"使其支持 ISO 8601 和 Unix 时间戳两种格式,"
"并为每种路径添加单元测试。",
reasoning={"effort": "medium"}, # low / medium / high
tools=[{
"type": "code_interpreter", # 启用代码执行能力
}],
stream=False,
)
# 2. 查看执行结果
print("任务状态:", response.status)
print("输出内容:")
for block in response.output:
if block.type == "message":
for content in block.content:
if hasattr(content, "text"):
print(content.text)
# 3. 查看引用的文件变更(如果有)
# Codex 会在输出中标注修改了哪些文件、运行了哪些测试
# 格式:【F:src/utils/date_parser.py†L42-L67】
对于长时间运行的任务(1~30分钟),官方推荐使用轮询模式:
def wait_for_completion(task_id: str, poll_interval: int = 10) -> dict:
"""轮询等待 Codex 任务完成"""
while True:
result = client.responses.retrieve(task_id)
if result.status == "completed":
return result
elif result.status == "failed":
raise RuntimeError(f"任务失败:{result.error}")
elif result.status in ("in_progress", "queued"):
print(f"[{result.status}] 等待中,{poll_interval}s 后重试...")
time.sleep(poll_interval)
else:
raise ValueError(f"未知状态:{result.status}")
个人技术观点:Codex 代表的是"Agent 编排"而非"代码生成"的范式转变
我认为 Codex 最重要的意义不是"代码写得更好了",而是把代码生成这件事从同步问答变成了异步任务编排。
想想我们写代码的真实流程:
理解需求 → 搜索上下文 → 写代码 → 跑测试 → 看报错 → 修代码 → 再跑测试 → 提交
这是一个有状态的、迭代的、工具调用密集的过程。传统的 LLM 只能做第一步和第三步,中间的"跑测试 → 看报错 → 修代码"这个反馈循环需要人来驱动。
Codex 的突破在于:它把整个循环都包了进去。模型不再只是生成文本,而是在扮演一个真实的工程师——它会跑测试,会看报错,会根据报错修代码,会一直试到通过为止。
这背后的技术基础是 RL 训练(让模型在真实环境中学会"试错"),而不是更大的预训练语料。
但这也带来了一个值得警惕的问题:当 AI 能自主迭代代码时,人类对"代码做了什么"的理解会加速衰退。Codex 提交的 PR 里有 AGENTS.md 指导、有终端日志引用,这是在强制保留人类可读的审计链。这个设计细节,体现了 OpenAI 在"自主性 vs. 可控性"之间的谨慎权衡。
黑暗森林的视角:在代码智能体这个战场上,真正的竞争不在于谁的模型更聪明,而在于谁能建立更完善的沙箱隔离 + 行为审计 + 人类干预接口。因为在那个"AI 自己提 PR 自己合代码"的世界里,最先出局的不是技术落后者,而是那些把审计链做烂了的人。
总结
| 技术要点 | 核心内容 |
|---|---|
| 底层模型 | codex-1,基于 o3 架构,通过 RL 在真实编码任务上训练 |
| 执行环境 | 隔离云沙箱容器,网络默认关闭,支持并行任务 |
| 配置机制 | AGENTS.md,给 AI 的工程师入职手册 |
| 任务模式 | 异步执行,1~30分钟,提供可验证的引用证据 |
| 评测标准 | SWE-bench(真实 GitHub Issue 解决率) |
| 开放范围 | 2026-06-03 起向 Plus 用户全面开放 |
Codex 不是代码补全工具的升级版,而是一个全新范式的起点:把软件工程任务委托给 AI,人类专注于审查和决策。这个范式如果成熟,对软件工程师职业的影响,可能比所有人预想的都要深远。