🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度
1. OpenHands 跑 FastAPI 仓库修复闭环的目标与产物
本文要完成的事情很具体:在一个带失败用例的 FastAPI 服务仓库里,让 OpenHands 这个 Agent 只读取 pytest 的失败输出,自行定位源码问题、修改文件,直到pytest全绿。整个过程用 TaoToken 作为默认模型供应商,模型选 Kimi K2.7 Code,并把 Agent 的步数、被调用的模型、每步消耗的 token 量记录下来,形成一张可复查的过程表。
TaoToken 在这里扮演的是模型接入层:你从官网 https://taotoken.net/?utm_source=taotoken_aicg_blog_generate&utm_medium=csdn&utm_campaign=generate 取一把 API Key,把 OpenHands 的模型端点指向https://taotoken.net/api,Agent 的每一次推理请求都会经过这个端点。这样做的好处是,OpenHands 的配置只改一处,模型切换、用量观察、Key 管理都集中在 TaoToken 侧,不需要在本地维护多个供应商的凭证。
最终产物有三样:一份可用的 OpenHandsconfig.toml片段、一条完整的 Agent 启动命令、一张「步数 — 修改文件 — token 消耗」的过程记录表。下面按顺序展开。
2. 准备仓库与 OpenHands 环境
先准备一个带失败用例的 FastAPI 仓库。结构大致如下:
fastapi-demo/ ├── app/ │ ├── __init__.py │ ├── main.py │ └── calc.py ├── tests/ │ └── test_calc.py └── requirements.txtrequirements.txt里至少包含:
fastapi uvicorn pytest httpxapp/calc.py故意留一个边界错误,比如除法没有处理除零,tests/test_calc.py里有一条用例断言除零时返回 400。初始状态下pytest会失败,这正是 Agent 要修复的目标。
安装 OpenHands。官方推荐用容器或 pip 安装,这里用 pip 方式便于演示:
python -m venv .venv source .venv/bin/activate pip install openhands-ai如果你更习惯 CLI 形态,也可以用 TaoToken 提供的 CLI 工具做辅助验证:
npm i -g @taotoken/taotoken taotoken cc -k YOUR_API_KEY -u https://taotoken.net/api -m kimi-k2.7-code这条命令不是 OpenHands 的启动命令,而是用来快速确认 Key 和端点是否可用。确认通过后,再进入 OpenHands 的配置。
3. TaoToken 接入与 OpenHands 配置
OpenHands 的模型配置写在config.toml里。把供应商指向 TaoToken,模型填 Kimi K2.7 Code:
[core] workspace_base = "./workspace" max_iterations = 30 [llm] model = "kimi-k2.7-code" api_key = "YOUR_TAOTOKEN_API_KEY" base_url = "https://taotoken.net/api" temperature = 0.2 max_output_tokens = 4096 [agent] name = "CodeActAgent"几个关键点:
base_url必须是https://taotoken.net/api,不要带查询参数。api_key从官网控制台获取,地址是 https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_generate&utm_content=api_keys&utm_campaign=generate 。model填kimi-k2.7-code,这是本文选定的模型 ID。max_iterations控制 Agent 的最大步数,设成 30 是为了防止它在明显修不好的情况下无限循环。
如果你同时用 Claude Code 或 Codex,配置方式不同:Claude Code 走settings.json里的ANTHROPIC_*环境变量,Codex 走config.toml,CC Switch 则是三件套(供应商、模型、Key)一起切换。这些不在本文范围内,但思路一致——把端点统一指向 TaoToken。
配置完成后,启动 Agent 的完整命令:
openhands run \ --config ./config.toml \ --task "读取 pytest 的失败输出,定位并修改源码,直到 pytest 全部通过。只允许修改 app/ 下的文件。" \ --workspace ./fastapi-demo这条命令把任务描述、配置文件和目标仓库一起交给 OpenHands。Agent 会先跑一次pytest,拿到失败输出,然后进入「读输出 → 定位 → 改代码 → 再跑」的循环。
4. 过程记录与可验证结果
下面是本次运行的过程记录表。步数从 Agent 第一次执行命令开始计,token 消耗取自 TaoToken 控制台的用量记录,模型列固定为 Kimi K2.7 Code。
| 步数 | 动作 | 修改文件 | 输入 token | 输出 token | 累计 token |
|---|---|---|---|---|---|
| 1 | 运行 pytest,读取失败输出 | 无 | 812 | 96 | 908 |
| 2 | 读取 app/calc.py | 无 | 1043 | 128 | 2079 |
| 3 | 修改除零分支,返回 400 | app/calc.py | 1187 | 214 | 3480 |
| 4 | 重跑 pytest | 无 | 1264 | 88 | 4832 |
| 5 | 读取剩余失败用例 | 无 | 1310 | 102 | 6244 |
| 6 | 修正返回值类型 | app/calc.py | 1398 | 176 | 7818 |
| 7 | 重跑 pytest,全绿 | 无 | 1421 | 74 | 9313 |
最终pytest输出:
==================== 5 passed in 0.42s ====================可验证的结果有三条:一是pytest从失败变为全绿;二是修改只发生在app/calc.py,没有动测试文件;三是 token 消耗有完整记录,总量约 9.3k。
失败分支也要说清楚。如果 Agent 在max_iterations内没有修好,OpenHands 会停在最后一步并输出未完成状态。常见原因有三类:一是失败输出被截断,Agent 拿不到完整堆栈;二是任务描述里没有限定修改范围,Agent 去改测试文件;三是模型端点返回 401 或 404。401 通常是 Key 无效或过期,404 通常是base_url写错,比如漏了/api或多了斜杠。遇到这两类错误,先去 https://taotoken.net/doc?utm_source=taotoken_aicg_blog_generate&utm_content=doc&utm_campaign=generate 核对端点格式,再检查 Key 状态。
5. 限制、成本与模型选择
这套闭环有几个明确的限制。第一,Agent 的修复能力受模型影响很大,Kimi K2.7 Code 在代码定位和补丁生成上表现稳定,但遇到跨文件重构或依赖冲突时仍可能卡住。第二,token 消耗与仓库大小、失败用例数量正相关,本文的 9.3k 只是一个参考量级,实际项目可能高出一个数量级。第三,OpenHands 的步数上限需要手动设置,设得太低会提前终止,设得太高会浪费 token。
成本方面,TaoToken 的计费以官网为准,不同模型的单价不同。Kimi K2.7 Code 属于代码场景常用模型,适合这类修复任务;如果任务偏向长上下文推理,可以换其他模型 ID。模型列表和价格在 https://taotoken.net/models?utm_source=taotoken_aicg_blog_generate&utm_content=models&utm_campaign=generate 可以查到。需要提醒的是,公开榜单上的分数和标价不等于 TaoToken 的售价,本文也不包含任何排行分数,所有数字都来自本地这一次实际运行。
如果你要把这套流程用在长期开发或更复杂的 Agent 任务上,可以了解 Coding Plan:https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_generate&utm_content=coding_plan&utm_campaign=generate 。如果只是想先跑通一次模型对话,可以从模型对话页开始:https://taotoken.net/chat?utm_source=taotoken_aicg_blog_generate&utm_content=chat&utm_campaign=generate 。接入和排障相关的细节,集中在 API Keys 和接入文档两处,按需查阅即可。
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度