1. WorkBuddy Bench 到底在测什么:Agent Harness 与 Benchmark 的真实工程拆解
腾讯 WorkBuddy 团队最近放出的这篇论文,核心不是又刷了个榜,而是把内部用来做模型选型的那把尺子直接开源了。你如果正在做 Agent 项目,大概率遇到过这种困惑:同一个模型,在 A 框架里跑得挺好,换到 B 框架就拉胯;榜单上排名第一的模型,接到自己业务里效果却一般。WorkBuddy Bench 想回答的就是这个问题——它把 Agent Harness(智能体运行框架)和 Benchmark(评测基准)当成一个整体来设计,而不是分开看。
先说清楚三个概念,不然后面没法聊。Agent Harness 指的是包裹在模型外面的那层工程框架,负责工具调用、上下文管理、多轮循环、错误重试这些脏活累活。Benchmark 是评测任务集和评分体系。模型是发动机,Harness 是底盘和传动系统,Benchmark 是测试跑道。WorkBuddy 论文最有价值的地方在于:它用数据证明了换 Harness 会直接导致排名洗牌,而且洗牌幅度大到不能忽略。
这套 Benchmark 包含四个子集:Code、Web、Office、Security。每个子集有独立的评分仪器,分数跨赛道不可比,套件刻意不报总平均分。这个设计决策很关键——它承认了不同任务类型的评分逻辑本质不同,强行平均只会掩盖问题。Code 子集 80 个任务里只有 10 个是修 Bug,其余覆盖五种角色(开发者、算法工程师、产品经理、QA、运维)和 18 个细分类目。Web 子集采用 artifact-not-chat 契约:Agent 必须在声明路径产出可运行工件,聊天里说得再好,路径下没东西就是零分。Office 子集评的是最终工作区状态,不是答案文本——你写了一份看似合理的总结却没更新它描述的那张工作簿,照样丢分。Security 子集 60 个任务全程无 LLM 裁判,五层反作弊,覆盖红蓝队全景。
为什么这套东西值得你花时间研究?因为它解决的是 Agent 工程里最实际的选型问题。你不需要腾讯的内部数据,但你可以用同样的方法论搭建自己的评测流程。接下来我会拆解 Harness 配置模板、Benchmark 跑分验证步骤,以及怎么在自己的项目里复现关键评测逻辑。
2. 接入前的环境准备:TaoToken 作为模型调用层
在复现 WorkBuddy Bench 的评测流程之前,你需要一个稳定的模型调用层。WorkBuddy 论文里测试了包括 GLM-5.2、GPT-5.5、Claude Opus 4.8、DeepSeek-V4-Flash、MiniMax-M3 在内的多个模型,这些模型通过不同渠道调用时,接口格式、认证方式、计费逻辑都不一样。如果你要跑多模型对比,逐个对接会浪费大量时间在适配层上。
TaoToken 在这里的角色是统一模型调用入口。它提供 OpenAI 兼容的 API 格式,你只需要改 Base URL 和 API Key,就能在同一个 Harness 里切换不同模型。官网地址是 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,API 端点是 https://taotoken.net/api(注意 API 地址不加 UTM 参数)。
具体操作步骤:先注册账号,然后在控制台创建 API Key。控制台地址是 https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,API Keys 管理页面在 https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 。创建好 Key 之后,你需要在 Harness 配置里填三个东西:Base URL、API Key、Model ID。这三个要素缺一不可,后面配置模板里会具体写。
如果你只是想先验证模型对话效果,可以直接用模型对话页面测试:https://taotoken.net/chat?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 。但要做 Benchmark 跑分,必须走 API 方式,因为需要程序化调用和结果收集。
这里有个坑要注意:不同模型对 API 参数的兼容性不一样。比如 GLM-5.2 对 temperature 的敏感度比 GPT-5.5 高,Claude Opus 对 system prompt 的处理方式也有差异。WorkBuddy 论文里提到 HY-3 开启跨轮 reasoning passback 后 Code 分数有提升,这说明 Harness 层面的参数配置会直接影响模型表现。所以你在做多模型对比时,要么统一参数,要么把参数差异作为变量记录下来。
另外,WorkBuddy Bench 的 Security 子集涉及漏洞发现和 PoC 验证,这类任务对模型的推理深度要求很高。GLM-5.2 在 Security 双榜上拿下第一,说明开源权重模型在特定领域可以超过闭源模型。但你在自己项目里复现时,要注意 Security 任务的评分是确定性的,不依赖 LLM 裁判,所以结果更可复现。
3. 可复制的 Harness 配置模板与 Benchmark 跑分步骤
这一节是核心操作部分。我会给出一个可复制的 Harness 配置模板,然后说明怎么跑 Benchmark 验证。
3.1 Harness 配置模板(JSON 格式)
WorkBuddy 论文里提到双 Harness 评分:cbc 和 cc。cbc 应该是内部 Harness 的代号,cc 很可能指 Claude Code 风格的 Harness。你在自己项目里不需要完全复现这两个,但需要理解 Harness 的核心配置项。下面是一个通用的 Agent Harness 配置模板,你可以直接复制修改:
{ "harness_name": "my-agent-harness", "model_config": { "base_url": "https://taotoken.net/api", "api_key": "sk-your-key-here", "model_id": "glm-5.2", "temperature": 0.2, "max_tokens": 8192, "timeout_seconds": 120 }, "agent_loop": { "max_turns": 50, "enable_reasoning_passback": true, "tool_call_retry": 3, "context_window_management": "sliding_window", "max_context_tokens": 128000 }, "tools": [ { "name": "read_file", "description": "读取工作区文件内容", "parameters": { "path": "string" } }, { "name": "write_file", "description": "写入文件到指定路径", "parameters": { "path": "string", "content": "string" } }, { "name": "run_command", "description": "在沙箱中执行 shell 命令", "parameters": { "command": "string", "timeout": "integer" } } ], "evaluation": { "artifact_contract": "path_based", "output_dir": "./workspace/output", "rule_checks_weight": 0.85, "llm_judge_enabled": false } }这个模板里几个关键参数需要解释。enable_reasoning_passback对应论文里提到的跨轮 reasoning passback,开启后模型在每一轮可以把上一轮的推理摘要带过来,Code 分数有提升。max_turns控制 Agent 最多跑多少轮,Security 子集平均 30-89 轮,所以如果你要跑 Security 任务,这个值要设大一些。artifact_contract设为path_based对应 Web 子集的 artifact-not-chat 契约,Agent 必须在指定路径产出文件。
3.2 用 TaoToken 跑多模型对比
要复现 WorkBuddy 论文里的多模型排名,你需要至少准备三个模型:GLM-5.2、GPT-5.5、Claude Opus 4.8。通过 TaoToken 调用时,只需要改model_id字段。比如:
{ "model_config": { "base_url": "https://taotoken.net/api", "api_key": "sk-your-key-here", "model_id": "claude-opus-4.8", "temperature": 0.2, "max_tokens": 8192 } }如果你要做长期编码任务或 Agent 开发,可以考虑 Coding Plan:https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 。这个计划适合需要频繁调用模型的场景。
3.3 Benchmark 跑分验证步骤
跑分流程分四步:
第一步,准备任务集。WorkBuddy Bench 的任务是开源的,你可以从论文配套仓库获取。每个任务包含:任务描述(刻意欠规格)、工作区初始状态、隐藏测试、评分规则。注意隐藏测试是解题时不可见的,但发布后全部公开。
第二步,配置 Harness。用上面的 JSON 模板,把model_id设成你要测的模型。如果你要对比 cbc 和 cc 两种 Harness 风格,需要准备两份配置,主要差异在agent_loop和tools的定义上。
第三步,运行评测。每个任务独立运行,Agent 在沙箱里操作,评分资产在 Agent 行动期间完全不可见,结束后才注入。你需要记录每个任务的:轮次、输出 token 数、含缓存输入 token 数、最终得分。
第四步,汇总结果。按子集分别统计,不要算总平均分。Code 子集看 bug_fix 和 api_contract 类目的得分,这两个是最难的,均值只有 0.47。Web 子集看 artifact 是否在声明路径产出。Office 子集看最终工作区状态是否匹配预期。Security 子集看 PoC 是否能在沙箱里稳定触发 ASAN crash。
3.4 关键参数对照表
| 参数 | 作用 | 推荐值 | 注意事项 |
|---|---|---|---|
| max_turns | Agent 最大轮次 | Code: 30, Security: 90 | Security 任务轮次多 |
| temperature | 采样温度 | 0.2 | 太高会导致工具调用不稳定 |
| enable_reasoning_passback | 跨轮推理回传 | true | 开启后 Code 分数有提升 |
| rule_checks_weight | 规则检查权重 | 0.70-0.95 | 每个任务预配不同 |
| artifact_contract | 交付物契约 | path_based | Web 子集必须开启 |
4. 验证请求与成功结果:怎么确认你的 Harness 跑通了
配置好之后,你需要一个最小验证流程来确认 Harness 能正常工作。不要一上来就跑完整 Benchmark,先用一个简单任务验证链路。
4.1 最小验证请求
用 curl 发一个请求到 TaoToken API,确认模型能正常响应:
curl -X POST https://taotoken.net/api/v1/chat/completions \ -H "Content-Type: application/json" \ -H "Authorization: Bearer sk-your-key-here" \ -d '{ "model": "glm-5.2", "messages": [ {"role": "system", "content": "你是一个代码助手,只输出代码,不要解释。"}, {"role": "user", "content": "写一个 Python 函数,读取 JSON 文件并返回字典。"} ], "temperature": 0.2, "max_tokens": 1024 }'如果返回 200 并且 choices 里有内容,说明 API 链路通了。如果返回 401,检查 API Key 是否正确。如果返回 model not found,检查 model_id 是否拼写正确。
4.2 Harness 端到端验证
API 通了之后,跑一个完整的 Agent 任务。选一个 Code 子集的简单任务,比如 feature_pipeline 类目(均值 0.94,最容易)。任务描述可能是:“在工作区里添加一个数据预处理管道,读取 CSV 文件,过滤空值,输出到新文件。”
你的 Harness 应该执行以下流程:模型收到任务描述后,先调用read_file查看工作区结构,然后调用write_file创建管道代码,最后调用run_command执行测试。如果隐藏测试通过,得分 1.0;如果失败,得分 0.0。
成功的结果长这样:
{ "task_id": "code_feature_pipeline_001", "model_id": "glm-5.2", "harness": "my-agent-harness", "turns": 8, "output_tokens": 3200, "input_tokens_with_cache": 45000, "score": 1.0, "rule_checks": { "file_exists": true, "schema_valid": true, "test_passed": true } }4.3 多模型对比结果记录
跑完三个模型后,你会得到类似 WorkBuddy 论文表6的数据。注意几个关键观察点:Code 排名在双 Harness 间可能换位,Security 洗牌最狠,Office 最稳。如果你发现某个模型在你的 Harness 下表现和论文差异很大,先检查 Harness 配置是否一致,特别是enable_reasoning_passback和max_turns。
论文里提到 GPT-5.5 是全场最省高分者,cbc 下 Code 只用 6.9k 输出 token。如果你测出来某个模型 token 消耗特别高但分数不高,比如 DeepSeek-V4-Flash 在 cc 下输出是 GPT-5.5 的 3.3 倍但分数低 14.74 分,那说明这个模型在你的任务分布下效率不高。
5. 本篇常见错误排查:401、local proxy failed、reading choices、OAuth
跑 Benchmark 过程中最容易遇到四类报错,我逐个拆解。
5.1 401 Unauthorized
这是最常见的错误。原因通常是 API Key 无效或过期。检查步骤:确认 Key 是从 https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 创建的,确认请求头里Authorization: Bearer sk-xxx格式正确,确认 Key 没有多余空格。如果 Key 没问题但还是 401,检查 Base URL 是否写成了https://taotoken.net/api而不是https://taotoken.net/api/v1。有些 Harness 会自动拼接/v1,有些不会,需要看具体框架的文档。
5.2 local proxy failed
这个报错通常出现在 Harness 配置了本地代理但代理没启动的情况下。如果你没有用代理,检查 Harness 配置里是否有proxy字段,把它删掉或设为空。如果你确实需要代理,确认代理地址和端口正确。注意:TaoToken API 本身不需要代理,直接访问即可。
5.3 reading choices 报错
这个错误说明 API 返回了响应,但 Harness 在解析choices字段时失败了。常见原因:模型返回了非标准格式,或者 Harness 期望的响应结构和实际返回不一致。排查方法:先用 curl 直接调 API,看返回的 JSON 结构。如果choices[0].message.content存在,说明 API 正常,问题在 Harness 的解析逻辑。检查 Harness 是否处理了finish_reason为length的情况——如果max_tokens设太小,模型输出被截断,choices可能不完整。
5.4 OAuth 相关报错
如果你用的是 Claude Code 或类似工具,可能会遇到 OAuth 认证问题。Claude Code 的接入文档在 https://taotoken.net/doc/claudecode-anthropic?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 。关键配置三件套:Base URL 设为https://taotoken.net/api,API Key 用 TaoToken 创建的 Key,Model ID 填你要用的模型。如果你在 Claude Code 里遇到 OAuth 报错,检查是否误用了 Anthropic 官方的 OAuth 流程——TaoToken 走的是 API Key 认证,不需要 OAuth。
5.5 Codex auth.json 配置
如果你用 Codex 风格的 Harness,需要配置auth.json。文件路径通常在~/.codex/auth.json。内容格式:
{ "base_url": "https://taotoken.net/api", "api_key": "sk-your-key-here", "model": "glm-5.2" }注意model字段填 Model ID,不是显示名称。如果你要切换模型,改这个字段即可。
5.6 Cline MCP 配置
Cline 通过 MCP 协议接入时,需要在 MCP 配置文件里填三件套。Base URL、API Key、Model ID 缺一不可。如果你遇到 MCP 连接失败,先确认 MCP 服务是否启动,再确认配置文件路径是否正确。
6. 把 WorkBuddy 的方法论用到你自己的 Agent 项目里
WorkBuddy 论文最值得借鉴的不是具体排名,而是它的评测设计思路。你在自己项目里可以这样做:
第一,任务分布对齐真实工作。不要用网上随便找的测试集,从你的业务日志里提取真实请求模式,然后改写成刻意欠规格的任务描述。WorkBuddy 的做法是锚定真实上游工件(开源仓库 commit、CVE)或具体业务场景,匹配内部使用分布,但原始用户 prompt 不进入任务。
第二,双 Harness 评分。同一个模型至少在两种 Harness 配置下跑一遍,观察排名是否稳定。如果换 Harness 后排名洗牌,说明你的评测结果对 Harness 敏感,选型时要同时考虑模型和 Harness 的匹配度。
第三,分赛道评分,不报总平均。Code、Web、Office、Security 的评分逻辑不同,强行平均会掩盖问题。你的项目可能只有一两个赛道,那就把这一两个赛道做深。
第四,记录 token 开销。花钱多不等于分数高。GPT-5.5 用 8.7k 输出 token 拿到 76.63 分,GLM-5.2 用 22.0k 拿到 77.06 分,差距很小但成本差很多。你的选型要综合考虑分数和成本。
第五,反作弊设计。WorkBuddy 的 Security 子集全程无 LLM 裁判,五层反作弊。你的评测如果涉及敏感操作,也要考虑怎么防止 Agent 绕过测试。
如果你要长期做 Agent 开发和评测,Coding Plan 可能适合你:https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 。接入文档在 https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,里面有各框架的详细配置说明。
最后说一个实际经验:我试过用同一套 Harness 配置跑 GLM-5.2 和 GPT-5.5,在 Code 任务上两者分数接近,但 GLM-5.2 在 Security 任务上明显更强。这跟 WorkBuddy 论文的结论一致——开源和闭源的差距是分板块的,不是均匀碾压。所以选型时不要只看一个总分,要看你最关心的那个赛道谁更强。