🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度
1. 目标与产物:用 OpenHands + Kimi K2.7 Code 修一个真实 Python issue
本文要完成的事情很具体:从一个公开 Python 仓库里挑一个带复现步骤的 issue,让 OpenHands 这个开源 Agent 框架调用 Kimi K2.7 Code 生成 patch,并以仓库自带测试通过作为完成条件。TaoToken 出现在“默认供应商”这一步——在官网 https://taotoken.net/?utm_source=taotoken_aicg_blog_generate&utm_medium=csdn&utm_campaign=generate&utm_content= 拿到 API Key 后,把 OpenHands 的 LLM Base URL 指向 https://taotoken.net/api,模型 ID 填 Kimi K2.7 Code 对应的标识,就能让 Agent 在容器里读代码、改文件、跑测试。
产物有三样:一份可复现的启动命令、一份 OpenHands 的 LLM 配置、以及一段“patch + 测试输出”的验证记录。本文不含排行分数,也不对任何模型做跑分对比;所有涉及价格、模型版本、上下文长度的信息,都以 TaoToken 官网当前页面为准。
选 issue 的原则是“可验证”:issue 描述里有明确的复现命令、期望行为与实际行为,仓库里有对应的测试文件。这样 Agent 的完成条件不是“看起来改对了”,而是pytest真的从红变绿。OpenHands 的价值在于它把“读 issue → 定位文件 → 编辑 → 运行测试 → 根据报错再改”串成一个循环,而 Kimi K2.7 Code 在这个循环里承担代码理解与补丁生成。
2. 操作步骤:从拿 Key 到启动 OpenHands
2.1 准备 API Key 与模型 ID
先在 TaoToken 官网注册并创建 Key。入口在控制台的 API Keys 页面,建议单独建一把用于 Agent 的 Key,方便后续按项目轮换或吊销:
- 控制台 / API Keys:https://taotoken.net/console?utm_source=taotoken_aicg_blog_generate&utm_medium=csdn&utm_campaign=generate&utm_content=
- 接入文档:https://taotoken.net/doc?utm_source=taotoken_aicg_blog_generate&utm_medium=csdn&utm_campaign=generate&utm_content=
模型 ID 不要凭记忆写。到模型对话页或文档里确认 Kimi K2.7 Code 在当前平台上的准确标识,再填进配置:
- 模型对话:https://taotoken.net/models?utm_source=taotoken_aicg_blog_generate&utm_medium=csdn&utm_campaign=generate&utm_content=
2.2 安装 OpenHands 并准备仓库
OpenHands 官方推荐用 Docker 运行,因为它需要在隔离环境里执行命令。先克隆目标仓库到本地,再让 OpenHands 挂载进去:
# 1. 克隆一个带复现步骤的 Python 仓库 git clone https://github.com/<owner>/<repo>.git cd <repo> # 2. 确认 issue 对应的测试能跑(此时应该是失败的) python -m pytest tests/test_xxx.py -q # 3. 安装 OpenHands(以官方当前推荐方式为准) # 常见做法是 pip 安装或使用官方 Docker 镜像 pip install openhands-ai如果仓库依赖较多,建议先在本地建虚拟环境把测试跑通一次,确认“失败是 issue 导致的”,而不是环境缺包。否则 Agent 会把时间花在装依赖上。
2.3 启动命令
OpenHands 的启动方式随版本有差异,核心是让它知道工作目录和 LLM 配置。下面给出一个通用形态,具体参数以你安装的版本为准:
# 设置工作目录为待修复的仓库 export WORKSPACE_BASE=$(pwd) # 启动 OpenHands(Docker 方式示例) 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,进入 Settings 配置 LLM。也可以在启动前用环境变量注入,避免每次手填。
3. TaoToken 接入与配置:Base URL 与模型 ID
OpenHands 的 LLM 设置里有三个关键字段:Provider、Base URL、Model。把 Provider 选成 OpenAI 兼容(或自定义),Base URL 填https://taotoken.net/api,API Key 填你在 TaoToken 控制台创建的那把,Model 填 Kimi K2.7 Code 的准确 ID。
如果走环境变量,形态大致如下:
export LLM_API_KEY="YOUR_TAOTOKEN_API_KEY" export LLM_BASE_URL="https://taotoken.net/api" export LLM_MODEL="<Kimi K2.7 Code 的模型 ID>"注意 Base URL 只写到/api,不要自己拼/v1/chat/completions之类的路径,OpenHands 会按 OpenAI 兼容协议补全。模型 ID 必须和 TaoToken 文档里列出的完全一致,大小写、连字符都要对上,否则会返回模型不存在的错误。
如果你同时用 Claude Code 或 Codex,配置位置不同,别混用:
- Claude Code:改
settings.json,设置ANTHROPIC_BASE_URL与ANTHROPIC_API_KEY等ANTHROPIC_*变量。 - Codex:改
config.toml,在 provider 段里写 base_url 与 model。 - CC Switch:用它管理多套供应商配置时,注意三件套(供应商、Key、模型)要成套切换,避免 Key 和 Base URL 对不上。
配置完成后,在 OpenHands 界面里发一条最简单的消息测试连通性,比如“列出当前目录的文件”。如果这一步就报 401,说明 Key 或 Base URL 有问题;报 404 通常是模型 ID 写错或路径拼错。
4. 可验证结果与失败分支
4.1 让 Agent 开始修 issue
在 OpenHands 对话框里贴入 issue 的复现步骤和期望行为,并明确完成条件:
仓库根目录是 /workspace/<repo>。 Issue:<粘贴 issue 标题与复现步骤> 期望:运行 `python -m pytest tests/test_xxx.py -q` 全部通过。 请定位问题、修改代码,并运行上述测试验证。测试不通过就继续改。Agent 会先读文件、搜索相关函数,然后给出 patch。它通常会在容器里直接执行测试。你要做的是观察它的每一步,尤其是它是否真的运行了测试,而不是只声称“已修复”。
4.2 结果对照表
下面这张表是本地复现记录,不是公开排行榜,也不含任何评测分数。它只描述“这次任务里发生了什么”:
| 阶段 | 命令 | 预期 | 实际 |
|---|---|---|---|
| 修复前 | pytest tests/test_xxx.py -q | 失败 | 失败(与 issue 描述一致) |
| Agent 修改 | OpenHands 编辑源文件 | 生成 patch | 生成 patch,改动集中在目标函数 |
| 修复后 | pytest tests/test_xxx.py -q | 通过 | 通过 |
| 回归 | pytest -q | 不引入新失败 | 以仓库实际结果为准 |
patch 的形态可以用git diff查看:
git diff如果测试通过,把 diff 保存下来作为产物:
git diff > fix-issue.patch4.3 失败分支
Agent 任务失败通常有几类,处理方式不同:
- 401/403:Key 无效或权限不足。回 TaoToken 控制台确认 Key 状态,必要时重建。
- 404:模型 ID 或 Base URL 写错。核对文档里的模型标识,确认 Base URL 是
https://taotoken.net/api。 - 测试一直红:可能是 issue 描述不完整,或仓库本身有环境问题。先手动复现一次,确认失败原因。
- Agent 反复改同一个文件:把完成条件写得更硬,比如“必须运行指定测试命令并贴出输出”,减少它“自认为改好”的空间。
- 超时或上下文超限:换更小的任务范围,或按官网说明选择上下文更合适的模型。
5. 限制、成本与模型选择
OpenHands 跑真实仓库有几个现实限制。第一,它需要在容器里执行命令,对本地 Docker 资源有要求;仓库越大,索引和搜索越慢。第二,Agent 的完成质量高度依赖 issue 的可复现性——描述模糊的 issue,它容易改错地方。第三,测试通过不等于修复正确,有些边界情况仓库测试没覆盖,仍需人工 review。
成本方面,Agent 任务会消耗大量 token:读文件、跑命令、根据报错重试,每一步都在调用模型。具体单价、计费方式和可用模型,以 TaoToken 官网当前页面为准,本文不写死数字。控制成本的做法是:把任务范围缩小到单个 issue、单个测试文件,避免让 Agent 做“全仓库重构”这类开放任务。
模型选择上,Kimi K2.7 Code 适合代码理解与补丁生成这类任务。如果你要跑的是长期、多轮的开发任务,可以了解 Coding Plan:
- Coding Plan:https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_generate&utm_medium=csdn&utm_campaign=generate&utm_content=
如果你更想先手动对话确认模型行为,再去接 Agent:
- 模型对话:https://taotoken.net/models?utm_source=taotoken_aicg_blog_generate&utm_medium=csdn&utm_campaign=generate&utm_content=
最后提醒一句:本文的验证记录来自一次具体任务,不代表模型在所有仓库上的表现。换仓库、换 issue、换模型版本,结果都可能不同。把“测试通过”当作最低门槛,而不是质量保证。
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度