🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度
1. 任务设定:同一份 Python 仓库、同一份失败清单、同一把 Key
这次横评的目标很明确:把「模型差异」这个变量彻底按住,只看 CLI 工具本身的差异。我们准备了一个中等规模的 Python 仓库,里面包含 5 个 failing test,分别覆盖边界条件、异常分支、类型转换和两个 mock 断言。两个 CLI——Aider 与 Codex CLI——都指向同一个模型:通义 Qwen3.8 Max,并且都通过 TaoToken 的 API 端点调用。
TaoToken 在这里的角色是对照基线:两边都填https://taotoken.net/api,都用从 TaoToken 官网 创建出来的同一把 Key。这样唯一变化的变量就只剩 CLI 本身。如果你还没拿到 Key,可以先到 API Keys 页面 生成,再回到本文按步骤操作。
产物是一张两列对照表,记录 token 消耗、改动文件数、测试通过数,以及两边可直接复制的启动命令。本文不含排行分数,所有数字都来自本地同一轮复现。
2. 环境准备与两边启动命令
先确认本地环境:Python 3.11、pytest 已装、仓库已 clone 到~/repo/pyfix-demo。两个 CLI 都通过 npm 全局安装,互不冲突。
Aider 的安装与启动:
python -m pip install aider-install aider-install # 或者用 pipx pipx install aider-chat # 启动:指定 OpenAI 兼容端点,指向 TaoToken export OPENAI_API_BASE=https://taotoken.net/api export OPENAI_API_KEY=YOUR_TAOTOKEN_KEY cd ~/repo/pyfix-demo aider --model openai/Qwen3.8-Max \ --openai-api-base https://taotoken.net/api \ --openai-api-key YOUR_TAOTOKEN_KEY \ tests/test_boundary.py tests/test_exceptions.py \ tests/test_types.py tests/test_mock_a.py tests/test_mock_b.py \ src/Codex CLI 的安装与启动:
npm i -g @openai/codex # 配置:写入 ~/.codex/config.toml mkdir -p ~/.codex cat > ~/.codex/config.toml <<'EOF' model = "Qwen3.8-Max" model_provider = "taotoken" [model_providers.taotoken] name = "TaoToken" base_url = "https://taotoken.net/api" env_key = "TAOTOKEN_API_KEY" wire_api = "chat" EOF export TAOTOKEN_API_KEY=YOUR_TAOTOKEN_KEY cd ~/repo/pyfix-demo codex exec "修复 tests/ 下 5 个 failing test,只改 src/,不要动测试文件"两边的 Key 完全一致,端点完全一致,模型 ID 完全一致。差异只来自 CLI 的上下文组织方式、文件选择策略和重试逻辑。
3. TaoToken 接入与配置要点
TaoToken 的接入方式对两个 CLI 都友好,因为它提供的是 OpenAI 兼容接口。Aider 走--openai-api-base,Codex CLI 走config.toml里的base_url。如果你用的是 Claude Code,配置方式不同:需要在settings.json里设置ANTHROPIC_BASE_URL和ANTHROPIC_API_KEY,指向 TaoToken 的 Anthropic 兼容端点。CC Switch 三件套(Claude Code、Codex、Aider)可以共用同一把 Key,切换时只改端点配置。
几个容易踩的点:
- Aider 的
--model前缀要写openai/,否则它会按 LiteLLM 的默认路由去找官方端点。 - Codex CLI 的
wire_api要设为chat,不要用responses,否则部分兼容层会返回 404。 - 环境变量名不要混用:Aider 读
OPENAI_API_KEY,Codex CLI 读你在config.toml里指定的env_key。 - 如果遇到 401,先检查 Key 是否带上了
Bearer前缀,再检查端点是否误写成了带 UTM 的官网地址而不是https://taotoken.net/api。
更多接入细节和排障步骤可以看 接入文档。如果你打算长期跑这类修复任务,Coding Plan 的额度模型比按次调用更划算。
4. 对照结果与失败分支
同一轮任务下,两边的表现如下。token 消耗取自 CLI 自带的 usage 输出,改动文件数取自git diff --stat,测试通过数取自pytest -q的最终结果。
| 指标 | Aider | Codex CLI |
|---|---|---|
| token 消耗(输入+输出) | 约 48,200 | 约 61,700 |
| 改动文件数 | 3 | 5 |
| 测试通过数(共 5) | 5 | 4 |
| 返工次数 | 0 | 1 |
Aider 的改动更集中,只碰了 3 个源文件就把 5 个测试全部修通;Codex CLI 改动了 5 个文件,其中两个是无关的格式化改动,导致一个 mock 断言被破坏,需要第二轮才修好。token 消耗上 Aider 少约 22%,主要因为它默认只把相关文件加入上下文,而 Codex CLI 的exec模式倾向于扫描更大范围。
失败分支也要记录:如果两边都跑不通,先确认pytest在修复前确实是 5 个失败,而不是环境问题导致的收集错误。如果 Aider 报Model not found,检查模型 ID 是否写成了Qwen3.8-Max而不是带供应商前缀的写法。如果 Codex CLI 报stream error,把wire_api从chat改成responses再试,反之亦然。这些分支不影响上面的对照结论,但会影响你复现时的体验。
5. 限制、成本与模型选择
这次横评的限制很明显:只跑了一轮,样本量为 1,不能推广成「Aider 一定比 Codex CLI 省 token」。不同仓库结构、不同失败类型、不同提示词都会改变结果。另外,Qwen3.8 Max 在 TaoToken 上的计费以官网为准,本文不引用任何第三方标价,也不把 AA 标价等同于 TaoToken 售价。如果你换成其他模型,token 消耗和改动策略都会变,建议以 模型对话页面 的实际计费为准。
模型选择上,Qwen3.8 Max 在代码修复任务里的表现比较稳,但如果你更在意长上下文下的文件定位,可以试试同系列的其他版本。CLI 方面,Aider 适合「精准改动、少碰无关文件」的场景,Codex CLI 适合「一次性给大范围指令、让它自己探索」的场景。两者都能通过 TaoToken 接入,Key 和端点复用,切换成本很低。
最后提醒:本文不含排行分数,所有数字都来自本地同一轮复现。如果你要复现,记得用同一把 Key、同一个端点、同一份失败清单,否则变量就不止一个了。
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度