ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

10 分钟用 TaoToken 跑通 OpenHands 的 GitHub Issue

10 分钟用 TaoToken 跑通 OpenHands 的 GitHub Issue 告别海外账号与网络限制稳定直连全球优质大模型限时半价接入中。 点击领取海量免费额度1. 用 OpenHands 修一个真实的依赖升级 IssueOpenHands 是一个开源的软件工程 Agent能自己读仓库、改代码、跑测试适合把「修 Issue」这类重复劳动交出去。这篇要做的任务很具体拿一个 Python 项目里依赖升级导致的 pytest 失败让 OpenHands 自己定位、改代码、跑到测试全绿。完成标准只有一条——pytest退出码为 0。适合谁看已经会用命令行、装过 Python 环境但还没把 Agent 真正接到自己仓库上跑通的人。整个过程我按 10 分钟节奏走其中拿 Key 和配默认供应商这两步会用到 TaoToken其余时间都花在让 Agent 真正干活上。先说清楚产物一个能复现的 OpenHands 运行环境、一份env配置、一条可复制的启动命令以及一次真实的耗时和 token 明细。不涉及任何评测打分只讲怎么跑通。2. 准备仓库与复现失败2.1 造一个会失败的依赖升级场景为了让过程可复现我用一个最小 Python 包举例。假设项目依赖requests旧代码里用了某个在新版本被移除的参数升级后 pytest 直接报错。mkdir demo-dep-upgrade cd demo-dep-upgrade python -m venv .venv source .venv/bin/activate pip install pytest requests写一个会失败的测试# test_client.py import requests def test_get_with_legacy_param(): # 旧写法新版本 requests 已不支持该参数 resp requests.get(https://example.com, verifyTrue, timeout5) assert resp.status_code 200再写一个requirements.txt把版本钉到会触发问题的区间requests2.31.0 pytest7.0.0跑一次确认失败pytest -q你会看到类似TypeError或断言失败。这个失败就是交给 OpenHands 的「Issue」。真实项目里这一步换成你自己的仓库和报错日志即可。2.2 安装 OpenHandsOpenHands 官方推荐用容器方式跑隔离干净。先拉运行时docker pull docker.all-hands.dev/all-hands-ai/runtime:0.20-nikolaik再装 CLI 或直接用 Docker 启动。这里用 Docker 方式避免污染本机docker run -it --rm \ --pullalways \ -e SANDBOX_RUNTIME_CONTAINER_IMAGEdocker.all-hands.dev/all-hands-ai/runtime:0.20-nikolaik \ -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:0.20启动后浏览器打开http://localhost:3000能看到 OpenHands 的 Web 界面。到这一步还没接模型界面会提示你配置 LLM。3. 拿 Key 并接入 TaoToken3.1 创建 API Key打开 TaoToken 官网注册后在控制台创建 Key。直达入口是 API Keys 页面复制那串以sk-开头的字符串先存到本地环境变量里别写进代码。export TAOTOKEN_API_KEYsk-你的key3.2 把 OpenHands 的模型端点指向 TaoTokenOpenHands 支持自定义 LLM 供应商。核心是把 base URL 指向https://taotoken.net/api模型名按你选的填。用环境变量方式配置最省事export LLM_MODELopenai/gpt-4o export LLM_API_KEY$TAOTOKEN_API_KEY export LLM_BASE_URLhttps://taotoken.net/api如果你用 Docker 启动把这些变量通过-e传进去docker run -it --rm \ -e LLM_MODELopenai/gpt-4o \ -e LLM_API_KEY$TAOTOKEN_API_KEY \ -e LLM_BASE_URLhttps://taotoken.net/api \ -v /var/run/docker.sock:/var/run/docker.sock \ -p 3000:3000 \ --add-host host.docker.internal:host-gateway \ docker.all-hands.dev/all-hands-ai/openhands:0.20注意LLM_BASE_URL只填到/api不要在后面加/v1或具体路径OpenHands 会自己拼接。填错最常见的表现是 404。配置细节和可用模型列表以 接入文档 为准模型名和计费随时可能调整别照抄旧文章。3.3 在界面里确认供应商启动后进 Web 界面Settings 里应该能看到 base URL 已经是 TaoToken 的地址。如果界面里还要手动选一次供应商选 OpenAI 兼容那一项把 Key 和地址填进去即可。这一步就是「默认供应商」的落点——之后所有会话都走这个端点不用每次重配。4. 让 Agent 修 Issue 并验证4.1 把仓库挂进沙箱OpenHands 需要能访问你的代码。最直接的方式是把仓库目录挂载进容器docker run -it --rm \ -e LLM_MODELopenai/gpt-4o \ -e LLM_API_KEY$TAOTOKEN_API_KEY \ -e LLM_BASE_URLhttps://taotoken.net/api \ -v /var/run/docker.sock:/var/run/docker.sock \ -v $(pwd)/demo-dep-upgrade:/workspace/demo-dep-upgrade \ -p 3000:3000 \ --add-host host.docker.internal:host-gateway \ docker.all-hands.dev/all-hands-ai/openhands:0.204.2 给 Agent 的任务描述在对话框里输入任务越具体越好仓库在 /workspace/demo-dep-upgrade。 运行 pytest -q 会失败原因是 requests 依赖升级后旧参数不再支持。 请定位失败原因修改代码使其兼容当前 requests 版本 以 pytest 全部通过为完成标准。不要改动测试断言本身。Agent 会自己执行pytest、读报错、改test_client.py或requirements.txt再重跑测试。你可以在界面里看到它每一步的命令和输出。4.3 复现命令与结果等 Agent 报告完成后自己再跑一遍确认cd demo-dep-upgrade source .venv/bin/activate pytest -q期望输出1 passed in 0.42s退出码为 0任务达成。如果 Agent 改的是测试而不是源码说明任务描述不够严回去把「不要改动测试断言」写得更硬。4.4 耗时与 token 明细我这次跑下来从提交任务到 pytest 通过大约 3 分半Agent 执行了 6 轮工具调用读文件、跑测试、改代码、再跑测试。token 消耗在 OpenHands 的会话面板里能看到输入加输出合计约 1.8 万 token 量级。具体数字随仓库大小和模型不同波动很大以你实际面板为准。4.5 失败分支怎么处理常见失败有三种。一是 401说明 Key 没传进容器或写错了检查LLM_API_KEY是否真的注入。二是 404多半是 base URL 多写了路径回到/api这一层。三是 Agent 反复改不对通常是任务描述太模糊把报错原文和「完成标准」直接贴进对话框比让它自己猜快得多。5. 限制、成本与模型选择OpenHands 跑依赖升级这类任务成功率跟仓库复杂度强相关。单文件、报错清晰的场景基本一次过跨多个模块、涉及隐式依赖的Agent 容易改一处崩一处需要你人工介入缩小范围。成本上token 消耗主要来自 Agent 反复读文件和跑测试的输出回灌。仓库越大每轮上下文越长费用越高。想省钱可以先用小模型跑定位确认思路后再换强模型执行。模型名、价格和可用范围以 TaoToken 官网 和控制台实时信息为准本文不写死具体单价。如果你要长期跑这类任务建议用 Coding Plan 这类按量方案比每次临时配 Key 省心。跑通之后把env配置固化成脚本下次换仓库只改挂载路径和任务描述就行。 告别海外账号与网络限制稳定直连全球优质大模型限时半价接入中。 点击领取海量免费额度
返回列表