ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

Aider 实战:TaoToken 跑通 SWE-bench Verified 的 Python 修复任务

2026/9/20 22:56:03 拓冰建站 浏览量
Aider 实战:TaoToken 跑通 SWE-bench Verified 的 Python 修复任务 告别海外账号与网络限制稳定直连全球优质大模型限时半价接入中。 点击领取海量免费额度1. 先把任务说清楚用 Aider 修一个真实失败测试我这次想做的不是刷榜而是走一遍「失败测试 → 定位 → 打补丁 → 测试通过」的完整闭环顺便把 Token 消耗记下来。选 Aider 是因为它天生就是命令行里的结对编程工具能直接读写仓库文件、跑测试、生成 diff选 MiniMax M3 是因为它在代码修复类任务上指令跟随比较稳长上下文里不容易把无关文件改乱。SWE-bench Verified 是 SWE-bench 的一个经过人工筛选的子集题目来自真实 Python 开源仓库的 issue 和对应 PR评测方式是给模型一个仓库快照和一个失败测试看它能不能生成让测试通过的补丁。我不打算复现榜单分数因为那需要严格的容器环境和官方 harness本文不含排行分数。我要的是一个「风格类似」的小任务自己造一个带失败测试的 Python 仓库让 Aider 去修记录过程和消耗。适合谁看已经会用命令行、想试试 AI 改代码工作流的人想了解 Aider 兼容 OpenAI 接口怎么配的人以及想知道一次修复大概烧多少 Token 的人。整个过程你可以在本地复现不需要 GPU只需要一个能调模型的 Key。我试过把任务拆得太碎反而不好Aider 需要看到足够的上下文才能判断改哪里。所以下面这个仓库我故意留了一个「看起来简单但容易改错」的 bug让流程更接近真实修复。2. 造一个 SWE-bench 风格的失败任务先建仓库。这个例子模拟一个常见的边界条件 bug一个计算折扣价格的函数在数量为 0 时应该返回 0但当前实现会抛异常。mkdir -p swe-demo/src swe-demo/tests cd swe-demo git init写业务代码# src/pricing.py def apply_discount(price: float, quantity: int, rate: float) - float: if rate 0 or rate 1: raise ValueError(rate must be between 0 and 1) total price * quantity return total * (1 - rate)写测试# tests/test_pricing.py import pytest from src.pricing import apply_discount def test_normal_discount(): assert apply_discount(100, 2, 0.1) 180 def test_zero_quantity_returns_zero(): assert apply_discount(100, 0, 0.1) 0 def test_invalid_rate(): with pytest.raises(ValueError): apply_discount(100, 1, 1.5)跑一下测试确认失败python -m pytest tests/ -v你会看到test_zero_quantity_returns_zero失败因为100 * 0 * 0.9其实是 0等等——这里我故意让 bug 更隐蔽一点。把实现改成def apply_discount(price: float, quantity: int, rate: float) - float: if rate 0 or rate 1: raise ValueError(rate must be between 0 and 1) if quantity 0: return price total price * quantity return total * (1 - rate)这样quantity0时返回price而不是 0测试就会失败。这个 bug 的迷惑性在于它看起来像在处理边界但语义错了。Aider 需要读懂测试期望才能改对。提交初始状态git add . git commit -m initial: pricing with zero-quantity bug现在你有一个干净的失败基线。接下来让 Aider 介入。3. 在 TaoToken 拿 Key把 MiniMax M3 接进 AiderAider 支持 OpenAI 兼容接口所以只要有一个兼容的 base URL 和 Key就能把模型接进来。TaoToken 提供的就是这种兼容入口。第一步去官网创建 Key。打开 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 注册后在控制台里生成一个 API Key。建议单独建一个 Key 给这个项目用方便后面看消耗。第二步确认 API 地址。TaoToken 的 API 入口是 https://taotoken.net/api 注意这个地址不带查询参数配置时直接写它。第三步安装 Aiderpython -m pip install aider-install aider-install或者用 pipxpipx install aider-chat第四步配置环境变量。Aider 读OPENAI_API_KEY和OPENAI_API_BASE我们把它们指向 TaoTokenexport OPENAI_API_KEY你的TaoToken Key export OPENAI_API_BASEhttps://taotoken.net/api如果你不想污染全局环境可以写进项目里的.env然后启动时加载。Aider 也支持--openai-api-base参数效果一样。第五步指定模型。MiniMax M3 在 Aider 里可以用openai/前缀走兼容模式aider --model openai/MiniMax-M3 \ --openai-api-base https://taotoken.net/api \ --openai-api-key $OPENAI_API_KEY \ src/pricing.py tests/test_pricing.py启动后 Aider 会进入交互界面显示当前仓库文件和模型。你可以先用/ask问它「这个测试为什么失败」确认它读到了正确上下文。注意模型名要以 TaoToken 文档里列出的为准不同时间可用的标识可能调整。如果报模型不存在先去 https://taotoken.net/api-keys 确认 Key 状态再看文档里的模型列表。配置这一步的关键是 base URL 和模型名要匹配。很多人卡在 401 或 404通常是 Key 没生效或者模型名写错。Aider 的报错信息比较直接照着改就行。4. 让 Aider 跑修复命令、过程与 diff在 Aider 交互界面里我直接输入任务描述tests/test_pricing.py 里的 test_zero_quantity_returns_zero 失败了。 请修复 src/pricing.py让数量为 0 时返回 0同时不要破坏其他测试。Aider 会先读文件然后给出一个补丁建议。它可能会改apply_discount里的分支。确认后输入y应用。如果你想非交互式跑可以用--messageaider --model openai/MiniMax-M3 \ --openai-api-base https://taotoken.net/api \ --openai-api-key $OPENAI_API_KEY \ --message 修复 tests/test_pricing.py 中 test_zero_quantity_returns_zero 的失败只改 src/pricing.py \ src/pricing.py tests/test_pricing.py跑完后回到终端验证python -m pytest tests/ -v期望输出三个测试全部通过。如果还有失败把失败信息贴回 Aider 继续修。最终 diff 大概是这样--- a/src/pricing.py b/src/pricing.py -1,7 1,7 def apply_discount(price: float, quantity: int, rate: float) - float: if rate 0 or rate 1: raise ValueError(rate must be between 0 and 1) if quantity 0: - return price return 0 total price * quantity return total * (1 - rate)这个改动很小但 Aider 需要理解测试语义才能做对。如果它改成return price * 0也能过但可读性差一些。你可以用/diff查看当前改动用/undo回滚。Token 记录方面Aider 每次交互后会显示本次消耗。我整理了一张表阶段输入 Token输出 Token说明读取文件与测试约 1200约 80首次加载上下文生成补丁建议约 1500约 120包含推理应用后确认约 300约 40简短交互合计约 3000约 240单次修复实际数字会因仓库大小和对话轮次变化。如果测试没一次通过多轮对话会显著增加输入 Token因为每轮都要带上历史。5. 失败分支、成本与模型选择失败分支一Aider 改对了pricing.py但顺手改了测试。这在小仓库里常见因为模型想「让测试通过」而不是「修业务代码」。解决办法是在任务描述里明确「只改 src/pricing.py」或者用--read把测试设为只读参考。失败分支二模型名或 base URL 写错导致 401/404。先确认 Key 在 https://taotoken.net/api-keys 里是启用状态再核对 API 地址是否写成 https://taotoken.net/api 。Aider 的--openai-api-base不要带多余路径。失败分支三测试通过但语义不对。比如把quantity 0的分支删掉靠total 0自然返回 0这样也能过测试但丢掉了显式边界处理。这类补丁能过测试却不一定符合仓库风格需要你 review diff。成本方面这次修复消耗的 Token 在几千级别具体价格以官网为准。TaoToken 的计费和控制台用量可以在 https://taotoken.net/console 查看。如果你要跑大量任务建议用 Coding Plan 这类套餐来控制预算入口在 https://taotoken.net/coding-plan 。模型选择上MiniMax M3 在这个任务里表现稳定指令跟随和 diff 格式都正确。如果你换其他模型注意有些模型对 Aider 的 edit format 支持不同可能需要加--edit-format参数。Aider 官方文档里有各模型的推荐配置TaoToken 的接入文档在 https://taotoken.net/doc 也有兼容说明。最后一个小技巧跑修复前先git commit这样任何改动都能用git diff对比Aider 的/undo也更安全。修复完成后把 diff 和测试输出一起存档下次遇到类似 bug 可以直接参考。整个流程不需要复杂环境一台能跑 Python 的机器加一个 Key 就够了。 告别海外账号与网络限制稳定直连全球优质大模型限时半价接入中。 点击领取海量免费额度