Skip to content

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 如何把权限、工具和多入口体验产品化”。