🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度
1. 任务定义:让 OpenHands 在 flask 仓库补全测试用例
本文的目标很具体:把 OpenHands 这个开源编码 Agent 接到 flask 仓库上,让它在tests/test_basic.py里补全缺失的测试用例,最后用pytest跑通。整个过程里,TaoToken 出现在两个关键节点——先在官网创建 API Key,再把 OpenHands 的模型供应商指向 TaoToken 的 API 端点,并切换到 GLM 5.3 Flash 模型。
如果你还没注册,可以先到 TaoToken 官网(https://taotoken.net/?utm_source=taotoken_aicg_blog_generate&utm_medium=csdn&utm_campaign=generate&utm_content=)创建账号并生成 Key。拿到 Key 之后,OpenHands 的配置只需要改一处模型供应商地址和模型 ID,剩下的交给 Agent 自己跑。
本文不涉及任何排行榜分数,也不对模型能力做主观排名。所有可验证的结果都来自本地实际执行:OpenHands 运行命令、配置文件片段、pytest 输出。模型和价格信息以 TaoToken 官网当前展示为准,本文只写配置方法。
2. 环境准备与 OpenHands 运行命令
OpenHands 官方推荐用 Docker 运行,这样依赖隔离干净,不会污染本机 Python 环境。先确认本机已安装 Docker,然后拉取 flask 仓库到本地工作目录。
# 克隆 flask 仓库 git clone https://github.com/pallets/flask.git cd flask # 确认当前测试文件状态 ls tests/ python -m pytest tests/test_basic.py -q第一次跑pytest时,你可能会看到部分用例通过、部分被 skip 或直接报缺失。这正是我们要让 OpenHands 补全的切入点。接下来启动 OpenHands 容器,把 flask 目录挂载进去。
# 拉取 OpenHands 运行时镜像(版本以官方 release 为准) docker pull docker.all-hands.dev/all-hands-ai/runtime:latest # 启动 OpenHands docker run -it --rm \ --pull=always \ -e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:latest \ -e LOG_ALL_EVENTS=true \ -v /var/run/docker.sock:/var/run/docker.sock \ -v ~/.openhands-state:/.openhands-state \ -p 3000:3000 \ --add-host host.docker.internal:host-gateway \ --name openhands-app \ docker.all-hands.dev/all-hands-ai/openhands:latest容器起来后,浏览器打开http://localhost:3000,进入 OpenHands 的 Web 界面。此时它还不会调用任何模型,因为模型供应商还没配置。下一步就是接入 TaoToken。
3. TaoToken 接入与 OpenHands 模型配置
OpenHands 的模型配置有两种方式:一种是在 Web 界面里填,另一种是直接改配置文件。为了可复现,这里给出配置文件片段。OpenHands 读取的配置目录是~/.openhands-state,对应容器内的/.openhands-state。
先在 TaoToken 官网创建 API Key。进入控制台后找到 API Keys 页面,新建一个 Key 并复制。注意 Key 只在创建时完整显示一次,务必先保存。
- 创建 Key 入口:TaoToken API Keys 页面(https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_generate&utm_medium=csdn&utm_campaign=generate&utm_content=)
- 接入文档参考:TaoToken 文档(https://taotoken.net/doc?utm_source=taotoken_aicg_blog_generate&utm_medium=csdn&utm_campaign=generate&utm_content=)
然后在宿主机上编辑 OpenHands 的配置文件。如果你用的是 Web 界面,可以在 Settings 里直接填;如果走配置文件,内容如下:
# ~/.openhands-state/config.toml [core] runtime = "docker" [llm] model = "glm-5.3-flash" api_key = "YOUR_TAOTOKEN_API_KEY" base_url = "https://taotoken.net/api"这里有两个关键点:base_url指向https://taotoken.net/api,model填glm-5.3-flash。TaoToken 的 API 端点兼容 OpenAI 风格的请求格式,OpenHands 的 LLM 层可以直接识别。如果你更习惯用环境变量,也可以这样:
export LLM_MODEL="glm-5.3-flash" export LLM_API_KEY="YOUR_TAOTOKEN_API_KEY" export LLM_BASE_URL="https://taotoken.net/api"配置完成后重启 OpenHands 容器,让配置生效。回到 Web 界面,在模型选择处应该能看到当前模型是glm-5.3-flash,供应商地址是 TaoToken。如果界面里还显示旧的模型,手动切换一次即可。
对于 Claude Code 用户,配置方式不同:需要在settings.json里设置ANTHROPIC_BASE_URL和ANTHROPIC_API_KEY,分别指向 TaoToken 的 API 和你的 Key。Codex 用户则改config.toml。如果你同时用多个工具,可以用 CC Switch 三件套统一管理供应商切换,避免每次手动改配置。
4. 让 OpenHands 补全测试用例并跑通 pytest
配置好模型后,在 OpenHands 的对话框里输入任务描述。描述要具体,包含文件路径、目标和验收标准。例如:
在 flask 仓库的 tests/test_basic.py 中,检查现有测试用例,补全缺失的边界用例。 要求: 1. 覆盖 app.route 的基本注册与访问 2. 覆盖 404 和 405 的返回 3. 补全后运行 python -m pytest tests/test_basic.py -q,确保全部通过 4. 不要修改 flask 源码,只改测试文件OpenHands 会先读取tests/test_basic.py,分析现有用例,然后生成补全代码并写入文件。它会在容器内执行pytest,把输出反馈到对话里。如果第一次没跑通,它会根据报错继续修改,直到通过或达到步数上限。
一个典型的成功输出如下:
$ python -m pytest tests/test_basic.py -q ........ [100%] 8 passed in 0.42s这里的8 passed是补全后的用例总数,具体数字取决于你仓库的初始状态和补全范围。关键是pytest退出码为 0,没有 failed 或 error。如果 OpenHands 报告某个用例失败,先看它给出的 traceback,再决定是让它继续修还是手动介入。
失败分支也要有预案。常见情况有三种:一是模型返回的代码语法错误,OpenHands 通常能自己发现并重试;二是测试逻辑与 flask 版本不匹配,需要你在任务描述里补充版本约束;三是 API Key 或 base_url 配错,导致模型请求直接 401 或连接超时。第三种情况不会进入代码生成阶段,OpenHands 会在日志里报 LLM 请求失败,此时回到第 3 步检查配置。
5. 限制、成本与模型选择
OpenHands 跑通 flask 测试补全这个任务,实际消耗的 token 取决于仓库大小、测试文件行数和 Agent 的迭代步数。flask 的tests/test_basic.py不算大,通常几轮对话就能完成。成本方面,TaoToken 按实际用量计费,具体单价和模型列表以官网当前展示为准,本文不写固定价格。
模型选择上,GLM 5.3 Flash 适合这类代码补全和测试生成任务,响应速度和上下文长度都能覆盖 flask 仓库的规模。如果你要处理更大的仓库或更复杂的重构,可以在 TaoToken 的模型列表里换用上下文更长的模型。切换方式就是改config.toml里的model字段,或者用 CC Switch 一键切换。
需要提醒的是,OpenHands 在容器内执行命令,涉及文件写入和进程启动,建议在隔离环境里跑,不要直接挂载生产代码。另外,Agent 生成的测试用例需要人工 review 后再合并,不能完全当作最终产物。TaoToken 在这里的角色是提供模型调用通道,Agent 的行为和输出质量仍取决于模型本身和你的任务描述。
如果你想把这条链路用到长期开发里,可以了解 TaoToken 的 Coding Plan(https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_generate&utm_medium=csdn&utm_campaign=generate&utm_content=),它更适合持续性的 Agent 编码场景。接入或排障过程中遇到问题,优先查接入文档,再对照 API Keys 页面确认 Key 状态。
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度