OpenHands 实战:TaoToken 跑通一个 MCP Server 仓库的依赖修复与测试
2026/9/19 10:03:14 网站建设 项目流程

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

1. 任务目标与产物:让 OpenHands 在仓库级完成依赖修复

本文要做的不是“跑一个 demo”,而是让 OpenHands 在一个 Python 编写的 MCP Server 小仓库里,完成一次跨文件、跨层级的仓库级修复:同时改动依赖声明、入口文件和测试目录,最终让测试全绿,并记录三个可复现指标——首次通过率、往返轮数、整轮 Token 支出。

这个任务之所以适合用 Agent 来做,是因为它天然包含“读仓库 → 定位依赖冲突 → 改入口 → 改测试 → 跑测试 → 根据报错回改”的闭环。单靠一次补全很难完成,必须让 Agent 在工具调用中反复观察真实报错。

TaoToken 在这里的角色是默认供应商:你在 TaoToken 官网 创建 Key,把https://taotoken.net/api写进 OpenHands 的模型配置,模型设为 Kimi K2.7 Code,之后整轮任务都由这把 Key 供量。本文会给出可复制的配置片段、完整命令序列,以及每轮工具调用与 Token 支出的日志表。

需要先说明:本文不含排行分数,也不把 TaoToken 当作被评测对象;所有模型 ID、价格与可用性以 TaoToken 官网 与 接入文档 为准。

2. 环境准备与 OpenHands 操作步骤

2.1 仓库结构假设

我们用一个最小但完整的三层结构来复现:

mcp-server-demo/ ├── pyproject.toml # 依赖声明层 ├── src/ │ └── mcp_server/ │ └── main.py # 入口文件层 └── tests/ └── test_tools.py # 测试目录层

初始状态故意制造两个问题:pyproject.toml里依赖版本与入口文件实际 import 不匹配;tests/test_tools.py里断言的是旧接口签名。这样 Agent 必须同时改三处才能全绿。

2.2 安装 OpenHands 与启动

# 建议在独立虚拟环境中操作 python -m venv .venv source .venv/bin/activate # 安装 OpenHands(以官方当前发布方式为准) pip install openhands-ai # 进入仓库 cd mcp-server-demo # 启动 OpenHands,指定工作目录为当前仓库 openhands --workspace ./

如果你使用容器化运行,也可以按 OpenHands 官方文档用 Docker 启动,把仓库挂载进容器。关键点是:Agent 的工作目录必须是仓库根目录,否则它无法同时看到pyproject.tomlsrc/tests/

2.3 让 Agent 执行任务

在 OpenHands 的会话里输入任务描述,建议写得具体、可验证:

请在这个仓库内完成以下修复: 1. 检查 pyproject.toml 中的依赖声明,与 src/mcp_server/main.py 的实际 import 对齐; 2. 修正入口文件中因依赖版本变化导致的 API 调用错误; 3. 更新 tests/test_tools.py 中的断言,使其匹配修正后的接口; 4. 运行 pytest,直到全部测试通过; 5. 每完成一轮工具调用,输出本轮改动的文件和测试结果。

这里不要写“随便修一下”,否则 Agent 容易只改一处就宣布完成。仓库级任务的关键是把验收条件写死:测试全绿才算完成。

2.4 记录三个指标

在 OpenHands 运行过程中,你需要手动或通过日志记录:

指标定义记录方式
首次通过率第一次运行 pytest 时通过的用例数 / 总用例数从第一轮工具调用日志读取
往返轮数Agent 从开始到测试全绿之间的工具调用轮次统计 shell / edit 调用次数
整轮 Token 支出该任务消耗的 input + output token 总量从 TaoToken 控制台或响应 usage 字段读取

这三个指标不依赖任何排行榜,只依赖你自己的仓库和日志,因此可复现。

3. TaoToken 接入与 OpenHands 配置

3.1 创建 Key 与确认 API 地址

先在 TaoToken 官网 注册并创建 API Key。创建入口在 API Keys 页面。API 基地址使用:

https://taotoken.net/api

注意:API 地址不带 UTM 参数,配置时直接写上面这个。

3.2 OpenHands 模型配置

OpenHands 的模型配置通常通过环境变量或配置文件注入。以环境变量方式为例:

export OPENHANDS_LLM_PROVIDER="openai" export OPENHANDS_LLM_MODEL="Kimi K2.7 Code" export OPENHANDS_LLM_API_KEY="YOUR_TAOTOKEN_API_KEY" export OPENHANDS_LLM_BASE_URL="https://taotoken.net/api"

如果你的 OpenHands 版本使用config.toml,则写成:

[llm] provider = "openai" model = "Kimi K2.7 Code" api_key = "YOUR_TAOTOKEN_API_KEY" base_url = "https://taotoken.net/api"

模型 ID 请以 TaoToken 模型对话页 当前展示为准。本文示例统一使用 Kimi K2.7 Code,因为它在代码修复类任务上对工具调用的跟随较稳。

3.3 如果你同时用 Claude Code 或 Codex

有些读者会在同一台机器上混用多个 Agent 工具。此时注意配置隔离:

  • Claude Code:在settings.json中配置ANTHROPIC_BASE_URLANTHROPIC_API_KEY,指向 TaoToken 的兼容端点;
  • Codex:在config.toml中配置对应的 provider 与 base_url;
  • CC Switch:用三件套(provider / api_key / base_url)做切换,避免不同工具互相覆盖环境变量。

具体字段以 TaoToken 接入文档 为准。如果你在排障时遇到 401/404,优先检查 base_url 是否漏了/api或 Key 是否复制完整。

3.4 验证连通性

在正式跑任务前,先用一条最小请求确认 Key 可用:

curl -s https://taotoken.net/api/v1/chat/completions \ -H "Authorization: Bearer YOUR_TAOTOKEN_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "Kimi K2.7 Code", "messages": [{"role": "user", "content": "ping"}] }'

返回正常即说明 OpenHands 侧配置大概率也能通。

4. 可验证结果与失败分支

4.1 一轮典型日志表

下面是一次可复现运行的日志结构(数值为示例,实际以你本地为准):

轮次工具调用改动文件pytest 结果本轮 Token
1shell: pytest2 passed / 5 failed1,240
2edit: pyproject.toml依赖声明未跑980
3edit: main.py入口文件未跑1,150
4shell: pytest4 passed / 3 failed1,320
5edit: test_tools.py测试断言未跑1,010
6shell: pytest7 passed / 0 failed1,460

据此可算出:

  • 首次通过率:2 / 7 ≈ 28.6%
  • 往返轮数:6 轮
  • 整轮 Token 支出:约 7,160(示例值)

4.2 失败分支

如果 Agent 卡住,常见分支有三类:

  1. 依赖装不上pyproject.toml改完后没有重新安装,导致 import 仍失败。解决:在任务描述里要求 Agent 每改依赖后执行pip install -e .
  2. 测试断言改错方向:Agent 为了让测试通过而删断言。解决:在任务里明确“不得删除测试用例,只能修正断言以匹配正确接口”。
  3. Token 超限或 Key 失效:表现为请求中断。解决:到 TaoToken 控制台 检查额度与 Key 状态。

4.3 复现命令序列

# 1. 准备仓库 git clone <your-mcp-server-repo> cd mcp-server-demo # 2. 配置 TaoToken export OPENHANDS_LLM_BASE_URL="https://taotoken.net/api" export OPENHANDS_LLM_API_KEY="YOUR_TAOTOKEN_API_KEY" export OPENHANDS_LLM_MODEL="Kimi K2.7 Code" # 3. 启动 OpenHands openhands --workspace ./ # 4. 在会话中粘贴第 2.3 节的任务描述 # 5. 任务结束后本地复核 pytest -q

5. 限制、成本与模型选择

5.1 限制

  • OpenHands 的版本差异会影响配置字段名,本文以环境变量与config.toml两种常见方式为例,具体以你安装版本的文档为准。
  • 仓库级任务的 Token 支出与仓库大小、测试数量强相关,本文的日志表是结构示例,不是固定基准。
  • 本文不含排行分数,也不引用任何未标注来源的评测数字。如果你需要看公开榜单,请自行核对榜单名称、日期与页面来源。

5.2 成本

整轮 Token 支出取决于模型单价与轮数。TaoToken 的计费以 TaoToken 官网 展示为准;注意第三方榜单上的标价不等于 TaoToken 售价。控制成本的实用做法:

  • 把任务描述写清楚,减少 Agent 无效探索;
  • 先跑小测试集,再跑全量;
  • 在 TaoToken 控制台 设置额度提醒。

5.3 模型选择

代码修复类任务优先选工具调用稳定的模型。本文用 Kimi K2.7 Code 作为示例,是因为它在“读文件 → 改文件 → 跑命令 → 看报错”这个循环里跟随性较好。你也可以在 TaoToken 模型对话页 对比其他模型,按任务类型切换。

如果你打算长期做 Agent 开发,可以关注 Coding Plan;如果只是接入与排障,先看 API Keys 和 接入文档 即可。

最后提醒:本文的指标来自本地可复现日志,不是公开榜单成绩;模型可用性与价格请以 TaoToken 官网实时信息为准。

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

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

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

立即咨询