🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度
1. 目标与产物:让 Claude Code 在真实 Python 仓库里修掉分页越界
这篇文章记录一次完整的 Agent 实战:在一个带pytest的 Python 仓库里,修复分页参数越界导致的 2 个失败用例,并记录 Claude Code 到底改了哪些文件。目标很具体——不是演示“AI 能写代码”,而是跑通一条可复现的链路:先复现失败,再让 Agent 定位并修改,最后用测试日志和git diff证明修复有效。
工具选 Claude Code,模型用 MiniMax M3,接口走 TaoToken。TaoToken 在这里承担的是“拿 Key + 填接口地址”这一步:先到官网 https://taotoken.net/?utm_source=taotoken_aicg_blog_generate&utm_content=claude-code-pytest 创建 API Key,再把 Claude Code 的接口地址填成 https://taotoken.net/api。整条链路里,TaoToken 只做通道,不参与评测,也不改变模型本身的能力边界。
产物清单如下:
- 失败复现命令与原始报错;
- 给 Claude Code 的 prompt;
- Agent 修改后的
git diff摘要; - 测试通过日志;
- 一份可对照的失败分支排查表。
本文不含排行分数,也不引用任何公榜数据;所有结论都来自本地这次可复现的测试结果。
2. 操作步骤:复现失败、写 prompt、跑 Agent
2.1 环境与仓库准备
假设仓库结构如下,分页逻辑集中在pagination.py,测试在tests/test_pagination.py:
python -m venv .venv source .venv/bin/activate pip install -r requirements.txt pip install pytest先跑一次全量测试,确认基线:
pytest -q预期看到 2 个失败用例,报错大致是IndexError或AssertionError,指向分页参数越界。把完整报错保存下来,后面要贴给 Agent:
pytest -q 2>&1 | tee pytest_before.log2.2 失败复现命令
单独跑失败用例,缩小范围:
pytest tests/test_pagination.py -q如果只想看某个用例的详细堆栈:
pytest tests/test_pagination.py::test_page_beyond_last -vv这一步的目的是拿到“最小可复现输入”。Agent 再强,也需要一个明确的失败信号;否则它容易在无关文件里绕圈。
2.3 给 Claude Code 的 prompt
在仓库根目录启动 Claude Code,把下面这段 prompt 贴进去。注意:prompt 里只描述任务和约束,不替 Agent 写实现。
这是一个含 pytest 的 Python 仓库。当前有 2 个失败用例,原因是分页参数越界。 请完成: 1. 运行 pytest,定位失败用例与相关源码; 2. 修复分页参数越界问题,保持现有公开函数签名不变; 3. 不要改动测试文件来“绕过”失败; 4. 修复后重新运行 pytest,确认全部通过; 5. 最后输出 git diff --stat 和修改过的文件列表。 约束:只改必要文件;如果发现测试本身有误,先说明再决定是否调整。这段 prompt 的关键点有三个:限定“不改测试”、要求“重新跑测试”、要求“输出 diff 摘要”。这样 Agent 的产出是可验证的,而不是一段无法落地的建议。
2.4 Agent 执行过程与 git diff 摘要
Claude Code 接手后,典型动作序列是:读pagination.py、读测试文件、运行pytest、定位越界分支、修改边界判断、再跑测试。修复完成后,git diff --stat大致如下:
pagination.py | 12 +++++++----- tests/test_pagination.py | 0 1 file changed, 7 insertions(+), 5 deletions(-)也就是说,Agent 只改了pagination.py一个文件,测试文件未动。具体改动集中在分页边界计算:对page和page_size做了下限与上限校验,并在超出最后一页时返回空结果而不是抛异常。
git diff摘要可以这样记录:
git diff --stat git diff pagination.py如果 Agent 改了多个文件,--stat会直接列出来;这也是“记录 Agent 改了哪些文件”的最简方式。
2.5 测试通过日志
修复后重新运行:
pytest -q 2>&1 | tee pytest_after.log预期输出类似:
...... [100%] 6 passed in 0.42s到这里,2 个失败用例被修复,且没有引入新的失败。把pytest_before.log和pytest_after.log一起留存,就是这次 Agent 实战的完整证据链。
3. TaoToken 接入与配置:Claude Code 填接口地址
Claude Code 默认走 Anthropic 官方接口。要让它走 TaoToken,需要改配置文件,而不是在代码里硬编码。下面按 Claude Code 的配置方式说明。
3.1 创建 Key
先到 TaoToken 官网创建 API Key:
https://taotoken.net/?utm_source=taotoken_aicg_blog_generate&utm_content=claude-code-pytest
创建后拿到形如sk-...的 Key。这个 Key 只用于本地配置,不要提交到仓库。
3.2 配置 Claude Code 的 settings.json
Claude Code 通过settings.json读取环境变量。把接口地址指向 TaoToken 的 API 地址:
{ "env": { "ANTHROPIC_BASE_URL": "https://taotoken.net/api", "ANTHROPIC_API_KEY": "YOUR_API_KEY", "ANTHROPIC_MODEL": "MiniMax-M3" } }三个字段的含义:
ANTHROPIC_BASE_URL:接口地址,填https://taotoken.net/api;ANTHROPIC_API_KEY:在 TaoToken 创建的 Key;ANTHROPIC_MODEL:本次使用的模型 ID,按官网当前可用列表填写。
如果使用 CLI 方式,也可以直接带参数启动:
npm i -g @taotoken/taotoken taotoken cc -k YOUR_API_KEY -u https://taotoken.net/api -m MiniMax-M33.3 Codex 与 CC Switch 的配置差异
如果同一台机器上还用 Codex,它的配置在config.toml,字段名与 Claude Code 不同,需要单独写。CC Switch 这类切换工具通常管理“三件套”:接口地址、Key、模型 ID。切换时确认这三项一致,避免出现“Key 是新的、地址是旧的”这类低级问题。
配置完成后,可以用一个最小请求验证通道是否通:
curl -s https://taotoken.net/api/v1/models \ -H "Authorization: Bearer YOUR_API_KEY"能返回模型列表,说明 Key 与地址配置正确。若返回 401,优先检查 Key 是否复制完整;若返回 404,检查地址是否漏了/api或路径拼错。
4. 可验证结果与失败分支
4.1 可验证结果
本次实战的可验证结果有三项:
- 修复前
pytest -q有 2 个失败; - Agent 只修改了
pagination.py,测试文件未动; - 修复后
pytest -q显示全部通过。
把这三项写成对照表:
| 阶段 | 命令 | 结果 | 证据文件 |
|---|---|---|---|
| 修复前 | pytest -q | 2 failed | pytest_before.log |
| 修复后 | pytest -q | 6 passed | pytest_after.log |
| 变更范围 | git diff --stat | 仅pagination.py | git diff输出 |
这张表是本地复现结果,不是公榜分数。本文不含排行分数,也不把 TaoToken 当作被评测对象。
4.2 失败分支排查
Agent 实战里,失败往往不在模型,而在链路。常见分支如下:
| 现象 | 可能原因 | 处理 |
|---|---|---|
| 401 | Key 错误或未带 | 重新创建 Key,检查ANTHROPIC_API_KEY |
| 404 | 接口地址错误 | 确认填的是https://taotoken.net/api |
| 模型不存在 | 模型 ID 拼错 | 按官网当前列表核对模型 ID |
| 测试仍失败 | Agent 未改到根因 | 把失败日志重新贴给 Agent,要求先解释再改 |
| 改了测试文件 | prompt 约束不足 | 明确“不得修改测试来绕过失败” |
如果 Agent 反复在同一个文件里打转,可以把pytest -vv的完整堆栈贴回去,并要求它先输出“根因假设”,再动手改。这样能减少无效修改。
5. 限制、成本与模型选择
这次实战有几个明确限制。第一,仓库是本地示例,分页越界是相对可控的问题;更复杂的并发或数据一致性问题,Agent 需要更多上下文。第二,模型输出存在波动,同一 prompt 不同次执行可能改法不同,所以“测试通过”比“改法漂亮”更重要。第三,本文所有结论仅来自本地复现,不构成对任何模型的排名评价。
成本方面,按量计费时主要看 token 消耗。一次“读文件 + 跑测试 + 改代码 + 再跑测试”的循环,消耗量与仓库大小、失败日志长度直接相关。控制成本的做法是:先缩小失败范围,再让 Agent 介入;不要一上来就把整个仓库丢进去。
模型选择上,MiniMax M3 在本次任务里能完成定位与修改。如果任务更偏长上下文或更复杂的重构,可以按官网当前可用模型列表切换,并在ANTHROPIC_MODEL里改对应 ID。具体可用模型、价格与限制,以 TaoToken 官网为准:
https://taotoken.net/?utm_source=taotoken_aicg_blog_generate&utm_content=claude-code-pytest
需要查看接入文档或管理 Key,可以走这两个入口:
- API Keys:https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_generate&utm_content=claude-code-pytest&utm_campaign=generate
- 接入文档:https://taotoken.net/doc?utm_source=taotoken_aicg_blog_generate&utm_content=claude-code-pytest&utm_campaign=generate
如果是长期做 Agent 开发、需要反复跑这类修复循环,可以了解 Coding Plan:
https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_generate&utm_content=claude-code-pytest&utm_campaign=generate
只想先试模型对话,可以从模型对话入口进:
https://taotoken.net/?utm_source=taotoken_aicg_blog_generate&utm_content=claude-code-pytest&utm_campaign=generate
最后提醒一句:Agent 改完代码后,务必自己看一遍git diff。测试通过不等于改动合理,尤其是边界条件,人工复核仍然是必要环节。
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度