🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度
1. 目标与产物:让 Codex Agent 在 Python 仓库里把 pytest 修到全绿
这篇文章面向一个非常具体的场景:你手里有一个 Python 仓库,pytest 跑不过,失败栈里既有业务代码问题,也可能有测试本身的问题。你希望用 Codex Agent 来完成“读失败栈 → 定位源码 → 修改 → 重跑测试 → 直到全绿”的闭环,而不是自己一行行翻日志。
最终产物包括三样东西:
- 一段可以直接喂给 Codex Agent 的提示词,约束它的行为边界;
- 一串可复制的命令序列,覆盖环境准备、测试执行、Agent 调用;
- 一份 pytest 通过日志样例,作为“修复完成”的可验证证据。
TaoToken 在这里的角色是模型供应商入口:你在官网 https://taotoken.net/?utm_source=taotoken_aicg_blog_generate&utm_content=codex_pytest 注册拿到 API Key,然后把 Codex 的默认供应商指向 TaoToken 的 API 地址 https://taotoken.net/api,模型选择 DeepSeek V4.1 Flash。这样 Agent 的每一次读栈、改码、重跑,都走同一条稳定通道。
需要提前说明:本文不包含任何排行分数或评测跑分,所有结论以你本地仓库的实际 pytest 输出为准。模型能力、价格、可用模型列表请以 TaoToken 官网当前页面为准。
2. 操作步骤与命令序列:从失败栈到 Agent 接管
2.1 先让失败可见
进入仓库,确认依赖装好,然后跑一次完整测试,把失败信息落盘:
cd your-python-repo
python -m venv .venv
source .venv/bin/activate # Windows 用 .venv\Scripts\activate
pip install -r requirements.txt
pip install pytest
# 跑全量测试,保留详细输出
pytest -q --tb=long 2>&1 | tee pytest_before.log
pytest_before.log 是后面喂给 Agent 的核心输入。如果失败用例很多,可以先聚焦一个文件:
pytest tests/test_target.py -q --tb=long 2>&1 | tee pytest_before.log
2.2 准备 Codex Agent 的运行环境
Codex Agent 需要一个能读写仓库、执行命令的沙箱环境。推荐在仓库根目录启动,并确保 Agent 有权限执行 pytest。如果你用的是 CLI 形态,先安装:
npm i -g @taotoken/taotoken
安装完成后,用一行命令把 Codex 接到 TaoToken:
taotoken cc -k YOUR_API_KEY -u https://taotoken.net/api -m deepseek-v4.1-flash
其中 -k 是你在 TaoToken 控制台创建的 Key,-u 是 API 地址,-m 是模型 ID。模型 ID 请以官网模型列表为准,本文示例使用 DeepSeek V4.1 Flash。
2.3 给 Agent 的提示词
提示词的目标是“限制范围 + 明确验收标准”。可以直接复制下面这段:
你是一个 Python 仓库修复 Agent。当前工作目录是仓库根目录。
任务:
1. 读取 pytest_before.log,提取所有失败用例的断言信息和异常栈。
2. 对每个失败,判断是源码 bug 还是测试预期错误,并说明判断依据。
3. 只修改必要的源码或测试文件,不做无关重构,不删除测试用例来“绕过”失败。
4. 每次修改后重新运行 pytest,把新日志写入 pytest_after.log。
5. 重复直到 pytest 全部通过,或连续 3 次修改后仍无进展则停止并汇报。
约束:
- 不要修改 pytest.ini / pyproject.toml 中的测试发现规则。
- 不要跳过(skip)或标记 xfail 来掩盖失败。
- 每次修改前先用一句话说明你要改哪个文件、改什么、为什么。
- 最终输出:修改文件列表、每个失败的根因、最终 pytest 摘要行。
这段提示词的关键点在于:禁止“删测试”“加 skip”这类假修复,同时要求 Agent 解释根因,方便你复核。
2.4 命令序列总览
把上面的步骤串起来,完整序列如下:
# 1. 环境
cd your-python-repo
python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt pytest
# 2. 基线失败日志
pytest -q --tb=long 2>&1 | tee pytest_before.log
# 3. 安装并配置 Codex 到 TaoToken
npm i -g @taotoken/taotoken
taotoken cc -k YOUR_API_KEY -u https://taotoken.net/api -m deepseek-v4.1-flash
# 4. 启动 Agent(把 2.3 的提示词作为输入)
# 具体启动方式以你使用的 Codex Agent 客户端为准
# 5. 验证
pytest -q --tb=short 2>&1 | tee pytest_after.log
3. TaoToken 接入与配置:Codex、Claude Code 与 CC Switch
TaoToken 的接入本质是“把工具里的模型供应商地址换成 TaoToken 的 API 地址”。不同工具的配置文件不同,下面分别说明。
3.1 Codex 配置
Codex 使用 config.toml 管理供应商。典型配置如下:
model = "deepseek-v4.1-flash"
model_provider = "taotoken"
[model_providers.taotoken]
name = "TaoToken"
base_url = "https://taotoken.net/api"
env_key = "TAOTOKEN_API_KEY"
然后在环境变量里放入 Key:
export TAOTOKEN_API_KEY="YOUR_API_KEY"
配置文件位置通常在用户目录下的 .codex/config.toml,具体路径以 Codex 版本文档为准。改完后重启 Codex,让它重新读取配置。
3.2 Claude Code 配置
Claude Code 走的是 settings.json 加 ANTHROPIC_* 环境变量。示例:
{
"env": {
"ANTHROPIC_BASE_URL": "https://taotoken.net/api",
"ANTHROPIC_API_KEY": "YOUR_API_KEY",
"ANTHROPIC_MODEL": "deepseek-v4.1-flash"
}
}
如果你更习惯用环境变量直接注入:
export ANTHROPIC_BASE_URL="https://taotoken.net/api"
export ANTHROPIC_API_KEY="YOUR_API_KEY"
export ANTHROPIC_MODEL="deepseek-v4.1-flash"
ANTHROPIC_BASE_URL 指向 TaoToken 的 API 地址后,Claude Code 的请求就会走 TaoToken 通道。模型 ID 同样以官网为准。
3.3 CC Switch 三件套
如果你在多个供应商之间切换,可以用 CC Switch 管理“三件套”:供应商地址、API Key、模型 ID。把 TaoToken 作为其中一个 profile 保存:
- 供应商地址:
https://taotoken.net/api - API Key:在 TaoToken 控制台创建
- 模型 ID:
deepseek-v4.1-flash
切换 profile 后,Codex 和 Claude Code 会读取对应配置。这样你不需要每次手动改 config.toml 或 settings.json。
3.4 拿 Key 与文档入口
注册和创建 Key 的入口在官网 https://taotoken.net/?utm_source=taotoken_aicg_blog_generate&utm_content=codex_pytest 。创建后建议按用途命名,例如 codex-pytest-agent,方便后续排查。
接入过程中如果遇到 401 或 404,优先检查三件事:Key 是否复制完整、base_url 是否写成 https://taotoken.net/api、模型 ID 是否与官网列表一致。详细的接入说明和排障步骤可以看接入文档页面,API Key 管理在控制台的 API Keys 页面。
4. 可验证结果与失败分支
4.1 通过日志样例
修复完成后,pytest_after.log 应该出现类似下面的摘要:
============================= test session starts ==============================
platform linux -- Python 3.11.8, pytest-8.2.0, pluggy-1.5.0
rootdir: /home/user/your-python-repo
collected 42 items
tests/test_target.py .................... [ 47%]
tests/test_utils.py ...................... [100%]
============================== 42 passed in 3.87s ==============================
关键验收点是最后一行 42 passed,且没有 failed、error、skipped 异常增多。如果修复前有 5 个失败,修复后应该是 42 passed 而不是 37 passed, 5 skipped。
4.2 失败分支与处理
Agent 跑不通时,常见分支如下:
| 现象 | 可能原因 | 处理方式 |
|---|---|---|
| 401 Unauthorized | Key 错误或未注入环境变量 | 检查 TAOTOKEN_API_KEY / ANTHROPIC_API_KEY 是否生效 |
| 404 Not Found | base_url 写错或模型 ID 不存在 | 确认地址为 https://taotoken.net/api,模型 ID 查官网 |
| Agent 反复改同一文件 | 根因判断错误 | 在提示词里要求先输出根因再改码 |
| 测试通过但被 skip | Agent 用 skip 绕过 | 提示词已禁止,复核 diff 中是否有 @pytest.mark.skip |
| 依赖缺失导致 collection error | 环境未装全 | 先 pip install -r requirements.txt 再跑 |
如果 Agent 连续 3 次无进展,按提示词约定它会停止并汇报。这时你应该人工介入,把 pytest_before.log 中最后一个未解决的栈单独拿出来分析,而不是让 Agent 继续空转。
4.3 本地复现记录表
建议每次修复都留一张本地记录表,方便回溯:
| 轮次 | 修改文件 | 失败数 | 通过数 | 备注 |
|---|---|---|---|---|
| 基线 | 无 | 5 | 37 | pytest_before.log |
| 第 1 轮 | src/parser.py | 2 | 40 | 修复空值判断 |
| 第 2 轮 | tests/test_utils.py | 0 | 42 | 修正断言预期 |
这张表只反映你本地仓库的实际情况,不代表任何公开排行。本文不含排行分数,所有数字均来自本地 pytest 输出。
5. 限制、成本与模型选择
5.1 适用边界
Codex Agent 修 pytest 适合“失败原因在代码逻辑或测试断言”的场景。如果失败来自外部服务不可用、数据库连接、网络超时,Agent 改源码也修不好,需要你先补齐环境。另外,涉及并发、随机种子、时间依赖的 flaky 测试,Agent 可能一次跑绿、下次又红,建议先把这类测试隔离出来单独处理。
5.2 成本控制
Agent 的调用次数直接决定成本。控制手段有三个:
- 先用
pytest -q --tb=long把失败集中到一个文件,减少 Agent 的读栈范围; - 提示词里限制“只改必要文件”,避免大范围重构带来的多轮调用;
- 设置最大轮次(本文示例为 3 次无进展即停),防止无限循环。
具体计费方式和单价请以 TaoToken 官网当前页面为准。不同模型的输入输出价格不同,选择前先确认你的预算和任务复杂度。
5.3 模型选择建议
本文示例使用 DeepSeek V4.1 Flash,适合“读栈 + 小范围改码 + 重跑”这类中等复杂度任务。如果你的仓库很大、失败栈很长,可以考虑能力更强的模型;如果只是修几个断言,Flash 类模型通常够用。模型 ID、可用列表和价格都以官网为准,不要凭记忆填写。
5.4 安全与复核
Agent 改完代码后,务必人工看一遍 diff。重点检查:有没有删除测试、有没有加 skip/xfail、有没有改测试发现规则、有没有引入无关依赖。自动化能提速,但最终合并决定权在你手里。
如果你想把这条流程固化下来,可以把提示词存成仓库里的 AGENT_PROMPT.md,把命令序列写成 Makefile 目标,下次直接复用。TaoToken 的 Key 和模型配置建议放在环境变量或 CC Switch profile 里,不要硬编码进仓库。
需要继续深入时,可以从官网 https://taotoken.net/?utm_source=taotoken_aicg_blog_generate&utm_content=codex_pytest 进入控制台管理 Key,或查看接入文档了解 Codex、Claude Code 的完整配置项。模型对话、Coding Plan、API Keys 和文档页面都可以在官网导航中找到对应入口。
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度




被折叠的 条评论
为什么被折叠?



