长程智能体的核心挑战在于上下文窗口的有限性与任务复杂度之间的张力。Codex 通过任务分解-委派执行模式将这一张力转化为可管理的结构。形式化地,设原始任务 $T$ 可分解为 $n$ 个子任务 $\{T_1, T_2, \ldots, T_n\}$,使得:
$$ T = \bigcup_{i=1}^{n} T_i $$
在单一智能体执行模式下,总上下文消耗 $\mathcal{I}_{\text{单体}}(T)$ 为所有子任务信息的并集:
$$ \mathcal{I}_{\text{单体}}(T) = \sum_{i=1}^{n} \mathcal{I}(T_i) + \mathcal{I}(\text{协调开销}) $$
而在委派模式下,主智能体的上下文窗口仅承担子任务摘要的并集:
$$ \mathcal{I}_{\text{委派}}(T) = \sum_{i=1}^{n} \mathcal{I}(\text{摘要}_i) + \mathcal{I}(\text{分解框架}) $$
其中 $\mathcal{I}(\text{摘要}_i) \ll \mathcal{I}(T_i)$,因为子智能体独立处理完整细节,仅需向主智能体报告结构化结论。这种上下文划分的收益条件为:
$$ \Delta \mathcal{I} = \mathcal{I}_{\text{单体}}(T) - \mathcal{I}_{\text{委派}}(T) > \mathcal{I}(\text{通信成本}) $$
当任务存在清晰的模块边界时(如代码重构中不同模块、文档生成中不同章节),$\Delta \mathcal{I}$ 显著为正,委派模式优于单体执行(见第33章)。
委派模式引入了主-子代理间的通信开销。设单次通信的 token 消耗为 $\tau_{\text{comm}}$,通信轮数为 $r$,则总通信成本为:
$$ \mathcal{C}_{\text{comm}} = r \cdot \tau_{\text{comm}} $$
Codex 实现了双模式委派以优化这一成本:
send_message 向子代理发送追问,子代理持续响应直至完成。此模式下 $r$ 可动态增长,但保持信息新鲜度。通信过程中的信息损失可通过摘要压缩比 $\rho \in (0,1]$ 量化:
$$ \rho = \frac{|\text{摘要}|}{|\text{完整信息}|} $$
Codex 通过事件过滤器(forward_events)仅传递业务级事件(如 TurnComplete、FunctionCall),过滤内部管理事件(如 TokenCount、SessionConfigured),确保 $\rho$ 保持在合理范围内。
委派关系自然构成有向图 $G=(V,E)$,其中节点集 $V$ 为所有代理(包括主代理和子代理),边集 $E$ 为委派关系:
$$ E = \{(v_i, v_j) \mid v_j \text{ 是 } v_i \text{ 的子代理}\} $$
Codex 通过 AgentGraphStore trait 抽象图持久化边界,支持:
upsert_thread_spawn_edge(parent_id, child_id, status) 记录派生关系及其状态list_thread_spawn_descendants(root_id, status_filter) 按深度和代理 ID 排序返回后代列表Open 的边,封闭边下的后代即使自身开放也不包含(见第34章)边的生命周期状态机为:
$$ \text{Created} \to \text{Open} \xrightarrow{\text{子代理完成或显式关闭}} \text{Closed} $$
图的持久化使执行链完全可审计:通过 parent_thread_id 字段可重建完整的代理创建链路,支持会话崩溃后的拓扑恢复。
长程任务需要预设的行为约束以确保执行的可预测性。Codex 的协作模式模板通过开发者级指令系统实现这一约束。协作模式不由用户请求触发,而是由开发者通过 <collaboration_mode>...</collaboration_mode> 标签显式设置,确保工程约束的稳定性。
内置模式包括:
request_user_input。Plan 模式遵循三阶段流程:
$$ \text{Phase 1: 探索环境} \to \text{Phase 2: 明确意图} \to \text{Phase 3: 实现规范} $$
第一阶段要求"探索优先于询问",第二阶段要求"询问优于猜测",第三阶段确保规范"决策完整"。这种阶段式约束防止了规划不充分就贸然执行的风险。
Codex 的核心设计理念是一次构建、多投影:同一内核派生出四种形态(TUI、IDE 协议、MCP 服务器、无头执行),而非为每种形态独立实现。
设内核实现成本为 $C_{\text{core}}$,投影 $j$ 的适配层成本为 $C_{\text{proj}_j}$。复用模式的总成本为:
$$ C_{\text{复用}} = C_{\text{core}} + \sum_{j=1}^{m} C_{\text{proj}_j} $$
而独立实现每种形态的成本为:
$$ C_{\text{独立}} = \sum_{j=1}^{m} C_j $$
其中 $C_j \approx C_{\text{core}} + C_{\text{proj}_j}$。复用收益为:
$$ \Delta C = C_{\text{独立}} - C_{\text{复用}} = (m-1) \cdot C_{\text{core}} - \sum_{j=1}^{m} (C_{\text{proj}_j} - C_{\text{基础适配}}) $$
当投影层保持轻薄时(如 JSON-RPC 协议适配、stdio 封装),$\Delta C$ 显著为正。Codex 通过 AppServer 协议层实现这一轻薄投影:TUI、IDE 客户端、MCP 服务器均通过标准化的 JSON-RPC 接口与核心通信,协议层作为内核的不变量保护者(见第35章)。
四种形态的投影路径为:
AppServerSession 调用 thread/start、turn/start 等方法,事件流通过 WebSocket 推送InProcessAppServer 直接调用核心 API,绕过网络传输层无头模式是 Codex 作为生产级 AI Agent 框架的关键能力,支持无人值守的闭环执行。在无人在场时,安全策略自动收紧:
$$ \mathcal{S}_{\text{无人值守}} = \mathcal{S}_{\text{交互式}} \cap \{\text{自动审批仅限于安全操作}\} $$
Codex 通过双输出处理器架构实现同一核心逻辑在不同场景下的复用:
这两种处理器共享 EventProcessor trait,使得核心逻辑不需要关心输出格式(见第37章)。
云端任务系统进一步延伸了时间尺度,从小时级任务扩展到天级编排。云端任务状态机为:
$$ \text{Submitted} \to \text{Queued} \to \text{Running} \xrightarrow{\text{attempts>1}} \text{Retry} \to (\text{Completed} \mid \text{Failed} \mid \text{Cancelled}) $$
支持最佳 N 次尝试(best-of-N)机制,服务器端根据 exit_code、输出质量等指标自动选择最佳结果。这种设计特别适合代码生成、测试运行等非确定性场景。
独立上下文的设计基于三个原理:
InternalAgentDied 错误码清理资源MCP(Model Context Protocol)作为标准化工具协议,实现了能力提供者与使用者的解耦。Codex 既可作为 MCP 客户端调用外部服务器(如 GitHub、Slack),也可作为 MCP 服务器暴露自身能力(供 IDE、Claude Desktop 调用)。这种双向性创造了"能力市场":任何符合 MCP 协议的工具或数据源都可无缝接入 Codex 的执行环境(见第36章)。
协作模式是工程约束,非用户偏好。Plan 模式禁止 mutating 是为了防止意外修改,协作阶段由开发工作流决定(规划 vs 执行)。模式持久性确保用户语气变化不会导致模式意外切换——只有开发者指令能改变模式。这种设计保护了长程任务的执行完整性。
| 符号 | 含义 |
|---|---|
| $T$ | 原始任务 |
| $T_i$ | 第 $i$ 个子任务 |
| $\mathcal{I}(\cdot)$ | 信息量(以 token 为单位) |
| $\mathcal{I}_{\text{单体}}(T)$ | 单体执行模式的上下文消耗 |
| $\mathcal{I}_{\text{委派}}(T)$ | 委派模式的上下文消耗 |
| $\text{摘要}_i$ | 子任务 $T_i$ 的摘要 |
| $\Delta \mathcal{I}$ | 上下文划分收益 |
| $\mathcal{C}_{\text{comm}}$ | 通信成本 |
| $r$ | 通信轮数 |
| $\tau_{\text{comm}}$ | 单次通信的 token 消耗 |
| $\rho$ | 摘要压缩比 |
| $G=(V,E)$ | 代理图 |
| $V$ | 代理节点集 |
| $E$ | 委派关系边集 |
| $C_{\text{core}}$ | 内核实现成本 |
| $C_{\text{proj}_j}$ | 投影 $j$ 的适配层成本 |
| $\Delta C$ | 形态复用收益 |
| $\mathcal{S}_{\text{无人值守}}$ | 无人值守模式的安全策略集 |
| $\mathcal{S}_{\text{交互式}}$ | 交互模式的安全策略集 |