
告别海外账号与网络限制稳定直连全球优质大模型限时半价接入中。 点击领取海量免费额度1. 先把目标定清楚让 OpenHands 自己修一个真实仓库的 BugOpenHands 是一个开源的软件工程 Agent它能读仓库、定位问题、改代码、跑测试整个过程像一位远程结对程序员。SWE-bench 则是把真实 GitHub 项目里的 issue 和对应修复提交整理成评测集用来检验 Agent 能不能在仓库级别完成任务。把这两者接起来你就能得到一个可复现的「自动修 Bug」流水线给它一个 Python 仓库的 issue它输出 agent 运行日志、git diff 和测试命令。这篇面向已经会基本 Python 和 Git、但没深度折腾过 Agent 框架的读者。我会用一个 SWE-bench 里的 Python issue 作为样本把 OpenHands 接到 TaoToken 的 API 上让 Agent 自动改代码并跑通测试。TaoToken 在这里的角色是 API 供应商你先到官网创建 Key再把 Base URL 指向https://taotoken.net/apiOpenHands 就能通过它调用模型。整条链路的关键产物有三个——agent 运行日志、git diff、测试命令缺一个都不算跑通。需要提前说明SWE-bench 的完整评测集很大本地跑全量既费时也费钱。本文只取一个样本 issue 做端到端演示重点是把「接入—运行—验证」这条链路走通而不是刷榜。本文不含排行分数也不对任何模型做横向评测。2. 环境准备与 OpenHands 安装2.1 基础依赖我试过在 Ubuntu 22.04 和 macOS 上各跑一遍Python 版本建议 3.11 或 3.12。先确认基础工具python3 --version git --version docker --versionOpenHands 默认用 Docker 容器隔离运行环境所以 Docker 必须可用。如果你不想用容器模式也可以走本地模式但仓库依赖冲突的概率会高不少样本任务里我更推荐容器模式。2.2 安装 OpenHands官方推荐用 pip 安装到独立虚拟环境避免污染系统 Pythonpython3 -m venv openhands-env source openhands-env/bin/activate pip install --upgrade pip pip install openhands-ai装完后验证命令是否可用openhands --help如果这条命令能打印出参数列表说明 CLI 已经就位。接下来准备样本仓库。2.3 准备 SWE-bench 样本仓库SWE-bench 的样本通常包含三部分仓库快照、issue 描述、测试补丁。以 Python 项目为例你可以从 SWE-bench 数据集里取一条 instance把它的repo、base_commit、problem_statement拿出来。下面用一个通用流程演示具体仓库名以你手上的样本为准git clone 样本仓库地址 swe-sample cd swe-sample git checkout base_commit把 issue 描述保存成文件后面要作为任务输入喂给 Agentcat /tmp/issue.md EOF 把 problem_statement 原文粘贴到这里 EOF这一步别偷懒。issue 描述越完整Agent 定位问题的准确率越高。很多失败案例不是模型不行而是任务描述被截断或改写了。3. 在 TaoToken 创建 Key 并配置 OpenHands3.1 创建 API Key到 TaoToken 官网注册并创建 Key入口在这里https://taotoken.net/?utm_sourcetaotoken_aicg_blog_generateutm_mediumcsdnutm_campaigngenerateutm_content 。创建完成后把 Key 复制出来建议直接写进环境变量不要硬编码进脚本export TAOTOKEN_API_KEY你的Key3.2 配置 Base URL 与模型OpenHands 通过 LLM 配置读取供应商信息。核心是把 Base URL 设为https://taotoken.net/api并指定你要用的模型名。下面是一份可用的配置示例写入~/.openhands/config.toml或项目内的配置文件[llm] model claude-sonnet-4-20250514 api_key ${TAOTOKEN_API_KEY} base_url https://taotoken.net/api如果你更习惯用环境变量驱动也可以这样export LLM_MODELclaude-sonnet-4-20250514 export LLM_API_KEY$TAOTOKEN_API_KEY export LLM_BASE_URLhttps://taotoken.net/api注意模型名要以 TaoToken 官网当前提供的列表为准不同时间可选的模型会变化。写死一个过期的模型名最常见的报错就是 404 或 model not found。3.3 验证连通性在正式跑 Agent 之前先用一条最小请求确认 Key 和 Base URL 都对curl -s https://taotoken.net/api/v1/messages \ -H x-api-key: $TAOTOKEN_API_KEY \ -H anthropic-version: 2023-06-01 \ -H content-type: application/json \ -d { model: claude-sonnet-4-20250514, max_tokens: 64, messages: [{role: user, content: ping}] }返回里带content字段就说明链路通了。如果返回 401检查 Key 是否复制完整返回 404多半是模型名或路径不对。这一步花两分钟能省掉后面排查 Agent 日志的大量时间。4. 让 Agent 自动改代码并跑通测试4.1 启动 OpenHands 任务进入样本仓库目录把 issue 文件作为任务输入cd swe-sample openhands run \ --task-file /tmp/issue.md \ --workspace . \ --config ~/.openhands/config.tomlOpenHands 启动后会先扫描仓库结构然后进入「思考—行动—观察」循环读文件、改代码、执行命令、看输出再决定下一步。整个过程会实时打印到终端这就是我们要的 agent 运行日志。4.2 日志里该看什么日志里重点盯三类信息。第一类是文件定位看 Agent 有没有找到正确的模块第二类是编辑动作看它改了哪些行第三类是测试执行看它跑了什么命令、结果如何。下面是一段典型日志的节选结构[Agent] Reading repository structure... [Agent] Identified relevant file: src/module/handler.py [Action] EditFile: src/module/handler.py [Observation] File updated successfully [Action] RunCommand: pytest tests/test_handler.py -x [Observation] 1 passed, 0 failed如果日志停在「Reading repository structure」不动通常是模型响应超时或 Key 配额问题如果反复改同一个文件却不过测试说明任务描述可能不够具体需要补充复现步骤。4.3 拿到 git diffAgent 结束后在仓库里查看改动git diff一份合格的 diff 应该只动与 issue 相关的文件且改动量合理。如果 diff 里出现大量无关格式化或删除说明 Agent 跑偏了建议回滚重跑git checkout -- .4.4 复现测试命令把 Agent 跑过的测试命令单独拎出来在干净环境下再跑一遍确认不是「碰巧通过」pytest tests/test_handler.py -x -v这一步是验证的核心。Agent 说通过不算数你自己在终端里看到passed才算数。5. 可验证结果与常见失败分支5.1 成功时的三个产物跑通后你应该拿到一份完整的 agent 运行日志含文件定位、编辑、测试执行、一份聚焦的 git diff、一条可复现的测试命令。把这三样存下来就是一次可追溯的 Agent 实战记录。下面是一个结果对照表方便你自查产物合格标准常见问题agent 日志有定位、编辑、测试三段中途卡死或空转git diff只改相关文件混入无关改动测试命令本地可复现通过只在 Agent 环境通过5.2 失败分支与排查401 未授权Key 没读到或复制不全。检查echo $TAOTOKEN_API_KEY是否有值。404 模型不存在模型名写错或已下线。到 TaoToken 官网核对当前可用模型列表。测试超时样本仓库依赖多首次安装耗时长。可以先把依赖装好再让 Agent 跑或调大超时参数。Agent 空转任务描述太模糊。把 issue 里的复现步骤、期望行为、报错栈补全再重跑。diff 过大Agent 顺手重构了无关代码。回滚后在任务描述里明确「只修改与 issue 相关的文件」。提示接入和排障相关的文档入口在 https://taotoken.net/api-keys 和 https://taotoken.net/doc 遇到配置问题先查这两处比在日志里猜要快。6. 限制、成本与模型选择SWE-bench 样本的仓库规模差异很大小项目几分钟能跑完大项目光装依赖就可能十几分钟。Agent 的 token 消耗和任务复杂度强相关读的文件越多、循环轮次越多成本越高。所以本地演示建议只取单条样本别一上来就跑全量。模型选择上仓库级任务对长上下文和代码理解要求较高建议选上下文窗口足够大的模型。具体可选哪些、当前价格如何以 TaoToken 官网为准本文不写死价格也不做模型排行。如果你打算长期跑这类任务可以关注 Coding Plan 这类方案入口在 https://taotoken.net/coding-plan 按用量规划比单次调用更可控。最后给一个实用技巧把每次任务的 issue 描述、agent 日志、git diff、测试命令按样本 ID 归档。跑多了之后你会发现失败案例的日志比成功案例更有价值——它能告诉你 Agent 在什么类型的 issue 上容易跑偏下次写任务描述时就能提前规避。 告别海外账号与网络限制稳定直连全球优质大模型限时半价接入中。 点击领取海量免费额度