OpenHands 实战:TaoToken 跑通 FastAPI 仓库的 pytest 修复闭环
2026/9/19 10:27:25 网站建设 项目流程

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度

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.txt

requirements.txt里至少包含:

fastapi uvicorn pytest httpx

app/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 。
  • modelkimi-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,读取失败输出81296908
2读取 app/calc.py10431282079
3修改除零分支,返回 400app/calc.py11872143480
4重跑 pytest1264884832
5读取剩余失败用例13101026244
6修正返回值类型app/calc.py13981767818
7重跑 pytest,全绿1421749313

最终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 和接入文档两处,按需查阅即可。

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询