Codex Field GuideSOURCE EDITION · 2026.07源码 ↗
00 · START HERE

Codex 是什么

先建立正确心智模型:Codex 不是更长的代码补全,而是一个能在受控环境中观察、行动、验证并交付结果的 Coding Agent。

先别把它当成“会聊天的 IDE”

普通代码补全解决的是下一段代码写什么;聊天式助手解决的是应该怎么做;Coding Agent 还要负责在真实仓库里把事情做完,并拿出可检查的证据

对 Codex 来说,一次任务不是“一问一答”,而是一段受控执行:

  1. 接收目标与当前环境;
  2. 搜索仓库、读取文件、理解约束;
  3. 向模型发起一次推理;
  4. 根据模型产生的工具调用执行命令或修改文件;
  5. 把结果放回上下文,继续推理;
  6. 运行测试或其他验证;
  7. 通过事件流向界面报告过程和最终结果。

源码可证实 官方仓库中的 run_turn 明确区分两种模型输出:工具调用会执行并触发下一次采样;普通 assistant 消息则结束本轮。

01解决什么

把一个自然语言目标,可靠地转化为仓库中的可验证结果。

02如何工作

模型负责选择下一步,Runtime 提供上下文、工具、执行环境、状态和事件。

03为何这样设计

软件任务通常需要多轮观察与纠错,不可能靠一次补全稳定完成。

04源码落点

核心循环位于 codex-rs/core;CLI、TUI、App Server 是不同交互表面。

05取舍与失败

它仍会误解需求、遗漏约束或做出错误修改;验证和人工控制不能省略。

五个构件,而不是一个模型

DIAGRAMCoding Agent 的最小构成
flowchart LR
G["目标<br/>Goal"] --> R["Runtime<br/>编排与状态"]
E["环境<br/>仓库 / OS / Git"] --> R
R --> M["Model<br/>选择下一步"]
M --> T["Tools<br/>读 / 搜 / Shell / Patch"]
T --> E
T --> V["Validation<br/>测试 / 构建 / Diff"]
V --> R
H["Human control<br/>Approval / 指令"] -.约束.-> R
模型只负责决策。能否成为 Agent,取决于循环、环境、工具和控制面是否闭合。

这里最容易混淆的是 Codex 这个名字。公开产品里它可以指多个相连但不同的表面:

表面 你看见什么 主要职责
Codex CLI 终端中的交互与非交互命令 把本地仓库、Shell 和 Agent Loop 接起来
Codex App / IDE 集成 图形界面、线程、diff、任务状态 展示事件、组织任务与人工确认
Codex Cloud 隔离环境中的远程任务 在托管环境中异步执行
Codex SDK / App Server 可编程接口与协议 把同一能力嵌入产品或自动化

本教材的源码主线是官方 openai/codex 仓库中的 Rust CLI 与 runtime。产品服务端如何实现不在公开仓库中;遇到这条边界,我们会明确停在可证据化的位置。

与三类常见工具的差别

代码补全:局部概率

补全器通常围绕光标和附近代码预测后续 token。它快、低摩擦,适合重复性实现,但不会天然承担“检查整个仓库—修改多处—运行测试—解释结果”的责任。

聊天助手:建议与生成

聊天助手可以给出高质量方案和代码块,但如果它不能观察真实环境、执行工具并消费结果,那么最后一公里仍由人完成。

Coding Agent:带控制边界的行动循环

Codex 把模型放入一个 runtime:模型的输出可能是消息,也可能是结构化工具调用。工具执行成功、失败、被沙箱拒绝或等待批准,都会变成下一步可观察的信息。

什么任务适合

最适合的是目标可描述、环境可访问、结果可验证的工作,例如:

  • 定位并修复一个有复现步骤的 bug;
  • 在现有模式下添加一个小功能并补测试;
  • 理解陌生模块,产出带路径证据的说明;
  • 机械但跨文件的迁移、重命名和配置更新;
  • 执行 lint、测试、构建,修复明确失败。

不适合直接全权交付的任务包括:需求本身未决、涉及不可逆生产操作、验证标准缺失、需要未授权凭据,或必须依赖未公开业务背景的决策。

Codex 的交付契约

一个可信的结果至少包含四层:

问题 典型证据
理解 目标和约束是否正确 任务复述、相关文件、假设
修改 实际改变了什么 patch、文件路径、diff
验证 为什么认为它能工作 测试、构建、静态检查
边界 什么还没有被证明 未运行的环境、缺失凭据、推论

读完这套教材的路线

先掌握下一章的 Agent Loop,再沿着一次真实修改理解 Context、Tool、Session 和安全控制。到最后,你会用同一套概念读源码,并实现一个最小的 Coding Agent。

ESC
没有匹配章节。试试 “Context” 或 “Approval”。