最近心血来潮上手试了试Codex(用Rust开发的),本来只是想“摸个新鲜工具”图一乐,结果玩着玩着就收不住了——不管是补完我写了一半的逻辑代码,还是帮我把一段绕得头晕的业务逻辑注释理得清清楚楚,它给的反馈都比我预想的要机灵,实际用起来的效果,更是给了我好大的惊喜。
最近心血来潮上手试了试 Codex(用 #Rust 开发的),本来只是想 “摸个新鲜工具” 图一乐,结果玩着玩着就收不住了 —— 不管是补完我写了一半的逻辑代码,还是帮我把一段绕得头晕的业务逻辑注释理得清清楚楚,它给的反馈都比我预想的要机灵,实际用起来的效果,更是给了我好大的惊喜。

Codex 是 OpenAI 开发的一个本地运行的编码智能体,它能够理解用户的自然语言请求,自动生成、测试、执行代码,甚至修复错误。
与传统的代码补全工具不同,Codex 是一个完整的 AI 代理系统,拥有复杂的对话管理、沙箱执行、权限控制等能力。
本文从架构的角度,深入浅出地解释 Codex 如何从一个用户请求出发,最终执行代码并反馈结果的整个过程。
在深入架构细节之前,我们需要理解几个关键概念:
local_shell(执行命令)、view_image(查看图片)等首先,来看看 Codex 三层架构图:

职责:创建和管理会话的生命周期

关键方法:
new_conversation(config) - 创建新会话resume_conversation_from_rollout(path) - 从文件恢复会话get_conversation(id) - 获取活跃会话核心设计:
Arc<RwLock<HashMap>> 存储活跃会话,支持并发访问CodexConversation 实例职责:执行整个对话逻辑的核心引擎,是 Codex 的"大脑"
核心流程:
Codex {
// 初始化阶段
auth_manager // 身份验证
models_manager // 模型管理
config // 配置
// 会话状态
session_state // 当前会话状态
turn_context // 当前轮次上下文
// 事件处理
event_sender // 发送事件到客户端
event_receiver // 接收用户输入
}
关键方法:
spawn() - 创建并初始化新的 Codex 实例submit(Op) - 提交用户操作(发送消息、批准命令等)next_event() - 获取下一个事件process_turn() - 处理一个完整轮次职责:保存单个轮次的所有上下文信息
包含内容:
TurnContext {
client // 与 AI 模型的连接
cwd // 工作目录
approval_policy // 批准策略
sandbox_policy // 沙箱策略
tools_config // 工具配置
message_history // 消息历史
// ... 等等
}
为什么重要:
职责:管理和执行 AI 模型调用的各种工具
工具类型:
| 工具名 | 功能 | 沙箱支持 |
|---|---|---|
local_shell |
执行 shell 命令 | ✓ 完全沙箱化 |
apply_patch |
应用代码补丁 | ✓ 文件级别控制 |
view_image |
查看和分析图片 | ✓ 受限访问 |
file_operations |
读写文件 | ✓ 路径受限 |
web_search |
网络搜索(实验) | ✓ 仅查询 |
执行流程:

职责:持久化和检索会话历史
数据结构:
~/.codex/sessions/
├── {conversation_id}.jsonl
│ ├── RolloutItem (事件1)
│ ├── RolloutItem (事件2)
│ └── ... 所有事件的 JSONL 记录
└── metadata.json
JSONL 格式优势:
职责:与 OpenAI API 通信,处理流式响应
核心能力:
ModelClient {
// 支持多种模型
model: "gpt-5.1-codex-max" / "gpt-4" / ...
// 支持自定义提供商
model_provider: OpenAI / LMStudio / Ollama / ...
// 处理流式 SSE 响应
ResponseStream {
delta // 增量内容
tool_calls // 工具调用
reasoning // 推理过程
}
}
两种 Wire API:
Chat Completions API(标准)
Responses API(优化)
职责:管理用户身份和 API 密钥
支持的方式:
| 方式 | 优点 | 场景 |
|---|---|---|
| ChatGPT SSO | 简单、安全 | 桌面应用 |
| API Key | 自主控制 | 服务器、自动化 |
| 本地存储 | 隐私保护 | 离线使用 |

这是 Codex 最核心的流程,包含以下步骤:


关键概念 - 自动压缩(Auto-Compaction):





目的:支持"撤销"功能
工作原理:
优势:
结构:
MessageHistory {
system_message // 系统提示词
base_instructions // 基础指示
user_instructions // 用户自定义指示(AGENTS.md)
turns: [
{
user_messages: [...] // 用户在这一轮说的话
assistant_message: ... // AI 的完整响应
tool_calls: [...] // 工具调用记录
tool_results: [...] // 工具结果
}
]
}
优化策略:
滑动窗口(Sliding Window)
自动压缩(Auto-Compaction)
远程压缩(Remote Compaction)
两层检查:
批准策略(Approval Policy)
AskForApproval {
Never, // 完全信任,自动执行
OnRequest, // 大多数命令需批准
OnFailure, // 只在失败时询问
Untrusted, // 所有 shell 命令都需批准
}
沙箱策略(Sandbox Policy)
SandboxPolicy {
ReadOnly, // 文件系统只读
WorkspaceWrite, // 只能写当前工作区
DangerFullAccess, // 无限制(危险!)
}
执行流程:

新功能:允许 Codex 连接外部工具和数据源
Codex ← MCP Client → MCP Server (Git, Database, APIs)
→ MCP Server (Web Search)
→ MCP Server (Custom Tools)
使用场景:
配置示例:
[mcp_servers]
git = { command = "python", args = ["git_mcp_server.py"] }
web_search = { command = "npx", args = ["@example/web-search-mcp"] }
支持高级推理模型(如 o1、o3)

三个推理级别:
Low - 快速、轻量级推理Medium - 平衡速度和质量High - 深度思考,性能最优事件驱动
分层隔离
安全第一
持久化和恢复
可扩展性
| 方面 | 优势 |
|---|---|
| 实时性 | 事件流保证低延迟更新 |
| 可靠性 | 持久化设计支持容错和恢复 |
| 安全性 | 多层沙箱和批准机制 |
| 灵活性 | 支持多种后端模型和工具 |
| 可维护性 | 清晰的分层和模块化设计 |
如果你想深入研究 Codex,推荐按以下顺序:
docs/getting-started.mddocs/config.mdcore/src/codex.rs - 核心引擎core/src/tools/ - 工具系统core/src/sandboxing/ - 沙箱实现protocol/src/protocol.rs - 事件和消息定义codex-rs/
├── core/ # 核心业务逻辑
│ ├── src/
│ │ ├── codex.rs # Codex 引擎主体
│ │ ├── conversation_manager.rs # 会话管理
│ │ ├── tools/ # 工具系统
│ │ ├── sandboxing/ # 沙箱实现
│ │ ├── exec_policy.rs # 执行策略
│ │ └── rollout/ # 持久化系统
│ └── tests/ # 集成测试
│
├── cli/ # CLI 入口
│ └── src/main.rs
│
├── tui/ # 终端 UI(Ratatui)
│ └── src/
│ ├── app.rs # TUI 主体
│ └── event_handler.rs # 事件处理
│
├── protocol/ # 协议定义
│ └── src/
│ └── protocol.rs # 事件、消息定义
│
├── app-server/ # HTTP API 服务器
│ └── src/
│ └── codex_message_processor.rs # 消息处理
│
└── mcp-server/ # MCP 服务器实现
└── src/
最后的话:Codex 的架构体现了现代 AI 系统的设计智慧——在保证安全和可靠的前提下,通过巧妙的分层和事件驱动,实现了一个高度可扩展和易维护的系统。希望本文能帮助你理解 Codex 的核心原理!
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!