第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 CLIClaude Code
ModelGPT-4/GPT-4oClaude 4.x (Sonnet/Opus)
定位命令行 Agent编程 Agent(IDE + 终端)
上下文窗口128K tokens200K 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:#E0FFE0
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:#E0FFE0
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:#E0FFE0
graph 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:#E0FFE0
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:#E0FFE0
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:#E0FFE0
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:#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:#FFE0E0
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:#FFE0E0
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:#FFE0E0
graph 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 CLIClaude CodePoco
ModelGPT-4Claude 4.xClaude 4.x
定位命令行 Agent编程 Agent多渠道个人助手
工具数量520+25+
扩展系统❌ 无Skills/MCPSkills/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:#E0E0FF
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:#E0E0FF
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:#E0E0FF
graph 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——更美观易用的多渠道个人助手。



相关内容

如果这篇文章对你有帮助,欢迎请我喝杯咖啡 ☕
Cygnus Yang 支付宝支付宝
Cygnus Yang 微信微信