ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

OpenHands 实战:TaoToken 跑通 FastAPI 仓库的 pytest 修复闭环

OpenHands 实战:TaoToken 跑通 FastAPI 仓库的 pytest 修复闭环 告别海外账号与网络限制稳定直连全球优质大模型限时半价接入中。 点击领取海量免费额度1. OpenHands 跑 FastAPI 仓库修复闭环的目标与产物本文要完成的事情很具体在一个带失败用例的 FastAPI 服务仓库里让 OpenHands 这个 Agent 只读取 pytest 的失败输出自行定位源码问题、修改文件直到pytest全绿。整个过程用 TaoToken 作为默认模型供应商模型选 Kimi K2.7 Code并把 Agent 的步数、被调用的模型、每步消耗的 token 量记录下来形成一张可复查的过程表。TaoToken 在这里扮演的是模型接入层你从官网 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_generateutm_mediumcsdnutm_campaigngenerate 取一把 API Key把 OpenHands 的模型端点指向https://taotoken.net/apiAgent 的每一次推理请求都会经过这个端点。这样做的好处是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_sourcetaotoken_aicg_blog_generateutm_contentapi_keysutm_campaigngenerate 。model填kimi-k2.7-code这是本文选定的模型 ID。max_iterations控制 Agent 的最大步数设成 30 是为了防止它在明显修不好的情况下无限循环。如果你同时用 Claude Code 或 Codex配置方式不同Claude Code 走settings.json里的ANTHROPIC_*环境变量Codex 走config.tomlCC 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累计 token1运行 pytest读取失败输出无812969082读取 app/calc.py无104312820793修改除零分支返回 400app/calc.py118721434804重跑 pytest无12648848325读取剩余失败用例无131010262446修正返回值类型app/calc.py139817678187重跑 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_sourcetaotoken_aicg_blog_generateutm_contentdocutm_campaigngenerate 核对端点格式再检查 Key 状态。5. 限制、成本与模型选择这套闭环有几个明确的限制。第一Agent 的修复能力受模型影响很大Kimi K2.7 Code 在代码定位和补丁生成上表现稳定但遇到跨文件重构或依赖冲突时仍可能卡住。第二token 消耗与仓库大小、失败用例数量正相关本文的 9.3k 只是一个参考量级实际项目可能高出一个数量级。第三OpenHands 的步数上限需要手动设置设得太低会提前终止设得太高会浪费 token。成本方面TaoToken 的计费以官网为准不同模型的单价不同。Kimi K2.7 Code 属于代码场景常用模型适合这类修复任务如果任务偏向长上下文推理可以换其他模型 ID。模型列表和价格在 https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_generateutm_contentmodelsutm_campaigngenerate 可以查到。需要提醒的是公开榜单上的分数和标价不等于 TaoToken 的售价本文也不包含任何排行分数所有数字都来自本地这一次实际运行。如果你要把这套流程用在长期开发或更复杂的 Agent 任务上可以了解 Coding Planhttps://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_generateutm_contentcoding_planutm_campaigngenerate 。如果只是想先跑通一次模型对话可以从模型对话页开始https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_generateutm_contentchatutm_campaigngenerate 。接入和排障相关的细节集中在 API Keys 和接入文档两处按需查阅即可。 告别海外账号与网络限制稳定直连全球优质大模型限时半价接入中。 点击领取海量免费额度
返回列表