日报:模型端调试与 OpenHands 架构迁移 — 2026年2月13日


一、今日重点:模型端调试与架构迁移

今天主要集中在模型端测试与 OpenHands 架构重构。

在模型端方面,我重新配置了 Tool 加载逻辑,并与服务器评测端设置完成对齐,最终成功跑通完整流程。在当前配置下确认:

ToolCall 是必须启用的。

同时发现原使用的 OpenHands V1.0.0 架构存在结构性问题,不适合作为稳定评测基线,因此决定迁移至更稳定版本。


二、问题排查与修复

1. 工作流与旧文件整理

  • 清理历史遗留脚本
  • 整理旧版流程配置
  • 重构当前主流程结构

2. 卡死与 Timeout 问题修复

问题表现:

  • 推理阶段长时间卡死
  • Timeout 后未正确释放

修复措施:

  • 启用流式输出(stream=True)

效果:

  • 卡死问题明显改善

3. 评测端输出上限问题

发现评测端未设置最大输出限制,导致:

  • Token 堆积
  • 运行速度下降
  • 处理效率极低

后续需增加:

  • 最大生成 token 限制
  • 输出截断保护

4. Patch 匹配问题

在 SWE-bench Verified 评测中发现:

  • Patch 格式不匹配
  • ToolCall 格式异常导致解析失败

结论:

工具调用格式对 OpenHands 行为影响显著。


三、native_tool_calling 配置建议

对于 Qwen2.5-Coder-7B-Instruct + OpenHands + SWE-bench Verified:

建议显式设置:

native_tool_calling: true

原因:

  • 避免自动启发式判断(默认 None 不稳定)
  • 使用结构化工具格式
  • 提升模型工具调用稳定性
  • Qwen 系列支持原生工具调用

四、版本选择:迁移至 OpenHands v0.54.0

选择原因:

  • 数据生成版本为 v0.54.0
  • 固定评测版本保证一致性
  • v0.55.0 引入 security_risk 参数,增加复杂度

关键评测配置:

enable_history_truncation = false
enable_default_condenser = true
condenser.type = noop
enable_condensation_request = false

五、架构迁移完成

架构对比

项目原始新版 v0.54.0
包管理uvpoetry
推理方式swebench-inferrun_infer.sh
Docker手动 build自动 per-instance
LLM 配置jsonconfig.toml
评测swebench-evaleval_infer.sh

六、当前进展

✅ 架构迁移完成

✅ ToolCall 流程跑通

✅ 推理与评测链路打通

明日计划

在新架构中完整测试原始流程,验证是否能够稳定跑通 SWE-bench Verified 评测。