Architecture
Abstract
Coding Agent 的架构可以从三个层面理解:项目组织、入口设计和构建分发。
- Codex CLI 更像一个 Rust 原生系统工程项目,通过多 crate 拆分核心能力
- Claude Code 则更像一个产品化的闭源 Agent 应用,通过命令行、IDE、桌面应用等入口交付统一体验。
项目结构
Codex CLI
Codex CLI 是一个开源的 Rust Monorepo 项目,主体实现采用 Rust workspace 结构组织。其各项能力(如 CLI、TUI、核心 Agent 循环、协议、API 客户端、沙箱、MCP、文件搜索等)被拆分成多个相对独立的 crate,遵循内聚、解耦、易于协作与扩展的 Monorepo 工程模式。
codex/
├── codex-cli/ # npm wrapper,用于定位并启动原生二进制
│ └── bin/codex.js # 平台检测、二进制查找、信号转发
│
├── codex-rs/ # Rust workspace,Codex CLI 的主体实现
│ ├── cli/ # CLI 入口与子命令分发
│ ├── tui/ # 终端 TUI,交互式主界面
│ ├── exec/ # 非交互式执行模式
│ ├── core/ # Agent loop、session、工具调用、审批等核心逻辑
│ ├── app-server/ # 面向 IDE / App 集成的服务入口
│ ├── protocol/ # 协议类型、事件结构、提示词相关定义
│ ├── codex-api/ # OpenAI API 客户端
│ ├── sandboxing/ # 跨平台沙箱抽象
│ ├── linux-sandbox/ # Linux 沙箱相关实现
│ ├── execpolicy/ # 执行策略与审批规则
│ ├── file-search/ # 文件搜索能力
│ ├── shell-command/ # shell 命令解析与安全分析
│ ├── hooks/ # 生命周期 hook
│ ├── skills/ # skill 系统
│ ├── mcp-server/ # MCP server 实现
│ └── utils/ # 共享工具函数
关键设计
Codex 的拆分方式更接近系统软件:核心逻辑、协议、沙箱、执行策略、UI 和 API 客户端分别位于不同模块中。这样做的好处是边界清晰,Rust 类型系统和 crate 依赖关系可以帮助约束模块之间的耦合。
Claude Code
Claude Code 是闭源产品,不能像 Codex 一样直接从官方仓库确认内部目录结构。
Claude Code 源码泄露
2026 年 3 月底,Anthropic 的核心 AI 编程助手 Claude Code 超过 50 万行的完整 TypeScript 源代码在公共互联网上泄露, 因此可以从公开文档和社区分析中抽象它的高层架构。
claude-code/
├── CLI / TUI # 终端交互入口
├── IDE integrations # 编辑器集成入口
├── Desktop app # 桌面应用入口
├── Agent runtime # 对话、工具调用、上下文与任务执行
├── Tool system # 文件、搜索、命令、MCP、网络等工具能力
├── Permission system # allow / ask / deny 等权限控制
├── Settings & policy # 用户、项目和组织级配置
├── MCP integration # 外部工具与上下文扩展
└── Telemetry / update # 产品分析、更新与发布机制
关键设计
Claude Code 的重点不在公开模块边界,而在产品化集成:同一套 Agent 能力通过终端、IDE、桌面应用等入口提供,并围绕工具权限、设置策略、MCP 连接和更新机制形成完整的开发者体验。
入口设计
Codex:Multitool Binary
Codex CLI 采用 multitool 思路:一个 codex 命令提供多个子命令。默认进入交互式 TUI,也可以通过子命令进入非交互执行、review、MCP server、app server、sandbox 等模式。
codex -> 交互式 TUI
codex exec -> 非交互式执行
codex review -> 代码审查模式
codex mcp-server -> MCP server
codex app-server -> 面向 IDE / App 的服务入口
codex sandbox -> 在沙箱中运行命令
codex resume -> 恢复历史 session
codex fork -> fork 一个 session
codex login/logout -> 登录与登出
codex apply -> 应用 patch
统一易于扩展的入口设计
用户面对的是同一个二进制,IDE、自动化脚本、终端交互和后台服务可以复用同一套底层能力。
Claude Code:多入口产品体验
Claude Code 也提供 CLI,但它的产品形态不止终端。公开文档中可以看到它同时覆盖终端、IDE、桌面应用、MCP、headless / automation 等使用方式。
claude -> 终端交互入口
claude --print / -p -> 非交互输出,适合脚本和自动化
IDE integrations -> 在编辑器中使用 Agent 能力
Desktop app -> 桌面应用体验
MCP configuration -> 接入外部工具和上下文
settings / permissions -> 控制工具权限和运行策略
产品体验一致性
不同入口背后共享 Agent 能力,但用户可以根据工作流选择终端、编辑器或桌面应用。
构建与分发
| 维度 | Codex CLI | Claude Code |
|---|---|---|
| 构建形态 | Rust 原生二进制 | 官方分发的原生安装器 / 应用入口 |
| 主要入口 | codex CLI |
claude CLI、IDE、桌面应用 |
| 安装方式 | install script、npm、Homebrew、GitHub Releases | Native Installer、Homebrew、WinGet、npm、桌面应用 |
| 平台覆盖 | macOS、Linux、Windows 的多架构二进制 | macOS、Windows、Linux 发行版支持 |
| 运行依赖 | 原生二进制为主 | 原生安装方式不要求用户手动维护 Node/Bun 运行时 |
| 更新机制 | 依赖安装渠道和 release | Native Installer 支持自动更新,包管理器方式按渠道更新 |
Codex 的分发逻辑更贴近开源 CLI 工具:源码公开,Rust 构建出平台相关二进制,再通过 install script、npm、Homebrew 或 GitHub Releases 交付给用户。
Claude Code 的分发逻辑更贴近闭源开发者产品:官方推荐原生安装方式,并同时提供包管理器、桌面应用和编辑器入口。它优化的是安装、更新和跨入口体验,而不是公开内部模块边界。
架构取舍
| 维度 | Codex CLI | Claude Code |
|---|---|---|
| 模块边界 | 公开 Rust workspace,模块边界清晰 | 闭源实现,外部主要观察产品能力边界 |
| 扩展重点 | CLI、sandbox、MCP、IDE 服务等系统能力 | 工具权限、设置策略、IDE / Desktop / MCP 集成 |
| 工程风格 | 系统工程导向,强调可组合的底层能力 | 产品体验导向,强调多入口一致体验 |
| 适合分析的材料 | 官方仓库、源码、release、文档 | 官方文档、运行行为、社区研究 |
从架构角度看,Codex CLI 更适合研究“一个开源 Coding Agent 如何拆分核心运行时”;Claude Code 更适合研究“一个生产级闭源 Coding Agent 如何把权限、工具和多入口体验产品化”。