我开源了一个 agent harness:同一颗 2B 模型,四个框架得分从 0.017 到 0.821

TL;DR :我开源了一个 agent harness:Mingbird(鸣鸟),Apache-2.0 协议,面向 Windows + Ollama 上的 2~9B 本地模型。核心数据:同一颗 2B 模型,在三个现成开源框架中得分 0.017 / 0.246 / 0.271,在 Mingbird 中为 0.821,相差 48 倍。题面、判分代码与 288 格原始分数全部公开。本文按四部分展开:问题定位、任务集设计、实验结果、机制分析。

一、问题定位:小模型在真实任务上的四种失败模式

在本地跑小模型做长任务,失败高度集中在四种模式上:

  1. 工具 prefill 挤占上下文:全部工具定义一次性注入,2B 模型 32K 窗口在开局就失去近半容量;
  2. 错误信息不回灌:harness 未将真实执行错误返回给模型,模型在错误假设上继续推理,原地打转;
  3. 工具调用死循环:同一条命令反复执行,没有机制判定"这一轮已经失效";
  4. 中途静默放弃:不报错、不交付、无任何输出,任务无声终止。

这四条都发生在模型能力边界之内,属于 harness 未接住的部分,也是本项目的改进对象。

二、任务集:基准考什么,为什么这样设计

现成的代码类基准(如 SWE-bench 一系)考的是"在大型仓库里修复 issue",那是开发者中一小部分人的工作形态;而多数人交给 AI 的是查资料写报告、清洗数据、修小脚本、做对比、写说明书这类事。要回答"本地小模型能不能干活",需要一套贴着这类真实工作出的题,所以任务集自建,并且全部公开。

任务集共 18 个,分四档,难度逐级上行,每档对应一层能力:找对信息、写出能跑的代码、串完多步流程、扛住长任务不断链。

档位 任务 需交付的产物 对应的真实场景
一档·检索提取 1 文献综述 综述报告 + 参考文献 + 数据表 论文文献综述、汇总一批转发材料
一档·检索提取 2 按审稿意见改稿 修订版 + 变更日志 改标书、改方案、按导师意见返工
二档·代码综合 3 为现有工具加功能 新功能 + 设计笔记 + 测试 在同事的脚本上加一个导出
二档·代码综合 4 定位并修复 bug 修复 + 测试通过 接手报错的存量脚本
二档·代码综合 5 数据清洗管道 干净数据表 + 校验报告 把脏表格洗成能用的数据
二档·代码综合 6 统计分析与出图 两张图 + 分析报告 周报月报里的数据分析部分
三档·多步流程 7 联网调研技术选型 对比矩阵 + 推荐 + 来源链接 纠结用哪个库,需要一张对比表
三档·多步流程 8 设计 API 与示例服务 接口文档 + 可运行示例 把需求落成接口约定
三档·多步流程 9 性能剖析与提速 优化后代码 + 加速报告 半小时的脚本想三分钟跑完
三档·多步流程 10 从源码写用户手册 用户手册 接手没有文档的老系统
三档·多步流程 11 竞品对比分析 对比矩阵 + 推荐 + 风险清单 产品与运营的月度功课
三档·多步流程 12 课程体系设计 考试蓝图 + 实验 + 资源清单 排课、设计培训大纲
三档·多步流程 13 隐私合规审计 修复代码 + 整改计划 检查代码里的信息泄露风险
三档·多步流程 14 发版规划 工作量估算 + 风险矩阵 + 缓解措施 项目排期
三档·多步流程 15 实验可复现性审计 审计报告 + 复现脚本 核对他人实验能否复现
四档·长链任务 16 依赖链交付 十几个文件连轴交付 一个项目的完整流水线
四档·长链任务 17 长上下文压力 不丢失前置要求的产物 长需求文档下仍记得开头约定
四档·长链任务 18 断点续跑 进程被杀后从断点续交 中途断电重启,工作不重来

判分规则只读最终产物,不看模型的自述:文件是否存在、内容是否包含关键项、代码能否编译、图片是否为有效文件、正文是否达到字数下限、测试是否通过,全部为确定性断言,重跑判分结果一致。里程碑产物与最终产物分开记录,做到一半停止的任务拿不到最终分。压轴的第 18 题是专门设计的:任务执行到一半杀掉进程,检验能否从断点恢复继续交付。本地长任务最怕中途断电断网,这是必须考的能力。

题目与判分标准由版本化的生成脚本产出并冻结,开跑之前就全部公开,不存在赛后调整的空间。

三、实验设计

维度 设置
harness 4 个:Mingbird(本项目)、goose、opencode、agent-mini(均原装,未打补丁)
模型 4 个开源模型:gemma4:e2b(2B) / qwen3.5:4b / gemma4:12b / ornith-1.5:35b
任务 上文 18 个任务
合计 4 × 4 × 18 = 288 格
环境 同一台 Windows 机器、相同时间预算
协议 温度 0、关闭思考,四臂统一

四、结果

模型 Mingbird goose opencode agent-mini
gemma4:e2b(2B) 0.821 0.271 0.017 0.246
qwen3.5:4b 0.876 0.801 0.465 0.706
gemma4:12b 0.906 0.772 0.539 0.576
ornith-1.5:35b 0.941 0.679 0.896 0.092

四臂总分:0.886 / 0.631 / 0.479 / 0.405。

结果的形状比均值更有信息量:2B 档三个对照框架集体失速,Mingbird 为 0.821,距其自身 35B 档成绩仅 0.12;到 35B 档各家追平、差距收窄。也就是说,harness 设计的收益集中在低配硬件那一档,而这正是本地部署用户实际所在的那一档。

由于每个档位只放一颗模型,存在档位与模型家族混淆的可能。因此在第二个家族(qwen3.5:2b)上重跑了整套矩阵共 72 格:0.779 对 0.239 / 0.096 / 0.017,断崖形状原样重现,数据同样公开。

五、机制分析

一个格子的前后对照。 同一任务(WF-08,即上表第 8 题)、同一颗 4B 模型,本项目 harness 的前后两个版本:

工具调用 产出文件 喂给模型的输入
修之前 156 次 0 个 ---
修之后 15 次 3 个 逐字节相同

模型、提示词、采样参数均未改动,改动的只有循环判定、完成检查与工具调用三处 harness 逻辑。这组对照可以说明:至少在这个格子上,差异完全来自 harness。

三个关键机制。

  • 完成门禁:接受模型的 "done" 之前,harness 重读任务原文并要求逐项核对交付物。小模型经常在交付一半时宣布完成,这是实测收益最大的一个机制。
  • 验证回灌:harness 代跑任务自带的检查,将真实失败(文件、行号、报错原文)作为工具结果回灌,使下一步推理从"实际坏在哪"开始,而非从"模型以为坏在哪"开始。
  • 签名级反循环:同签名调用重复、或连续 15 轮无产出即判定死循环,处置分两级:先升级提示,再硬复位。WF-08 的 156 次调用即由这条规则收敛。

另有一条不显眼但关键的工程约束:扁平 prefill。工具按类别按需装载,出厂 prefill 钉在 797 tokens,由单测约束,增加一个字节 CI 即失败。

外部基准复核。 τ²-bench(Sierra Research),三域均使用同一颗本地 qwen3.5:4b 作为 agent:

域 Mingbird 基准自带原生 agent opencode
retail(114 题) 0.763 0.675 0.588
airline(50 题) 0.740 0.740 0.500
telecom(114 题) 1.000 0.930 0.991

前沿模型对照。 将四个 harness 全部指向同一颗云端前沿模型(本地代理伪装成 Ollama 服务,四家代码零改动),跑同样 18 个任务:

harness 总分
Mingbird 0.997
goose 0.989
opencode 0.925
agent-mini 0.478

两个结论同时成立:一个有缺陷的 harness 可以埋掉前沿模型一半以上的实测能力;而当 harness 都过关时,三家差距只有 0.07,模型本身仍是更大的杠杆。

六、产品形态、本地与隐私

Mingbird 是一个 Windows 桌面应用,配合 Ollama 使用,内置 17 个任务技能(11 个编码向 + 6 个通用向:文件整理、联网调研、文档摘要、Word、Excel、图片批处理),语音输入为中英双语本地转写。安装包约 175MB,中英文双语。

全部推理跑在本地 Ollama 上:开箱不存在任何云端通路,无遥测、无账号、无更新检查;代码中不存在打包上传工作目录(含 .git 历史)的机制;一键断网后,联网类工具连"组装进提示词"这一步都不会发生,可用 netstat 自行验证。

七、局限性说明

单机、单次、每档一颗模型,本实验用于观察趋势,不构成统计学结论;消融实验的 delta 小于单格执行方差,因此相关表述只取方向性;主矩阵跑在冻结的 v1.5.0 代码上,不是当前发布的 v1.9.2。Mingbird 失利的格子同样在公开数据中。

八、复现与获取

  • 题面、判分代码、288 格 CSV、单格复现步骤(单机约 30 分钟):github.com/Mingbird/Mi...
  • 安装包(Windows 中英文 + Linux/macOS):github.com/Mingbird/Mi...
  • Apache-2.0;当前 v1.9.2,482 项测试(435 单测 + 26 集成 + 21 项 v1.9.1/v1.9.2 新增)

方法论问题(基线选取、协议设置、判分设计等)欢迎评论区讨论,包括质疑。

相关推荐
栈知见1 小时前
03-AgentScope核心概念全景:Agent / Message / Model 与 ReAct
agent
liulilittle1 小时前
短期内不存在通用 AI 工作流魔法
大数据·开发语言·c++·人工智能·llm·agent·tools
BenedictHook2 小时前
技能商店 SkillHub:Windows端 AI Skill 管理工具,支持搜索、查看与安装
c++·agent·桌面应用·skill·windows开发·skillhub
方方洛2 小时前
ai-agent教程-03-大模型接口与工具调用
人工智能·llm·agent
深蓝AI2 小时前
说完才转写已经过时了:微软 MAI-Transcribe-2-Streaming 把流式转录延迟压到 0.13 秒
人工智能·agent
方方洛2 小时前
ai-agent教程-00-前言与导读
人工智能·llm·agent
方方洛2 小时前
ai-agent教程-01-认识AI-Agent
人工智能·llm·agent
方方洛2 小时前
ai-agent教程-02-核心原理与架构
人工智能·llm·agent
小盆女神节奶粉2 小时前
对LangGraph的invoke的一些理解
agent