第07章 Codex CLI Harness 架构剖析 —— OpenAI 的命令行 Agent
目录
上一篇我们剖析了 Claude Code 的完整架构。本章我们看 Codex CLI——OpenAI 的命令行 Agent 实现。
Codex CLI 是什么
一句话定义:OpenAI 官方的命令行 Agent——GPT-4 模型 + Shell Harness,专为命令行自动化设计。
Codex CLI = GPT-4 模型(推理)+ Shell Harness(行动) 定位:命令行 Agent,执行 Shell 命令、文件操作、网络请求
核心能力:
- ✅ 执行 Shell 命令(Bash equivalent)
- ✅ 文件读写(Read/Write)
- ✅ 网络请求(HTTP calls)
- ✅ 代码生成与执行(沙箱模式)
- ✅ 安全沙箱(隔离执行环境)
Codex CLI vs Claude Code
核心对比
| 维度 | Codex CLI | Claude Code |
|---|---|---|
| Model | GPT-4/GPT-4o | Claude 4.x (Sonnet/Opus) |
| 定位 | 命令行 Agent | 编程 Agent(IDE + 终端) |
| 上下文窗口 | 128K tokens | 200K tokens |
| 工具数量 | 5-8 个 | 20+ 个 |
| Skills 系统 | ❌ 无 | ✅ 按需加载 |
| MCP 支持 | ❌ 无 | ✅ 完整支持 |
| 子 Agent | ❌ 无 | ✅ 多类型 |
| 权限系统 | ✅ 沙箱模式 | ✅ 三级权限(deny→ask→allow) |
| 上下文压缩 | ❌ 无自动压缩 | ✅ 四层压缩策略 |
| 浏览器控制 | ❌ 无 | ✅ Browser 工具组 |
| 多模型路由 | ❌ 单模型 | ✅ 模型路由(Sonnet/Opus/Haiku) |
图表
代码
graph TB
subgraph CodexCLI["Codex CLI (轻量 Harness)"]
C1[GPT-4
推理引擎]
C2[Shell 执行
核心工具]
C3[安全沙箱
隔离环境]
C4[文件读写
基础操作]
end
subgraph ClaudeCode["Claude Code (完整 Harness)"]
CC1[Claude 4.x
推理引擎]
CC2[20+ 工具
丰富工具集]
CC3[Skills/MCP
扩展系统]
CC4[子 Agent
团队协作]
CC5[权限管理
三级权限]
CC6[上下文压缩
四层策略]
end
style CodexCLI fill:#FFE0E0
style ClaudeCode fill:#E0FFE0graph TB
subgraph CodexCLI["Codex CLI (轻量 Harness)"]
C1[GPT-4
推理引擎]
C2[Shell 执行
核心工具]
C3[安全沙箱
隔离环境]
C4[文件读写
基础操作]
end
subgraph ClaudeCode["Claude Code (完整 Harness)"]
CC1[Claude 4.x
推理引擎]
CC2[20+ 工具
丰富工具集]
CC3[Skills/MCP
扩展系统]
CC4[子 Agent
团队协作]
CC5[权限管理
三级权限]
CC6[上下文压缩
四层策略]
end
style CodexCLI fill:#FFE0E0
style ClaudeCode fill:#E0FFE0graph TB
subgraph CodexCLI["Codex CLI (轻量 Harness)"]
C1[GPT-4
推理引擎]
C2[Shell 执行
核心工具]
C3[安全沙箱
隔离环境]
C4[文件读写
基础操作]
end
subgraph ClaudeCode["Claude Code (完整 Harness)"]
CC1[Claude 4.x
推理引擎]
CC2[20+ 工具
丰富工具集]
CC3[Skills/MCP
扩展系统]
CC4[子 Agent
团队协作]
CC5[权限管理
三级权限]
CC6[上下文压缩
四层策略]
end
style CodexCLI fill:#FFE0E0
style ClaudeCode fill:#E0FFE0graph TB
subgraph CodexCLI["Codex CLI (轻量 Harness)"]
C1[GPT-4<br/>推理引擎]
C2[Shell 执行<br/>核心工具]
C3[安全沙箱<br/>隔离环境]
C4[文件读写<br/>基础操作]
end
subgraph ClaudeCode["Claude Code (完整 Harness)"]
CC1[Claude 4.x<br/>推理引擎]
CC2[20+ 工具<br/>丰富工具集]
CC3[Skills/MCP<br/>扩展系统]
CC4[子 Agent<br/>团队协作]
CC5[权限管理<br/>三级权限]
CC6[上下文压缩<br/>四层策略]
end
style CodexCLI fill:#FFE0E0
style ClaudeCode fill:#E0FFE0定位差异
Codex CLI:
- 专注于命令行自动化
- 工具集精简(Bash + 文件读写)
- 沙箱模式保证安全
- 适合快速脚本任务
Claude Code:
- 专注完整编程工作流
- 工具集丰富(20+ 工具)
- 扩展系统完整(Skills/MCP)
- 适合复杂开发任务
Codex CLI 的 Harness 架构
三层架构(比 Claude Code 简化)
图表
代码
graph TB
subgraph CodexCLI["Codex CLI Harness (三层)"]
subgraph L3["管理层"]
M1[安全沙箱
隔离执行]
M2[Approval 模式
审批流程]
end
subgraph L2["工具层"]
T1[Shell 执行
核心工具]
T2[文件读写
基础操作]
T3[网络请求
HTTP calls]
end
subgraph L1["Loop层"]
LOOP[Agent Loop
observe→think→act]
end
L3 --> L2 --> L1
end
Model[GPT-4/GPT-4o
推理引擎] -->|调用| CodexCLI
CodexCLI -->|执行| Env[Shell/文件系统]graph TB
subgraph CodexCLI["Codex CLI Harness (三层)"]
subgraph L3["管理层"]
M1[安全沙箱
隔离执行]
M2[Approval 模式
审批流程]
end
subgraph L2["工具层"]
T1[Shell 执行
核心工具]
T2[文件读写
基础操作]
T3[网络请求
HTTP calls]
end
subgraph L1["Loop层"]
LOOP[Agent Loop
observe→think→act]
end
L3 --> L2 --> L1
end
Model[GPT-4/GPT-4o
推理引擎] -->|调用| CodexCLI
CodexCLI -->|执行| Env[Shell/文件系统]graph TB
subgraph CodexCLI["Codex CLI Harness (三层)"]
subgraph L3["管理层"]
M1[安全沙箱
隔离执行]
M2[Approval 模式
审批流程]
end
subgraph L2["工具层"]
T1[Shell 执行
核心工具]
T2[文件读写
基础操作]
T3[网络请求
HTTP calls]
end
subgraph L1["Loop层"]
LOOP[Agent Loop
observe→think→act]
end
L3 --> L2 --> L1
end
Model[GPT-4/GPT-4o
推理引擎] -->|调用| CodexCLI
CodexCLI -->|执行| Env[Shell/文件系统]graph TB
subgraph CodexCLI["Codex CLI Harness (三层)"]
subgraph L3["管理层"]
M1[安全沙箱<br/>隔离执行]
M2[Approval 模式<br/>审批流程]
end
subgraph L2["工具层"]
T1[Shell 执行<br/>核心工具]
T2[文件读写<br/>基础操作]
T3[网络请求<br/>HTTP calls]
end
subgraph L1["Loop层"]
LOOP[Agent Loop<br/>observe→think→act]
end
L3 --> L2 --> L1
end
Model[GPT-4/GPT-4o<br/>推理引擎] -->|调用| CodexCLI
CodexCLI -->|执行| Env[Shell/文件系统]核心公式
Codex CLI = Agent Loop(心跳)
+ Shell 执行(双手)
+ 文件读写(基础操作)
+ 安全沙箱(边界)
+ Approval 模式(审批)Codex CLI 的核心工具
工具集一览
| 工具 | 功能 | 参数示例 |
|---|---|---|
| Shell 执行 | 执行命令行命令 | command: "npm install" |
| Read | 读取文件内容 | file_path: "/src/app.py" |
| Write | 写入文件 | file_path, content |
| Edit | 编辑文件片段 | file_path, old_string, new_string |
| HTTP Request | 发送网络请求 | url, method, body |
对比 Claude Code 工具集:
图表
代码
graph LR
subgraph CodexTools["Codex CLI (5工具)"]
C1[Shell]
C2[Read]
C3[Write]
C4[Edit]
C5[HTTP]
end
subgraph ClaudeTools["Claude Code (20+工具)"]
CL1[Bash]
CL2[Read]
CL3[Write]
CL4[Edit]
CL5[Glob]
CL6[Grep]
CL7[Browser...]
CL8[Agent]
CL9[WebFetch]
CL10[...]
end
style CodexTools fill:#FFE0E0
style ClaudeTools fill:#E0FFE0graph LR
subgraph CodexTools["Codex CLI (5工具)"]
C1[Shell]
C2[Read]
C3[Write]
C4[Edit]
C5[HTTP]
end
subgraph ClaudeTools["Claude Code (20+工具)"]
CL1[Bash]
CL2[Read]
CL3[Write]
CL4[Edit]
CL5[Glob]
CL6[Grep]
CL7[Browser...]
CL8[Agent]
CL9[WebFetch]
CL10[...]
end
style CodexTools fill:#FFE0E0
style ClaudeTools fill:#E0FFE0graph LR
subgraph CodexTools["Codex CLI (5工具)"]
C1[Shell]
C2[Read]
C3[Write]
C4[Edit]
C5[HTTP]
end
subgraph ClaudeTools["Claude Code (20+工具)"]
CL1[Bash]
CL2[Read]
CL3[Write]
CL4[Edit]
CL5[Glob]
CL6[Grep]
CL7[Browser...]
CL8[Agent]
CL9[WebFetch]
CL10[...]
end
style CodexTools fill:#FFE0E0
style ClaudeTools fill:#E0FFE0graph LR
subgraph CodexTools["Codex CLI (5工具)"]
C1[Shell]
C2[Read]
C3[Write]
C4[Edit]
C5[HTTP]
end
subgraph ClaudeTools["Claude Code (20+工具)"]
CL1[Bash]
CL2[Read]
CL3[Write]
CL4[Edit]
CL5[Glob]
CL6[Grep]
CL7[Browser...]
CL8[Agent]
CL9[WebFetch]
CL10[...]
end
style CodexTools fill:#FFE0E0
style ClaudeTools fill:#E0FFE0工具设计特点
精简原则:
- 只保留核心工具(Shell + 文件读写)
- 无搜索导航工具(Glob/Grep)
- 无浏览器控制(Browser)
- 无子 Agent 派发(Agent)
适用场景:
- ✅ 快速脚本任务(创建文件、执行命令)
- ✅ 简单文件操作(读写配置文件)
- ❌ 复杂代码库导航(需要 Glob/Grep)
- ❌ 网页自动化(需要 Browser)
- ❌ 团队协作任务(需要子 Agent)
Codex CLI 的安全沙箱
沙箱模式
核心设计:所有命令在隔离沙箱中执行,不影响宿主环境。
图表
代码
graph TB
subgraph Sandbox["Codex CLI 沙箱"]
S1[隔离容器
Docker/Firecracker]
S2[文件系统隔离
虚拟文件系统]
S3[网络隔离
受限网络访问]
S4[进程隔离
独立进程空间]
end
Command[用户命令] --> Sandbox
Sandbox -->|安全执行| Result[执行结果]
Host[宿主环境] -.->|不影响| Sandbox
style Sandbox fill:#E8F5E9
style Host fill:#FFE0E0graph TB
subgraph Sandbox["Codex CLI 沙箱"]
S1[隔离容器
Docker/Firecracker]
S2[文件系统隔离
虚拟文件系统]
S3[网络隔离
受限网络访问]
S4[进程隔离
独立进程空间]
end
Command[用户命令] --> Sandbox
Sandbox -->|安全执行| Result[执行结果]
Host[宿主环境] -.->|不影响| Sandbox
style Sandbox fill:#E8F5E9
style Host fill:#FFE0E0graph TB
subgraph Sandbox["Codex CLI 沙箱"]
S1[隔离容器
Docker/Firecracker]
S2[文件系统隔离
虚拟文件系统]
S3[网络隔离
受限网络访问]
S4[进程隔离
独立进程空间]
end
Command[用户命令] --> Sandbox
Sandbox -->|安全执行| Result[执行结果]
Host[宿主环境] -.->|不影响| Sandbox
style Sandbox fill:#E8F5E9
style Host fill:#FFE0E0graph TB
subgraph Sandbox["Codex CLI 沙箱"]
S1[隔离容器<br/>Docker/Firecracker]
S2[文件系统隔离<br/>虚拟文件系统]
S3[网络隔离<br/>受限网络访问]
S4[进程隔离<br/>独立进程空间]
end
Command[用户命令] --> Sandbox
Sandbox -->|安全执行| Result[执行结果]
Host[宿主环境] -.->|不影响| Sandbox
style Sandbox fill:#E8F5E9
style Host fill:#FFE0E0沙箱特性
| 特性 | 说明 | 效果 |
|---|---|---|
| 文件隔离 | 沙箱内的文件操作不影响宿主 | 安全测试 |
| 进程隔离 | 沙箱内的进程独立运行 | 防止破坏 |
| 网络隔离 | 可配置网络访问权限 | 防止泄露 |
| 资源限制 | 限制 CPU/内存使用 | 防止滥用 |
Approval 模式
| 模式 | 行为 | 适用场景 |
|---|---|---|
| auto-edit | 自动批准文件编辑 | 信任的编辑操作 |
| suggest | 建议但不执行 | 需要用户确认 |
| full-auto | 自动批准所有操作 | 完全信任(危险) |
图表
代码
graph LR
A[工具调用] --> B{Approval 模式}
B -->|auto-edit| C[✅ 自动批准
文件编辑]
B -->|suggest| D[⚠️ 建议
等待确认]
B -->|full-auto| E[✅ 自动批准
所有操作
⚠️ 危险]graph LR
A[工具调用] --> B{Approval 模式}
B -->|auto-edit| C[✅ 自动批准
文件编辑]
B -->|suggest| D[⚠️ 建议
等待确认]
B -->|full-auto| E[✅ 自动批准
所有操作
⚠️ 危险]graph LR
A[工具调用] --> B{Approval 模式}
B -->|auto-edit| C[✅ 自动批准
文件编辑]
B -->|suggest| D[⚠️ 建议
等待确认]
B -->|full-auto| E[✅ 自动批准
所有操作
⚠️ 危险]graph LR
A[工具调用] --> B{Approval 模式}
B -->|auto-edit| C[✅ 自动批准<br/>文件编辑]
B -->|suggest| D[⚠️ 建议<br/>等待确认]
B -->|full-auto| E[✅ 自动批准<br/>所有操作<br/>⚠️ 危险]Codex CLI 的使用场景
✅ 适合的场景
| 场景 | 适合原因 | 示例 |
|---|---|---|
| 快速脚本 | 工具精简,启动快 | 创建项目骨架 |
| 文件操作 | 核心工具覆盖 | 读写配置文件 |
| 命令执行 | Shell 执行是核心 | npm install |
| 安全测试 | 沙箱隔离环境 | 测试危险脚本 |
| 简单任务 | 无需复杂工具 | 生成单个文件 |
❌ 不适合的场景
| 场景 | 不适合原因 | Claude Code 更好 |
|---|---|---|
| 代码库导航 | 无 Glob/Grep | ✅ 搜索工具丰富 |
| 网页自动化 | 无 Browser | ✅ Browser 工具组 |
| 复杂重构 | 无上下文压缩 | ✅ 四层压缩策略 |
| 团队协作 | 无子 Agent | ✅ 多类型子 Agent |
| 知识管理 | 无 Skills | ✅ 按需加载 Skills |
Codex CLI 的局限与改进方向
当前局限
| 局限 | 影响 | 原因 |
|---|---|---|
| 工具集精简 | 无法处理复杂任务 | 设计定位为轻量 Agent |
| 无 Skills 系统 | 缺乏领域知识注入 | 无扩展层设计 |
| 无 MCP 支持 | 无法连接外部系统 | 无插件机制 |
| 无上下文压缩 | 容易上下文溢出 | 无管理层设计 |
| 无子 Agent | 无法团队协作 | 无派发机制 |
潜在改进方向
图表
代码
graph LR
CodexCLI[Codex CLI 当前] -->|添加| Grep[Glob/Grep 搜索]
CodexCLI -->|添加| Skills[Skills 按需加载]
CodexCLI -->|添加| MCP[MCP 插件]
CodexCLI -->|添加| Context[上下文压缩]
CodexCLI -->|添加| SubAgent[子 Agent 派发]
Improved[改进后] --> ClaudeCode[接近 Claude Code]graph LR
CodexCLI[Codex CLI 当前] -->|添加| Grep[Glob/Grep 搜索]
CodexCLI -->|添加| Skills[Skills 按需加载]
CodexCLI -->|添加| MCP[MCP 插件]
CodexCLI -->|添加| Context[上下文压缩]
CodexCLI -->|添加| SubAgent[子 Agent 派发]
Improved[改进后] --> ClaudeCode[接近 Claude Code]graph LR
CodexCLI[Codex CLI 当前] -->|添加| Grep[Glob/Grep 搜索]
CodexCLI -->|添加| Skills[Skills 按需加载]
CodexCLI -->|添加| MCP[MCP 插件]
CodexCLI -->|添加| Context[上下文压缩]
CodexCLI -->|添加| SubAgent[子 Agent 派发]
Improved[改进后] --> ClaudeCode[接近 Claude Code]graph LR
CodexCLI[Codex CLI 当前] -->|添加| Grep[Glob/Grep 搜索]
CodexCLI -->|添加| Skills[Skills 按需加载]
CodexCLI -->|添加| MCP[MCP 插件]
CodexCLI -->|添加| Context[上下文压缩]
CodexCLI -->|添加| SubAgent[子 Agent 派发]
Improved[改进后] --> ClaudeCode[接近 Claude Code]Codex CLI vs Claude Code vs Poco
三款 Agent 的对比
| 维度 | Codex CLI | Claude Code | Poco |
|---|---|---|---|
| Model | GPT-4 | Claude 4.x | Claude 4.x |
| 定位 | 命令行 Agent | 编程 Agent | 多渠道个人助手 |
| 工具数量 | 5 | 20+ | 25+ |
| 扩展系统 | ❌ 无 | Skills/MCP | Skills/MCP |
| 子 Agent | ❌ 无 | ✅ 多类型 | ✅ 多类型 |
| 沙箱 | ✅ 强沙箱 | ✅ 三级权限 | ✅ Docker 沙箱 |
| 浏览器 | ❌ 无 | ✅ Browser | ✅ Browser |
| IM 集成 | ❌ 无 | ❌ 无 | ✅ DingTalk/Feishu |
| 项目管理 | ❌ 无 | ❌ 无 | ✅ 项目/任务管理 |
| 团队协作 | ❌ 无 | ✅ 子 Agent | ✅ Channel 协作 |
图表
代码
graph TB
subgraph Simple["轻量 Agent"]
Codex[Codex CLI
命令行 Agent
5工具]
end
subgraph Medium["完整 Agent"]
Claude[Claude Code
编程 Agent
20+工具]
end
subgraph Advanced["高级 Agent"]
Poco[Poco
多渠道助手
25+工具
IM集成]
end
Simple --> Medium --> Advanced
style Simple fill:#FFE0E0
style Medium fill:#E0FFE0
style Advanced fill:#E0E0FFgraph TB
subgraph Simple["轻量 Agent"]
Codex[Codex CLI
命令行 Agent
5工具]
end
subgraph Medium["完整 Agent"]
Claude[Claude Code
编程 Agent
20+工具]
end
subgraph Advanced["高级 Agent"]
Poco[Poco
多渠道助手
25+工具
IM集成]
end
Simple --> Medium --> Advanced
style Simple fill:#FFE0E0
style Medium fill:#E0FFE0
style Advanced fill:#E0E0FFgraph TB
subgraph Simple["轻量 Agent"]
Codex[Codex CLI
命令行 Agent
5工具]
end
subgraph Medium["完整 Agent"]
Claude[Claude Code
编程 Agent
20+工具]
end
subgraph Advanced["高级 Agent"]
Poco[Poco
多渠道助手
25+工具
IM集成]
end
Simple --> Medium --> Advanced
style Simple fill:#FFE0E0
style Medium fill:#E0FFE0
style Advanced fill:#E0E0FFgraph TB
subgraph Simple["轻量 Agent"]
Codex[Codex CLI<br/>命令行 Agent<br/>5工具]
end
subgraph Medium["完整 Agent"]
Claude[Claude Code<br/>编程 Agent<br/>20+工具]
end
subgraph Advanced["高级 Agent"]
Poco[Poco<br/>多渠道助手<br/>25+工具<br/>IM集成]
end
Simple --> Medium --> Advanced
style Simple fill:#FFE0E0
style Medium fill:#E0FFE0
style Advanced fill:#E0E0FF本章小结
- Codex CLI 定位:OpenAI 的命令行 Agent,工具精简,沙箱安全
- 三层架构:Loop层 + 工具层(5工具)+ 管理层(沙箱/Approval)
- 核心工具:Shell 执行、Read、Write、Edit、HTTP Request
- 安全沙箱:隔离容器、文件隔离、进程隔离、网络隔离
- Approval 模式:auto-edit/suggest/full-auto 三种审批级别
- 适用场景:快速脚本、文件操作、安全测试
- 局限:无 Skills/MCP/子 Agent/上下文压缩/浏览器
- 对比 Claude Code:Codex CLI 是轻量 Harness,Claude Code 是完整 Harness
预告:下一篇我们剖析 OpenClaw/Poco——更美观易用的多渠道个人助手。
相关内容
- 第01章 Agent 的 70 年简史 —— 从符号推理到深度学习
- 第02章 LLM 时代的 Agent 革命 —— 2023-2026 爆发期
- 第03章 Harness 概念溯源 —— "模型是大脑,Harness是身体"
- 第04章 Harness 核心架构 —— 四层模型详解
- 第05章 Harness vs Agent vs Model —— 三者关系辨析
收录于 合集・01-AI 工具与智能体/07-Harness 27
如果这篇文章对你有帮助,欢迎请我喝杯咖啡 ☕
支付宝
微信