Claude Code 实战:TaoToken 跑通 Python 仓库测试修复
发布时间:2026/9/20 17:06:52 作者:尧图编辑部 阅读量:1,286

告别海外账号与网络限制稳定直连全球优质大模型限时半价接入中。 点击领取海量免费额度1. 先把目标定清楚让 Claude Code 在真实 Python 仓库里跑完一轮“失败到通过”这篇要解决的是一个很具体的问题你手上有一个 Python 仓库pytest跑起来有失败用例你想让 Claude Code 以 Agent 的方式自动定位、改代码、再跑测试直到通过并且把这一轮循环里的请求次数和 diff 规模记录下来。适合已经会用命令行、但对 Agent 工作流还不熟的人也适合想把 Claude Code 接进日常修 bug 流程的开发者。我试过把这件事拆成三个可验证的产物一份能复现的失败测试输出、一份修复后的通过输出、一份从失败到通过的完整命令轨迹。只要这三样都在就说明这个循环真的跑通了而不是“看起来改了点什么”。TaoToken 在这里的角色是默认供应商。你不需要在多个平台之间来回切注册后拿到 Key把 Claude Code 的 API Base URL 指向https://taotoken.net/api模型 ID 指定GLM 5.3 Flash剩下的交给 Claude Code 自己迭代。下面按“准备仓库 → 接入配置 → 跑循环 → 看结果”的顺序来。2. 准备一个会失败的 Python 仓库和 pytest 基线为了让过程可复现先造一个最小仓库。它只有一个模块和一个测试文件测试里故意留一个边界条件错误这样pytest一定失败。mkdir -p demo-repo/src demo-repo/tests cd demo-repo写一个简单的折扣计算模块# src/discount.py def apply_discount(price: float, percent: float) - float: percent 为 0-100 的折扣百分比返回折后价。 if percent 0 or percent 100: raise ValueError(percent must be between 0 and 100) return price - price * percent / 100再写测试其中一条用例覆盖 100% 折扣的边界# tests/test_discount.py import pytest from src.discount import apply_discount def test_normal_discount(): assert apply_discount(100, 20) 80 def test_full_discount(): assert apply_discount(100, 100) 0 def test_invalid_percent(): with pytest.raises(ValueError): apply_discount(100, 120)先跑一次基线确认失败python -m pytest -q你会看到类似输出版本不同行号可能略有差异.F. [100%] FAILURES _______________________________ test_full_discount _____________________________ def test_full_discount(): assert apply_discount(100, 100) 0 E assert 0.0 0 tests/test_discount.py:8: AssertionError short test summary info FAILED tests/test_discount.py::test_full_discount - assert 0.0 0 1 failed, 2 passed in 0.03s失败原因是浮点结果0.0和整数0比较。这个错误足够小适合观察 Agent 的修改范围又足够真实能触发“读测试 → 改实现或改断言 → 重跑”的完整循环。把这次输出存下来后面要和修复后的输出对照。3. 接入 TaoToken 并配置 Claude Code先去官网注册并创建 Keyhttps://taotoken.net/?utm_sourcetaotoken_aicg_blog_generateutm_content注册完成后进入控制台创建 API Key页面在这里https://taotoken.net/consoleKey 的管理入口在https://taotoken.net/api-keys拿到 Key 之后用环境变量注入不要写进代码仓库。Claude Code 读取的是 Anthropic 兼容的配置把 Base URL 指向 TaoToken 的 API 地址export ANTHROPIC_BASE_URLhttps://taotoken.net/api export ANTHROPIC_API_KEYsk-你的TaoToken密钥 export ANTHROPIC_MODELGLM 5.3 Flash如果你希望配置持久化可以写进 shell 的启动文件或者用 Claude Code 自己的配置文件。模型 ID 这里明确指定GLM 5.3 Flash它是这一轮循环里负责读代码、生成补丁、解释测试输出的模型。接入文档在https://taotoken.net/doc配置完成后先做一次最小连通性检查确认 Claude Code 能正常发起请求claude -p 用一句话说明当前目录下有哪些 Python 文件 --model GLM 5.3 Flash如果返回了文件列表说明 Base URL、Key、模型 ID 三件事都对上了。如果报 401优先检查 Key 是否复制完整如果报 404检查 Base URL 是否误加了路径后缀。TaoToken 的 API 地址就是https://taotoken.net/api不要自己拼/v1之类的后缀。4. 跑一轮仓库级测试修复循环并记录请求次数与 diff 规模现在进入核心环节。Claude Code 的 Agent 模式可以接受一个任务描述然后自己决定读哪些文件、改哪里、跑什么命令。我们给它一个明确的边界只修tests/test_discount.py里失败的用例不要动其他测试改完必须重跑pytest。启动方式claude --model GLM 5.3 Flash进入交互后输入任务当前仓库 pytest 有 1 个失败用例 test_full_discount。 请定位失败原因做最小修改让全部测试通过。 要求只允许修改 src/discount.py 或 tests/test_discount.py 每次修改后运行 python -m pytest -q 最后输出你执行的完整命令列表和 git diff --stat 的结果。Claude Code 会先读测试文件和实现文件然后给出判断。它可能选择改实现让返回值在 100% 折扣时是整数 0也可能选择改断言把 0改成 0.0。两种都能让测试通过但 diff 规模不同。为了记录请求次数可以在另一个终端观察 TaoToken 控制台的用量或者用 Claude Code 的会话统计。一次典型的命令轨迹如下# 1. 读取失败测试 python -m pytest -q # 2. 查看实现 cat src/discount.py # 3. 修改实现处理浮点边界 # Claude Code 内部编辑 src/discount.py # 4. 重跑测试 python -m pytest -q # 5. 查看改动规模 git diff --stat修复后pytest输出... [100%] 3 passed in 0.02sgit diff --stat输出src/discount.py | 2 - 1 file changed, 1 insertion(), 1 deletion(-)如果 Claude Code 选择改测试断言diff 会落在tests/test_discount.py规模同样是 1 行左右。两种结果都算通过但你要在记录里写清楚它改的是实现还是测试因为这影响你对 Agent 行为的判断。请求次数方面这一轮通常包含一次读测试、一次读实现、一次生成补丁、一次重跑验证合计 4 次左右的模型调用。具体数字以你控制台的实际用量为准不同仓库复杂度会拉高这个数。5. 失败分支、成本与模型选择失败分支要提前想好。第一种是 Agent 改完还是失败比如它只改了断言但没处理percent 100的异常路径这时pytest仍会报错。处理方式是追加一条指令“还有失败用例请继续不要回退已有修改。”第二种是它改了不该改的文件比如顺手格式化了整个模块导致 diff 膨胀到几十行。这时用git checkout -- 文件名回退再重新下任务把“只允许修改这两个文件”写得更死。第三种是请求超时或返回空补丁先确认模型 ID 拼写是否为GLM 5.3 Flash再确认 Base URL 没有多余路径。成本上这一轮循环的 token 消耗主要来自读文件上下文和生成补丁。仓库越大读进去的上下文越多单次请求成本越高。GLM 5.3 Flash适合这种“读多写少、需要快速迭代”的修复任务如果你的仓库有几百个测试文件建议先用pytest -q缩小到具体失败文件再让 Agent 介入避免它把整个仓库读一遍。模型和价格以官网为准不同时间可能有调整。最后给一个实用技巧把每一轮的pytest输出和git diff --stat追加到一个agent-log.md里格式固定为“任务描述 / 命令轨迹 / 修复前输出 / 修复后输出 / diff 规模”。跑上五六轮之后你会对“什么样的任务描述能让 Agent 一次改对”有手感这比任何教程都直接。 告别海外账号与网络限制稳定直连全球优质大模型限时半价接入中。 点击领取海量免费额度