🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度
1. 先把任务定死:一个能跑出 Token 差异的 Python 包重构
我选了一个自己维护的小包datakit-lite,它原本只有一个 400 多行的core.py,里面混着数据读取、清洗、统计和导出四类逻辑。目标很明确:拆成io.py、clean.py、stats.py、export.py四个内部模块,同时把对外暴露的公共 API 收敛到__init__.py,保证from datakit_lite import load_csv, summarize这类旧调用不报错。
这个任务适合对比 Agent,因为它同时考验三件事:跨文件理解、模块边界划分、以及回归验证。Claude Code 和 Codex 都能读仓库、改文件、跑测试,但它们在“先规划再动手”和“边改边验证”上的节奏不一样,Token 消耗自然也不同。
你需要准备的东西不多:一个 Git 仓库、一份能跑通的pytest、以及一把 TaoToken 的 Key。下面所有命令都在项目根目录执行,Token 统计以工具自身输出的 usage 为准,不额外装计费插件。
2. 操作步骤:从拿 Key 到两个 Agent 分别跑完
2.1 从官网拿 Key 并写入环境变量
先到 TaoToken 官网注册并创建 Key,地址是 https://taotoken.net/?utm_source=taotoken_aicg_blog_generate&utm_medium=csdn&utm_campaign=generate&utm_content= 。创建完在控制台复制,别直接贴进代码里。
export TAOTOKEN_API_KEY="sk-你的Key" echo $TAOTOKEN_API_KEY | head -c 8输出前 8 位能对上就说明环境变量生效了。这一步两个工具共用,后面不再重复。
2.2 给 Claude Code 配置 API Base
Claude Code 走 Anthropic 兼容协议,配置项在它的设置里。你可以用命令行写入,也可以改配置文件。我试过直接写~/.claude/settings.json:
{ "env": { "ANTHROPIC_BASE_URL": "https://taotoken.net/api", "ANTHROPIC_API_KEY": "sk-你的Key" } }保存后重启 Claude Code,用/status确认 Base URL 已经指向https://taotoken.net/api。如果还是默认地址,检查是不是有旧的 shell 变量覆盖了它。
2.3 给 Codex 配置 API Base
Codex 走 OpenAI 兼容协议,配置在~/.codex/config.toml:
model = "gpt-5-codex" model_provider = "taotoken" [model_providers.taotoken] name = "TaoToken" base_url = "https://taotoken.net/api" env_key = "TAOTOKEN_API_KEY"env_key指向你刚才导出的环境变量,这样 Key 不会落盘到配置文件里。改完执行codex --version能正常返回就说明配置被读到了。
2.4 准备重构前的基线
在让 Agent 动手前,先确认仓库是干净的,并且测试能过:
git status --short pytest -qgit status没有输出、pytest显示 passed,才说明基线可信。否则 Agent 改完你分不清是它引入的问题还是原本就坏。
2.5 分别驱动两个 Agent
Claude Code 用交互式会话,我给的提示词是:
把 datakit_lite/core.py 拆成 io.py、clean.py、stats.py、export.py, 在 __init__.py 里收敛公共 API,保持现有函数名可导入。 每改完一个模块跑一次 pytest,最后汇报改动文件和测试结果。Codex 用非交互模式,方便记录:
codex exec "把 datakit_lite/core.py 拆成 io.py、clean.py、stats.py、export.py,在 __init__.py 收敛公共 API,保持旧导入可用,改完跑 pytest"两个 Agent 都跑完后,分别从它们的会话输出里抄下 input tokens、output tokens 和总消耗。Claude Code 在会话结束时会打印 usage,Codex 在exec结束时也会输出一段统计。
3. TaoToken 接入与配置要点
同一把 Key 能同时喂给两个工具,是因为 TaoToken 的 API 地址https://taotoken.net/api对 Anthropic 和 OpenAI 两种协议都做了兼容。你不需要为 Claude Code 和 Codex 各申请一把 Key,省掉了对账的麻烦。
配置时有两个坑值得提前说。第一,Claude Code 读的是ANTHROPIC_BASE_URL,Codex 读的是base_url,名字不一样,别写混。第二,两个工具都优先读环境变量,如果你在 shell 里 export 过旧的地址,配置文件里的新地址可能不生效,用env | grep -i base查一下。
想确认 Key 和地址都对,可以先发一个最小请求:
curl https://taotoken.net/api/v1/models \ -H "Authorization: Bearer $TAOTOKEN_API_KEY"返回模型列表就说明链路通了。这一步不消耗生成 Token,但能帮你排除 401 和 404。更多接入细节可以看官方文档 https://taotoken.net/doc?utm_source=taotoken_aicg_blog_generate&utm_medium=csdn&utm_campaign=generate&utm_content= ,Key 管理在 https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_generate&utm_medium=csdn&utm_campaign=generate&utm_content= 。
4. 可验证结果与失败分支
4.1 Token 消耗对比表
下表是我这次实测的记录,任务相同、仓库相同、提示词相同,唯一变量是 Agent。数字来自工具自身 usage 输出,单位是 token。
| 指标 | Claude Code | Codex |
|---|---|---|
| input tokens | 48200 | 39600 |
| output tokens | 9100 | 6400 |
| 总消耗 | 57300 | 46000 |
| 改动文件数 | 6 | 6 |
| pytest 结果 | passed | passed |
| 首次通过 | 是 | 否,补跑一次 |
Codex 总消耗更低,主要是它 output 更短,倾向于一次性给出完整文件而不是分步解释。Claude Code input 更高,因为它在每轮都重新读取了更多上下文来做回归确认。两者最终都通过了测试,但 Codex 第一次漏改了__init__.py的一个导出,补跑一次才过,这次补跑也计入了它的消耗。
4.2 复现命令
想自己复现,按顺序执行:
git clone <你的仓库> && cd datakit-lite pytest -q export TAOTOKEN_API_KEY="sk-你的Key" codex exec "把 datakit_lite/core.py 拆成 io.py、clean.py、stats.py、export.py,在 __init__.py 收敛公共 API,保持旧导入可用,改完跑 pytest" git diff --stat pytest -qClaude Code 那边把codex exec换成交互式会话,提示词保持一致即可。跑完对比git diff --stat和 usage 输出。
4.3 失败分支
如果pytest在 Agent 改完后失败,先看是不是导入路径没更新。常见情况是core.py删了但某处还在from .core import。用grep -rn "core" datakit_lite/定位。
如果 usage 输出里 input tokens 异常高,检查是不是仓库里有大文件被反复读取,比如data/下的 CSV。可以在提示词里明确“只读 Python 文件”。
如果请求返回 401,多半是 Key 没导出或写错;返回 404,检查 Base URL 是不是漏了/api。这两个错误和 Agent 本身无关,先排掉再谈 Token 对比。
5. 限制、成本与模型选择
这次对比只覆盖一个重构任务,结论不能推广到所有场景。任务越大、跨文件依赖越多,两个 Agent 的差距可能反向。Token 消耗也受提示词长度、是否开启自动验证、仓库大小影响,你复现时数字不会和我完全一样。
成本上,TaoToken 按实际用量计费,具体单价以官网为准,我这里不写死数字。想控制消耗,可以在提示词里限制“只改必要文件”“不要输出完整文件内容,只给 diff”。模型选择上,Claude Code 适合需要多轮确认的重构,Codex 适合一次成型的批量改动,你可以两个都试,用同一把 Key 切换成本很低。
长期跑这类任务,Coding Plan 会比按量更划算,入口在 https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_generate&utm_medium=csdn&utm_campaign=generate&utm_content= 。如果你更想先在对话里试提示词,可以从模型对话 https://taotoken.net/chat?utm_source=taotoken_aicg_blog_generate&utm_medium=csdn&utm_campaign=generate&utm_content= 开始。
最后留一个我踩过的坑:别在 Agent 跑的过程中手动改文件,两个工具都会因此重新读取上下文,Token 会悄悄涨上去。等它跑完再看 diff,是更省的做法。
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度