三个工具我都买了付费版,都用了两个月以上,每天都写代码。这篇评测没有任何恰饭内容,全是真实体感——好就是好,坑就是坑。
先说结论放在前头:
- 日常编辑补全 → Cursor,没有对手
- 全项目级重构 → Claude Code,最稳
- 快速写脚本/原型 → Codex CLI,潜力巨大但还不够成熟
往下看,我用同一个项目、同一个需求给你拆清楚。
一、三个工具是做什么的?(先对齐认知)
很多人还在把这三个东西混为一谈,其实它们的定位完全不同。
| 维度 | Cursor | Claude Code | Codex CLI |
|---|---|---|---|
| 产品形态 | IDE 编辑器(VSCode 分支) | 终端 CLI 工具 | 终端 CLI 工具 |
| 开发商 | Cursor Inc. | Anthropic | OpenAI |
| 核心理念 | AI 副驾驶,辅助你写 | AI 工程师,替你干活 | AI 结对编程,对话式开发 |
| 底层模型 | 自研 + GPT-4o | Claude 4 Sonnet/Opus | GPT-5 |
| 上线时间 | 2023 | 2025(GA) | 2026 年初 |
| 我的使用时长 | 4 个月 | 3 个月 | 2 个月 |
最直观的比喻:
- Cursor = 你开车,AI 帮你换挡打方向
- Claude Code = 你坐副驾,AI 开车你导航
- Codex CLI = 你们俩谁坐驾驶位都行,随时换手
二、同一个项目,三个工具的表现
测试项目
我选了自己的 Hugo 工具站(navbox.com.cn),85 个在线工具,纯前端 + Go。这个项目有三件大事要做,刚好能测出三个工具的不同优势。
测试任务 1:写一个新的交互工具「文本差异对比器」
需求:做一个可以左右对比两段文本差异的在线工具,支持行对比和字符对比两种模式。
Cursor 表现:⭐⭐⭐⭐⭐
过程:打开 Cursor → Ctrl+N 新建文件 → Tab 补全写逻辑
→ Ctrl+K 描述 UI 需求 → 自动生成 React 组件
→ 微调样式用了 3 次对话
总耗时:约 25 分钟
Cursor 在「边写边改」的工作流里是神。Tab 补全快到我手指还没敲完就已经出现了。改样式尤其爽——光标停在 CSS 上,Ctrl+K 说「把主色调改成蓝色系」,它自动替换所有颜色变量。
Claude Code 表现:⭐⭐⭐⭐
$ claude → "给这个 Hugo 工具站加一个文本对比器工具"
→ 扫描项目结构(5秒)
→ 发现工具模板在 themes/ 里
→ 一次性生成了 index.html + 引用了已有 JS 库
→ 但样式风格跟站点主题不完全一致,需要手动微调
总耗时:约 18 分钟(含调整样式)
Claude Code 的强项是「一次性搞定骨架」——它理解整个项目的文件结构和代码风格。但它生成的 UI 细节有时候跟站点原有风格有细微出入,需要手动修一修。
Codex CLI 表现:⭐⭐⭐⭐
$ codex → "帮我写一个文本差异对比工具"
→ Codex 进入对话模式,问了 3 个问题:
① "用什么算法?LCS 还是 Myers?"
② "输出格式用行对比还是字符对比?"
③ "需不需要支持文件上传?"
→ 生成代码 + 自动测试
→ 一次通过
总耗时:约 20 分钟(含对话时间)
Codex CLI 的独特之处是它会反问你。这是好也是不好——好的是它不会盲目开干,不好的是有时候你只想让它「直接做」,它还要追问半天。可以通过 --no-ask 参数关掉追问模式。
测试任务 2:把全站所有 HTTP 请求从 fetch 换成 axios
这个任务最能测出「项目级理解能力」。
| 工具 | 能否一次完成 | 实际耗时 | 准确率 |
|---|---|---|---|
| Cursor | ❌ 需要逐文件操作 | 半天的活 | 手动检查没问题 |
| Claude Code | ✅ 一条指令 | 8 分钟 | 100% |
| Codex CLI | ✅ 一条指令 | 15 分钟 | 98%(漏了 1 个文件) |
Claude Code 胜出。 它扫描了所有 85 个工具页面的 JS,准确找出了所有使用 fetch 的地方并完成替换。只有一个文件的 try-catch 结构它调整得不太优雅,其他全对。
Codex CLI 也基本完成了,但漏了一个非标准格式的请求文件——因为那个文件用的是 async/await 的另一种写法,Codex 的代码搜索没有命中它。
Cursor 在这个任务上毫无优势——你需要手动打开每个文件来操作,80 多个文件一个一个来,效率差太远了。
测试任务 3:写一个 Python CLI 脚本「批量重命名文件」
# 需求:递归遍历目录,把文件名按规则重命名,支持 dry-run 预览
这个任务三个工具表现几乎一样好:
| 工具 | 代码行数 | 首次通过率 | 耗时 |
|---|---|---|---|
| Cursor | 64 行 | 90%(参数名有小笔误) | 4 分钟 |
| Claude Code | 72 行(含完整帮助文档) | 100% | 6 分钟 |
| Codex CLI | 68 行(含单元测试) | 95%(第一次导入错了库) | 5 分钟 |
写小型脚本类的任务,三个工具差距不大。Cursor 因为有自动补全所以打字最快,Claude Code 产出的代码最规范(类型注解 + docstring + 错误处理全齐),Codex CLI 会自动帮你写测试。
三、代码质量深度对比
我让三个工具写同一个功能:Markdown 文件批量处理工具——读取指定目录下的所有 .md 文件,提取 frontmatter 中的 title 和 tags,生成一个索引 JSON 文件。
Cursor 生成的代码
import os
import json
import frontmatter
def extract_frontmatter(directory):
result = {}
for fname in os.listdir(directory): # Bug: 不会递归遍历子目录
if fname.endswith('.md'):
with open(os.path.join(directory, fname)) as f:
post = frontmatter.load(f)
result[fname] = {
'title': post.get('title'), # 没有处理空值
'tags': post.get('tags', [])
}
with open('index.json', 'w') as f:
json.dump(result, f, indent=2)
代码简洁但功能偏弱——不会递归子目录、没有错误处理、硬编码输出路径。
Claude Code 生成的代码
#!/usr/bin/env python3
"""Extract title and tags from Markdown frontmatter across directories."""
import os
import json
import sys
from pathlib import Path
from typing import Dict, Any
try:
import frontmatter
except ImportError:
sys.exit("请先安装 python-frontmatter: pip install python-frontmatter")
def extract_frontmatter(root_dir: str) -> Dict[str, Dict[str, Any]]:
"""递归遍历目录,提取所有 .md 文件的 frontmatter。"""
result = {}
md_files = list(Path(root_dir).rglob("*.md")) # 递归遍历
if not md_files:
print(f"⚠️ 在 {root_dir} 下没有找到 .md 文件")
return result
for md_path in md_files:
try:
with open(md_path, 'r', encoding='utf-8') as f:
post = frontmatter.load(f)
title = post.get('title') or md_path.stem # 降级用文件名
tags = post.get('tags', [])
if isinstance(tags, str):
tags = [tags]
result[str(md_path.relative_to(root_dir))] = {
'title': title,
'tags': tags,
}
except Exception as e:
print(f"❌ 处理 {md_path.name} 时出错: {e}")
continue
return result
def main():
if len(sys.argv) < 2:
root = Path.cwd()
else:
root = Path(sys.argv[1])
if not root.is_dir():
sys.exit(f"错误: {root} 不是有效目录")
data = extract_frontmatter(str(root))
output = root / "index.json"
with open(output, 'w', encoding='utf-8') as f:
json.dump(data, f, indent=2, ensure_ascii=False)
print(f"✅ 已处理 {len(data)} 个文件 → {output}")
if __name__ == "__main__":
main()
代码完整度最高——递归目录、错误处理、友好的 CLI 参数、文件名降级、中文支持。这是可以直接丢进生产环境的代码。
Codex CLI 生成的代码
import os
import json
import yaml
import re
from pathlib import Path
def extract_frontmatter_md(filepath):
"""从 Markdown 文件中提取 YAML frontmatter"""
with open(filepath, 'r', encoding='utf-8') as f:
content = f.read()
match = re.match(r'^---\s*\n(.*?)\n---\s*\n', content, re.DOTALL)
if match:
try:
return yaml.safe_load(match.group(1))
except yaml.YAMLError:
return {}
return {}
def build_index(root_dir, output="index.json"):
data = {}
for md_file in Path(root_dir).rglob("*.md"):
fm = extract_frontmatter_md(md_file)
relative = str(md_file.relative_to(root_dir))
data[relative] = {
"title": fm.get("title", md_file.stem),
"tags": fm.get("tags", [])
}
with open(output, "w") as f:
json.dump(data, f, indent=2)
print(f"Indexed {len(data)} files to {output}")
if __name__ == "__main__":
import sys
root = sys.argv[1] if len(sys.argv) > 1 else "."
build_index(root)
Codex CLI 用了一个有趣的技术选型——它没有依赖 python-frontmatter 库,而是用 re + yaml 自行解析 frontmatter。好处是少一个依赖,坏处是正则解析不如专门的库稳定。代码质量介于 Cursor 和 Claude Code 之间。
代码质量总结
| 维度 | Cursor | Claude Code | Codex CLI |
|---|---|---|---|
| 安全性 | 没做 | ✅ 完整 | 基本做了 |
| 错误处理 | ❌ 无 | ✅ 完整 | ⚠️ 部分 |
| 类型注解 | ⚠️ 部分 | ✅ 完整 | ⚠️ 部分 |
| 文档字符串 | ❌ 无 | ✅ 完整 | ❌ 无 |
| 依赖管理 | ❌ 不处理 | ✅ 检查导入 | ✅ 自包含 |
| 中文化/国际化 | ❌ | ✅ 中英兼容 | ❌ |
Claude Code 的代码规范程度最高,适合需要长期维护的项目。Codex CLI 和 Cursor 适合快速迭代的原型阶段。
四、定价与真实成本
| 项目 | Cursor Pro | Claude Code | Codex CLI |
|---|---|---|---|
| 月费 | $20 | $20(Claude Pro) | $10(Codex Pro) |
| 我的月均花费 | $20 | $28-35(含 API) | $10 |
| 是否有限制 | 500 次/月快速补全 | 用量较宽松 | 无硬限制 |
| API 独立计费 | ❌ | ✅ 可开 API | ❌ |
Codex CLI 最便宜,但产品最早期、功能最少。Claude Code 最贵但也最稳。Cursor 价格居中。
按效费比算:
如果每天写代码 6 小时以上,三个工具全订阅也没多少钱(总共 $58-65/月),比不上半小时的时薪。我的建议是:
- 穷学生/个人项目 → Codex CLI($10 最便宜)
- 全职开发者 → Cursor + Claude Code($48-55)
- 不差钱都要 → 三个全订($58-65)
五、选购指南:你到底该用哪个?
选 Cursor,如果:
- ✅ 你主要在写业务代码、CRUD、接口
- ✅ 你离不开 VSCode 插件生态
- ✅ 你想要最丝滑的自动补全
- ✅ 你很少做跨文件重构
选 Claude Code,如果:
- ✅ 你经常做模块重构、依赖迁移
- ✅ 你在无 GUI 环境开发(SSH 远程)
- ✅ 你需要 AI 写生产级质量的代码
- ✅ 你愿意多花 $10-15 换取项目级理解
选 Codex CLI,如果:
- ✅ 你写原型、脚本、一次性任务多
- ✅ 你想要 AI 跟你「对话式」协作
- ✅ 你不想离开终端
- ✅ 预算有限但想体验最强模型
我的推荐组合(整天写代码的人):
Cursor(日常编辑)+ Claude Code(重活)+ Codex CLI(写小脚本)
三个工具加起来不到 $65/月。如果你不愿意花这钱,省下的时间可能价值几百倍。
六、2026年市场格局一览
| 排名 | 工具 | 综合评分 | 最适合场景 |
|---|---|---|---|
| 🥇 | Claude Code | 9/10 | 项目级开发、重构、CI/CD |
| 🥈 | Cursor | 8.5/10 | 日常编码、前端开发、快速迭代 |
| 🥉 | Codex CLI | 7.5/10 | 脚本、原型、一次性任务 |
| 4 | GitHub Copilot | 7/10 | 传统 IDE 场景(进步最慢) |
| 5 | Aider | 6.5/10 | 开源、定制化需求 |
GitHub Copilot 起步最早但现在进步最慢,已经被 Cursor 和 Claude Code 大幅超越。Aider 在开源社区很受欢迎但稳定性一般。Codex CLI 潜力最大,给它半年到一年时间成熟,很可能改写排名。
七、总结
三个工具没有绝对的「最好」,只有「最适合你的工作流」。
| 场景 | 推荐工具 |
|---|---|
| 写新函数、改样式、调 UI | Cursor |
| 重构模块、迁移依赖、搭项目骨架 | Claude Code |
| 写脚本、做原型、数据清洗 | Codex CLI |
| 全都要 | 三个都装,按场景切换 |
AI 编程工具迭代速度极快——2025 年初还没有 Codex CLI,2026 年初已经三强鼎立。这篇评测的结论大概率半年后就不准了,但看评测的方法对了就行:
不要看厂商吹了什么,要看工具在你日常项目里能干什么。
🔮 下篇预告: 上面提到 Aider 在开源圈很受欢迎,下一篇我会用这个 Hugo 工具站做实验,对比 Aider vs Claude Code 在小项目自动化维护场景下的表现——Aider 的 --auto-commits 模式和 Claude Code 的 --no-confirm 模式到底谁更靠谱?如果你也好奇,记得关注更新。