Gemini CLI vs Claude Code:跑完 28 个真实 Python 任务后,我挑出了 4 组值得讲的对比数据

52 阅读10分钟

做 Python 脚本大概写了六年,从最早的 cron + 一堆 .py,到后来 FastAPI / Playwright / Pandas 混着打,最近一年多把 AI 编码助手塞进每天的工作流里。我一直对"CLI 式 AI 编码助手到底哪家更适合 Python 任务"这件事拿不准——因为 demo 看不出差距,做选型靠感觉又常常被账单打脸

这周 Real Python 发了一篇《Gemini CLI vs Claude Code: Which to Choose for Python Tasks》,给了一个比较系统的对比框架。我按它的维度,把自己过去两个月攒的 28 个真实 Python 任务(不是 demo,不是算法题,是项目里真实提交过的改动)重跑了一遍,得到 4 组我觉得值得拿出来单独讲的数据。

先上结论(后面每条都展开):

  1. 一次性脚本的首轮交付时间,两者差距在 30% 以内,但分布形态不同
  2. 多文件重构的一轮通过率,差距接近 1.5 倍
  3. 单任务平均 token 账单差距约 1.4 倍,但计费口径不对称
  4. 上下文窗口实际可用容量标称值之间,有一条容易被忽视的分水岭

下面一条一条拆。


先把样本说清楚:28 个任务是什么

这类对比文最容易翻车的地方,是"样本不公开"。所以先把我的样本构成明摆在桌面上——数据洞察的前提是数据可核对。

任务类别任务数典型示例
一次性脚本12日志清洗、CSV 去重、批量重命名、一次性数据迁移
FastAPI 接口开发5新增业务 endpoint、Pydantic 模型、鉴权中间件
多文件重构5模块拆分、依赖倒置、类型标注补齐
定时任务 / 自动化3APScheduler 任务、Playwright 爬取
调试 / Bug 定位3异步死锁、Pandas SettingWithCopyWarning、依赖冲突

环境:macOS、Python 3.12、uv 管理依赖、同一仓库、同一分支策略。两个助手分别从各自的官方 CLI 入口调用,同一个 prompt 跑两遍,比较首轮产出(不做多轮纠偏)。

样本不完美的地方:28 个任务偏向我个人工作流(后端偏重、前端极少),如果你主要做 ML 训练脚本或 Jupyter 探索,这份数据的外推性需要打折。

接下来进入 4 组关键数据。


数据 ①:一次性脚本的首轮交付时间,差距 < 30%,但分布不同

一次性脚本是 Python 最常见的场景之一:写完即用,跑完即扔。

指标Gemini CLIClaude Code
中位首轮交付时间(n=12)~2.1 min~2.8 min
最短< 1 min~1.2 min
最长~4.6 min~5.1 min
首轮可直接运行比例10/1211/12

怎么读这张表

  • 中位值上 Gemini CLI 更快,原因我观察下来是它更早结束"计划阶段"直接动笔,对于"删 CSV 里重复行"这种明确任务非常合适
  • 但注意"首轮可直接运行比例"——Claude Code 虽然慢 30% 左右,首轮通过率略高(11/12 vs 10/12)
  • 最长那两个例子都是"要求脚本额外带 CLI 参数解析 + 日志",Claude Code 会主动补 argparselogging,Gemini CLI 常常只给最小实现

可量化的行动建议:如果你的一次性脚本里"写完丢进 cron 再也不改"的比例 > 60%,Gemini CLI 的分布更有利;如果一次性脚本经常第二天被别人捡去改,Claude Code 省下来的返工时间更值钱。

Real Python 原文在这一维度上的结论与本样本方向一致:Gemini CLI 在单文件、短任务上有节奏优势,Claude Code 在需要"完整可维护产物"的一次性脚本上更稳。


数据 ②:多文件重构的一轮通过率,差距接近 1.5 倍

这一组是我最关心的,因为多文件重构才是 AI 助手真正节省时间的场景——写一次性脚本本来也就 10 分钟。

指标Gemini CLIClaude Code
多文件重构一轮通过(n=5)3/55/5
首轮 mypy --strict 通过2/54/5
首轮单测全绿3/55/5
平均改动文件数4.25.6

几个容易被忽视的观察:

  • Claude Code 平均改动的文件数更多(5.6 vs 4.2),不是因为它瞎改,而是它更倾向于"顺手把 import 路径、__init__.py、相关测试一并更新"
  • Gemini CLI 在"只改主文件,忘了 __init__.py 或配套测试"这个反复出现的坑上栽了 2 次
  • 有一个反例:Gemini CLI 在一次"把同步函数改成 async"的重构里,比 Claude Code 早 40 秒给出可用版本——它没有做额外的调用方扫描,结果正好这个任务调用方只有一处

可量化的行动建议

  • 重构任务涉及 > 3 个文件、或涉及类型签名变动时,Claude Code 的一轮通过率优势会直接折算成你省下的"第二轮修复时间"
  • 如果团队内还在推 mypy --strict,这组数据值得单独贴到你们的工具选型文档里

数据 ③:单任务平均 token 账单,差距约 1.4 倍,但计费口径不对称

这一组我犹豫过要不要写,因为定价经常变动。但"token 成本"已经成为基础设施支出项,再绕不过去。

以我这 28 个任务为样本(本人账单口径,2026-04 采样):

指标Gemini CLIClaude Code
单任务平均 token 消耗较低基准约 1.4 × 基准
分布集中度标准差较大相对集中
成本最敏感任务类别多文件重构多文件重构

为什么不贴绝对数字:两个助手的计费口径不完全对称(是否计入工具调用、prompt cache 折扣规则、实际计入计费的输出 token 边界,都存在差异)。绝对数字贴出来容易被当成"定价对比",那是一篇单独的文章

更该关注的是这件事:

  • token 不是单独看的,要和数据 ② 的一轮通过率一起看
  • Claude Code 单次贵,但一轮通过率高 → 返工成本和上下文重建成本更低
  • Gemini CLI 单次便宜,但如果一个重构任务平均多跑 1.5 轮 → 总账单很可能反超

可量化的行动建议:用"月度实际账单 ÷ 月度成功交付任务数"算你的实际单任务成本,不要用官网贴的 token 单价估算。我自己的团队这样算完,两者的实际单任务成本差距从"看起来的 1.4 倍"压到了大约 1.1 倍。


数据 ④:上下文窗口的"标称值"和"实际可用容量"之间有一条分水岭

两边都号称"超大上下文"。但跑过真实项目你会知道——标称窗口和可用窗口是两回事

我在一个真实项目上做了粗糙测试:把一个 60k 行左右的 Python 仓库分三档喂进去(不同比例),观察"助手在回答里准确引用远端文件"的能力。

仓库投喂比例Gemini CLI 准确率Claude Code 准确率
~15%
~45%
~80%明显下滑
100%基本失效有降级但仍可用

要点

  • 两者都有"标称窗口远大于实际可用窗口"的特征,这不是哪家独有的问题
  • Claude Code 在投喂比例 45%~80% 段的下滑更平缓,这对中大型 Python 项目非常关键
  • 100% 投喂对两者都不现实——更值得投入的是做好分层索引、按需拉取的策略,而不是幻想"把整个仓库塞进去"

可量化的行动建议:如果你的项目 > 30k 行代码,不要依赖任何单一助手"把整个项目看进上下文"。把仓库拆成稳定底座 + 活跃模块两层喂给助手,成本和质量都更可控。这与 Real Python 原文里"优先喂关键文件而非整个仓库"的建议方向一致。


选型建议:按任务类型分,不要按品牌站队

把上面 4 组数据合起来,我会这样选:

  • 一次性脚本占 > 60% → 优先 Gemini CLI,节奏优势在总时间上能体现出来
  • 以多文件重构、类型系统、框架级改造为主 → 优先 Claude Code,一轮通过率的红利直接变现
  • 团队既有存量项目 > 30k 行 → 优先 Claude Code,上下文窗口的实际可用容量更抗压
  • 月度 AI token 账单已经成为显性预算 → 先算"单任务成本",再选
  • 刚入门、个人学习场景 → Gemini CLI 的学习曲线更平,Real Python 原文对这种读者也更友好

一个反直觉结论:两个助手的"平均质量差距"没有社交媒体上吹的那么大。真正拉开差距的是你的任务分布结构——这才是选型文档里应该写清楚的第一条。


FAQ

Q1:这套对比能外推到其他语言(Go、Rust、TS)吗?

结论性外推不建议。上面 4 组数据中,数据 ②(多文件重构)和数据 ④(上下文可用容量)与 Python 生态关联较弱,可以合理外推;数据 ①(一次性脚本节奏)和 Python 的"脚本语言属性"强相关,外推到 Rust 会明显失真。

Q2:一轮通过率这个指标怎么在团队里落地?

最简单的版本:在 PR 模板里加一行 "AI 辅助?Y/N;是否一轮通过?Y/N"。两周就能统计出你们实际的一轮通过率,拿到真实数据后再决定工具选型,比看任何博客都靠谱。

Q3:Gemini CLI 和 Claude Code 能共存吗?

能。我自己的工作流是:一次性脚本 + 快速探索用 Gemini CLI,多文件重构 + 长任务用 Claude Code。两者都认同"把文件粒度切小、把 prompt 写清楚"的习惯,所以切换成本很低。

Q4:为什么不把具体 token 单价贴出来?

因为两家定价都在动(prompt cache 折扣、工具调用计费规则会小步调整),把绝对数字写进文章,半年后就会误导读者。真正稳定的是"计费口径结构"和"按单任务成本评估"的方法论,这些我在数据 ③ 已经展开。

Q5:为什么样本只有 28 个?

因为这 28 个都是真实项目任务,不是我为了写文章专门构造的。构造样本很容易刷出好看的数字,但对选型没有参考价值。如果你想自己复测,不需要 28 个——从自己项目里挑 5 个最近提交过的真实任务,跑两遍就能看出差距


最后留一个开放问题

我很好奇一件事:你们团队有没有专门为 AI 助手编排任务粒度?比如把一个大的重构任务主动拆成"助手能一轮吃下"的小块,再人工把结果拼起来。

我最近在跑的一套流程是:大任务先人工分拆 → 每小块丢给最合适的助手 → 人工做集成和最后一英里。初步数据看起来比"直接把大任务丢给某一个助手"的总时间更短,但样本还不够。

欢迎在评论里贴你们的做法和数据,这块我觉得 2026 年值得单独写一篇更大的样本对比。