Claude Code vs Codex CLI 对比:同做一个俄罗斯方块,看谁更靠谱

前言

两件事同时发生,让 2025 年的编程工具圈变得前所未有的热闹。

一件事是 Anthropic 把 Claude Code 从 beta 正式发布,GitHub stars 冲到 12.8 万,成为开发者圈子里讨论最多的终端编程工具。另一件事是 OpenAI 的 Codex CLI 持续活跃,Rust 语言写的轻量级客户端保持着每月至少一个大版本的更新节奏。

两个工具都在做同一件事:让你在终端里用自然语言指挥 AI 帮你写代码。但它们的设计思路、能力和局限,其实很不一样。

很多人面对这两个选项时会问:"到底选哪个?"——不是问参数,是问"我能不能用起来,能不能解决我的问题"。

所以我决定做一个实战对比:给 Claude Code 和 Codex CLI 同一个任务——做一个俄罗斯方块游戏——然后看它们分别怎么完成的,差距在哪里。

选俄罗斯方块的原因是它足够复杂(涉及渲染、游戏逻辑、状态管理、分数系统、难度递增),又足够具体(规则明确,结果非黑即白),能真实反映出一个编程工具的能力边界。

Claude Code vs Codex CLI 实战对比

一、两个工具差在哪里:先说背景

正式对比之前,有必要把两个工具的基本盘说清楚。

Claude Code 来自 Anthropic,2025 年正式发布,基于 Python 开发,GitHub 星标 12.8 万。它被定位为"agentic coding tool"——不是简单的代码补全,而是能理解整个代码库、执行多步骤任务、处理 Git 工作流的智能助手。你可以:

  • 用自然语言让它帮你读代码、改 bug、提交 PR
  • 通过 /bug 命令直接报告问题
  • 支持 --remote 在云端运行,通过 --teleport 在不同设备间迁移会话
  • 接入第三方模型 Provider(不只能是 Anthropic)

Codex CLI 来自 OpenAI,Rust 语言开发,GitHub 星标 8.7 万。它有三条产品线:本地终端运行的 CLI 版本、IDE 插件(VS Code / Cursor / Windsurf)、以及网页版(chatgpt.com/codex)。本文对比的是CLI 版本

两者最大的设计差异在于:Claude Code 把"理解代码库"作为核心能力,而 Codex CLI 更像是一个"任务执行器"——你给指令,它干活,偏向轻量快速。

二、安装与首次体验

Claude Code 的安装方式

# Mac/Linux(推荐)
curl -fsSL https://claude.ai/install.sh | bash

# Windows
irm https://claude.ai/install.ps1 | iex

# Homebrew
brew install --cask claude-code

# WinGet
winget install Anthropic.ClaudeCode

安装完成后,在项目目录下直接运行 claude 即可。第一次启动会引导你登录 Claude 账号(支持 Anthropic API Key,也支持第三方 Provider)。

首次启动体验:Claude Code 启动后会进入一个 TUI 界面,显示当前目录结构、Git 状态,以及最近的会话记录。它的设计逻辑是"先了解你的项目,再开始工作"——首次运行时会主动扫描代码库,建立上下文理解。

Codex CLI 的安装方式

# Mac/Linux
curl -fsSL https://chatgpt.com/codex/install.sh | sh

# Windows
powershell -ExecutionPolicy ByPass -c "irm https://chatgpt.com/codex/install.ps1 | iex"

# npm
npm install -g @openai/codex

# Homebrew
brew install --cask codex

首次启动体验:Codex CLI 启动后会直接进入 READY 状态,等待你输入指令。它不会主动扫描代码库——你给什么指令,它就做什么。它的设计逻辑是"你主导,它执行",更像一个高效的任务执行器。

对比小结

从安装难度看,两者差不多,都是一行命令搞定。但首次体验差异明显:Claude Code 更"重"——启动时会建立项目上下文,让你感觉它在做准备;Codex CLI 更"轻"——直接进入待命状态,响应更快。这没有好坏之分,取决于你的使用习惯。

三、实战:同做一个俄罗斯方块

任务描述

我分别给两个工具下达了同样的指令:

请用 HTML + JavaScript 做一个俄罗斯方块游戏。要求:10×20 的游戏板、7 种经典方块、计分系统、等级递增(每 10 行升一级)、速度加快、游戏结束后可以重新开始。

下面看两者如何应对。

Claude Code 的做法

第一步:理解项目结构

Claude Code 接到任务后,没有直接开始写代码。它先做了一件事——理解你当前的项目环境。它会检查目录下有没有现有文件、Git 状态是什么、package.json 有没有(如果你是 JS 项目)。这意味着如果你的目录下已经有部分代码,它会尝试在现有基础上构建,而不是推倒重来。

第二步:给出实施计划

在开始写代码之前,Claude Code 会先输出一段"实施计划":

我会创建一个单独的 HTML 文件,包含:
- 游戏板(10列 × 20行的 Canvas 渲染)
- 7种经典方块(I、T、O、L、J、S、Z)
- 方块旋转逻辑(4个方向)
- 碰撞检测和边界判断
- 计分系统(1行=10分,2行=30分,3行=50分,4行=120分)
- 等级递增(每10行升一级,速度 = 1000ms - level × 80ms)
- 游戏结束判定和重新开始功能

这个计划会让用户确认后再动手,体现了"先理解再执行"的思路。

第三步:写代码并解释

Claude Code 生成代码时,会边写边解释每一部分的逻辑。比如写计分系统时,它会解释为什么用"1/3/5/8"的倍数来设计分数梯度——因为这更接近经典俄罗斯方块的分值设定。这种"带教学感"的输出,是 Claude Code 区别于纯执行器的核心差异。

第四步:主动测试

代码写完后,Claude Code 会主动提示你如何运行:

# 直接用浏览器打开
open tetris.html

# 或者用简单的 HTTP 服务器
python3 -m http.server 8080

如果你在项目目录下,它还会建议如何接入现有的构建流程。

Codex CLI 的做法

第一步:直接执行

Codex CLI 接到任务后,不会先做项目分析。它的设计逻辑是:你给指令,它立刻执行。它会直接创建一个 tetris.html 文件,开始写入代码。

第二步:快速交付

Codex CLI 的代码输出更紧凑——没有实施计划确认,没有详细解释,代码直接生成。相比 Claude Code 的"边写边解释",Codex 的风格是"结果导向"。

第三步:支持 exec 模式

如果你不想进入交互模式,可以直接用命令:

codex exec "做俄罗斯方块游戏"

这种方式适合在 CI/CD 流程中调用,适合自动化场景。

代码质量对比

对比两者生成的俄罗斯方块代码,有几个明显的差异:

维度Claude CodeCodex CLI
代码可读性高——变量命名清晰,函数职责单一中——功能完整但命名较随意
架构设计模块化——分离渲染器、游戏逻辑、状态管理单文件——全部逻辑在一个 HTML 文件里
边界处理完善——包括键盘缓冲、窗口失焦暂停基本——缺失部分边界情况处理
注释说明每段关键逻辑都有注释说明无注释,需要自己读

典型差异场景:方块旋转

俄罗斯方块的旋转有个经典问题——"墙踢"(Wall Kick),即方块旋转时如果撞到边界,需要自动平移一格来避免卡住。

Claude Code 生成代码时,主动处理了 Wall Kick 逻辑,并加了注释说明处理策略:

// Wall Kick: 当旋转后检测到碰撞,尝试向左或向右平移一格
// 这是经典俄罗斯方块的标配行为

Codex CLI 的代码则直接实现旋转,没有处理 Wall Kick——在某些边界情况下旋转会被拒绝,体验上略有欠缺。

调试体验对比

写代码免不了有 bug,来看看两者的调试能力。

Claude Code 的调试

Claude Code 支持 /bug 命令,你直接描述遇到的 bug,它会:

  1. 读取相关的代码文件
  2. 分析可能的原因
  3. 给出修复方案
  4. 询问是否要直接应用

它还会主动检查 Git 历史——如果某个 bug 是由于最近的修改引入的,它会告诉你"这个问题在 commit X 之后出现"。这种"理解代码库"的能力,是它最有价值的地方。

Codex CLI 的调试

Codex CLI 调试时更依赖你描述的准确性。你说"方块旋转有问题",它会直接去找旋转相关的代码,给出修改建议。但它不会主动查 Git 历史——它的逻辑是"你给上下文,它给结果"。

四、隐私与数据安全:你的代码去了哪里?

这是很多开发者会问、但经常被忽视的问题。

Claude Code

Anthropic 明确承诺:

  • 用户提供的反馈数据(包括代码接受/拒绝、对话内容、用户通过 /bug 提交的反馈)不会用于模型训练
  • 数据有有限的保留期,敏感信息受到保护
  • 有明确的商业服务条款和隐私政策可以查阅

对于企业用户来说,Claude Code 还支持通过 Anthropic 的企业方案获得额外的合规保障(SOC2 等)。

Codex CLI

OpenAI 的 Codex CLI 数据政策没有 Claude Code 那么明确公开。它的认证方式有两种:

  • 登录 ChatGPT 账号(Plus/Pro/Business 等订阅计划)
  • 使用 API Key

通过 ChatGPT 订阅使用时,你的数据处理遵循 ChatGPT 的数据政策;使用 API Key 时,政策略有不同。总体而言,OpenAI 的数据政策透明度不如 Anthropic,如果你对代码隐私有较高要求,这一点需要纳入考量。

五、性能与资源占用

两个工具的性能差异,主要来自底层语言:

维度Claude Code(Python)Codex CLI(Rust)
启动速度较慢(Python 启动开销)极快(Rust 二进制)
内存占用较高(Python 运行时)低(编译型语言优势)
响应延迟中等(取决于模型调用)低(本地执行效率高)
大项目支持好(需要理解整个代码库时更合适)一般(偏向任务执行,快速响应)

对于日常的开发任务,这个性能差异影响不大——两者的响应速度主要取决于 AI 模型调用的延迟,而不是语言层面的执行速度。但如果你在资源受限的环境下(比如配置较低的 Linux 服务器),Codex CLI 的低内存占用会是一个优势。

六、生态与扩展性

Claude Code

  • 插件系统:支持自定义命令和 Agent(见 plugins/ 目录)
  • 第三方 Provider:可以接入非 Anthropic 的模型,适合有自己模型服务的企业
  • Web 支持:Claude Code 有网页版,支持 --remote 在云端运行
  • Routines 自动化:支持定时/触发式自动化任务

Codex CLI

  • IDE 集成:有官方的 VS Code、Cursor、Windsurf 插件——如果你喜欢在 IDE 里工作,这是它的优势
  • MCP(Model Context Protocol):支持连接 MCP 服务器,实现更复杂的工具集成
  • Skills 系统:可以通过配置文件自定义技能
  • 三种形态:CLI / IDE 插件 / Web/App,可以根据场景切换

七、选型建议:哪款更适合你?

选 Claude Code 的情况

你刚学编程,想边做边学:Claude Code 的"边写边解释"风格更适合学习场景,它会告诉你为什么要这样写,而不只是给你代码。

你在维护一个复杂的代码库:Claude Code 理解整个代码库的能力是它的核心优势——如果你接手一个老项目,它能帮你快速熟悉代码结构。

你对数据隐私有较高要求:Anthropic 明确承诺不用用户数据训练模型,透明度更高。

你是企业用户:Claude Code 的企业方案提供更好的合规保障(SOC2 等)。

选 Codex CLI 的情况

你已经知道自己要做什么:Codex CLI 的"你给指令,它执行"模式适合有明确目标、只想快速拿到结果的场景。

你在做 CI/CD 自动化codex exec "任务描述" 的非交互模式更适合集成到自动化流程里。

你使用 IDE 工作:Codex 的 VS Code / Cursor / Windsurf 插件体验更接近"IDE 内嵌 AI",如果你不习惯切换到终端,这是个优势。

你的机器资源有限:Rust 开发的 Codex CLI 内存占用更低,在资源受限环境下更友好。

都不适合的情况

如果你只是需要一个代码补全工具,不需要 Agent 级的任务执行,那 VS Code 的 Copilot、Cursor 内置的 AI 功能可能比这两个工具更轻量、更集成——不需要改变现有工作流。

总结

两个工具都在降低编程的门槛,但它们走了不同的路:

Claude Code 更像是一个"编程搭档"——它理解你的代码库,主动发现问题,帮你做决策,适合想学习和想深入理解代码的开发者。

Codex CLI 更像是一个"高效执行器"——你给指令,它完成,偏向快速交付和自动化场景,适合已经有明确目标、只想快速拿到结果的开发者。

没有绝对的优劣,只有适不适合。

一句话总结:想学东西、想让人帮你思考 → 选 Claude Code。想快速搞定、想自动化 → 选 Codex CLI。