腾讯 WorkBuddy Bench:抗数据污染的多领域代码智能体基准测试套件 Tencent WorkBuddy Bench: A Multi-Domain Coding-Agent Benchmark with Contamination-Resistant Task Construction
覆盖代码/前端/办公/安全四领域的开放代码智能体评测套件,通过构造抗 prompt 污染
前置知识
Coding Agent(编码智能体)
指能够读取工作区、规划步骤、调用工具(编辑文件、运行命令)、并自主完成多步任务的 LLM 驱动智能体,例如 Claude Code、CodeBuddy Code。与传统单轮代码补全不同,它在一个 episode 内反复探索代码库、修改文件并验证结果,输出通常是一个 git patch 或一份可运行的产物。
本文评测的就是这类智能体在真实工作场景下的能力,理解'episode、turn、tool call、workspace、artifact'等概念才能看懂四类任务的统一形态。
数据污染(Data Contamination)/ Prompt 污染
指评测任务的题面或答案在模型预训练阶段已被见过,导致分数被'记忆'而非真实能力抬高。本文特别关注'可被网页搜索恢复的 prompt'这条污染路径:如果题目直接抄自某个 GitHub issue,模型只需检索到原帖即可作答。
抗污染是本套件的第一设计目标,理解它才能明白为什么要把真实 commit/CVE 反向改写成口语化角色扮演请求,以及为什么开放发布后还要靠版本管理与 canary 字符串来缓解后发布污染。
SWE-bench / SWE-bench Verified
仓库级软件工程基准,任务取自真实开源项目的 GitHub issue,要求智能体提交能通过隐藏测试的补丁。其题目、乃至解法都公开在网页上,存在可搜索污染问题,且任务以单 issue bug 修复为主。
SWE-bench 是本文 Code 子集最主要的对照系,理解它的污染路径与窄覆盖面,才能理解 WorkBuddy Bench 为何要'反向工程 + 角色扮演 + 五角色 + 18 类'重新构造任务。
Oracle-gated Admission(黄金补丁准入门)
构造任务时的一道双重校验:先把未改动的工作区跑一遍验证器,要求 baseline reward $\le 0.3$(初始状态不能已经通过太多检查);再套用诊断性 gold patch 跑一遍,要求 oracle reward $= 1.0$(确实存在能拿满分的解)。
这是保证每个任务既'非平凡'又'可解'的硬门槛,是 Code 子集质量控制的内核,也是区别于'随便造题'的关键机制。
LLM-as-Judge / VLM-as-Judge / Agent-Judge
用大模型(或多模态模型)对生成结果做语义打分:LLM 判文本结构、VLM 判截图视觉、Agent-Judge 则会真正驱动运行中的前端产物去点按钮、检查状态变更与持久化。其已知风险是裁判模型可能偏好自家风格。
Web/Office 子集的语义项靠它打分,理解它的引入与'绑定固定证据、规则项独立保留、Code 只作参考值不计入头条分'等约束,才能看懂作者如何把裁判偏置的风险收窄。
CVE 与 PoC(漏洞与概念验证)
CVE 是公开披露的已知漏洞编号,PoC(Proof-of-Concept)是一段能稳定触发该漏洞的输入或代码,例如让 ASAN 报崩溃的测试样例。Security 白盒审计任务采用 find-vuln→poc-verify 两步结构。
Security 子集大量任务锚定真实历史 CVE(binutils、curl、nginx、vim、jq、fluent-bit),并用确定性 scoring.py 校验 PoC,这是理解其零 LLM 裁判、五层防作弊设计的前提。
研究动机
当下的编码智能体面临两种评测,各有硬伤。静态公开基准(如 SWE-bench、SWE-bench Verified)在发布时把题面,甚至解法都放在公开网页上:分数上升可能只是因为模型记住了某个具体的 issue 线程或 pull request,而非真的具备仓库级推理;而且它们覆盖面窄,压倒性集中在'单 issue bug 修复'。同样的可爬取问题也蔓延到代码之外——前端生成与 Web Agent 基准的题目本身就来自可被抓取的公开仓库、截图与网站。厂商生产型基准(如 CursorBench)走另一个极端,从真实生产会话里抽任务,分布贴近实际用法,但基准本身是闭源的:外部观察者无法检查它的任务分布、无法排除'为自家智能体筛选任务'的偏置、也无法确认任务组合能否推广到该厂商用户群之外。结果是,没有一个基准既能贴合真实工作分布,又能在'网页可搜索 prompt'这条最要命的污染路径上靠构造而非靠发布时的临时新鲜度来抗污染,还能开放到让第三方逐题复跑、直接审计内容。
本文的目标是构建一套面向真实组织内工作的多领域编码智能体评测套件 Tencent WorkBuddy Bench,同时满足三条要求:第一,任务分布由真实工作用法分析所'知会'(distribution-informed),而不是照搬真实用法数据;第二,抗污染是头等设计约束,靠构造方式关闭'网页可搜索 prompt'这条路径,而非发布时的新鲜度补丁;第三,整套套件(任务目录、环境镜像、评测 harness、测试、参考解)全量开放,任何第三方都能逐题复跑并审计内容,从而直接证伪'厂商偏置'。具体目标是用统一 harness 跨四个互补工作域——仓库级软件工程(Code)、前端开发(Web)、办公与业务流(Office)、红蓝队安全(Security)——评测智能体,并在 CodeBuddy Code 与 Claude Code 两套 harness 下双跑,量化能力排名与排名对 harness 的稳健性。
与已有工作不同的是,本文的独特切入是'分布知会 + 反向工程 + 全量开放'三者的合流。任务不是从公开 issue 标题或教科书习题复制而来,而是从真实 commit、pull request、CVE 或业务场景反向工程,再改写成简短、口语化、角色扮演的自然语言请求,故意隐去根因、参考 diff 与任何能直接喂答案的框架,使得题面无法靠搜索原 issue/PR/commit 线程恢复。分布匹配的是真实请求的'分布'而非请求本身——任何原始用户 prompt、会话或用户数据都不进入构造——这让套件可以毫无隐私顾虑地全量发布。它与 SWE-bench 的'发布即公开'不同(靠构造抗污染 + 版本管理),也与 CursorBench 的'闭源真实会话'不同(靠分布匹配 + 全量可审计)。这种'题目形态统一、打分规则各异、不报总平均'的取舍,正是它填补的空白。
核心方法
直觉上,作者把'真实工作请求'抽象成一个统一形态:智能体被丢进一个工作区,从自然语言请求产出一件产物,再被一个它从来看不见的验证器打分——这套形态在代码仓库、前端工件、办公文档、安全漏洞四类边界上完全一致,于是四类任务可以共享同一套任务目录格式、同一套准入协议、同一套沙箱执行基础设施。技术路线分五个阶段:sourcing(锚定真实 commit/PR/CVE 或业务场景,对照内部用法分类学决定题材配比)、rewriting(把原始上下文反向工程成口语化、欠规范的请求)、组装 agent 可见工作区、post-episode 评测隔离(评测资产在 episode 结束后才进入沙箱或被调用)、以及打包成自包含目录。每个任务都以 Harbor 风格目录发布:task.toml 元数据、instruction.md 请求、environment/ 含 Dockerfile 与 workspace/、tests/ 含 test.sh、grading/ 与可选 gold.patch。Dockerfile 只构建可见工作区,tests/ 全部留在镜像之外,使'评测边界'成为打包本身的属性而非运行时配置。
核心创新点有三。其一,抗污染靠构造而非保密:每题从真实 commit/PR/CVE/业务场景反向工程并改写为角色扮演请求,根因、参考 diff、解题框架一律隐去,从'题目被写出来那一刻'就关闭可搜索 prompt 路径;开放发布后改由数据集版本管理与可选 canary 字符串管理长期暴露。其二,四个子集共享的是'任务形态'而非'打分规则'——Code 用隐藏测试、Web 用规则+LLM/VLM+Agent-Judge 三层 rubric、Office 用每题定权重的 Rule+Judge 混合、Security 用确定性 scoring.py 且完全不引入 LLM 裁判——所以跨子集分数不可比,套件刻意不报总平均(这是设计事实而非待补的缺口)。其三,双 harness 报告(CodeBuddy Code + Claude Code)把 harness 当作可测量的变量而非中性仪器,专门暴露排名对 harness 的敏感性。这与所有现有基准都有本质区别:要么闭源、要么覆盖面窄、要么打分规则单一。
方法步骤详情
完整步骤如下。Sourcing:每个任务锚定到一个具体来源——Code 有 34 个真实 OSS snapshot 上游 commit(Family A)、24 个 clean-room 类库重实现(Family B,含 4 个 JS/TS/Rust 移植到 Python)、22 个全合成带 CSV/JSON fixture 的工作区(Family C);Security 白盒任务锚定真实历史 CVE;Web/Office/部分 Code 与 Security 用业务场景。配比对照内部用法分类学(请求意图类别与请求结构模式),但绝不复用原始用户数据。Rewriting:把原始上下文写成同事/客户的口语化、欠规范请求,Code 套上 5 种角色(developer 30、algo 19、pm 15、ops 10、qa 6),Security 每域配专业角色,请求故意省略目标文件、精确 schema、边界处理,逼智能体自己从工作区恢复上下文。组装与隔离:构建 Docker 镜像,agent episode 期间只见 instruction 与声明工作区。准入校验(Code):未改基线 baseline reward $\le 0.3$,套 gold patch 后 oracle reward $= 1.0$;Web/Office/Security 各有子集特定校验(如 Web 786 项 rubric、Office 每题 Rule/Judge 权重 0.70–0.95、Security 五层防作弊)。打包发布:task.toml/instruction.md/environment/tests/ 全量公开,grading 测试与 gold patch 也一并发布。执行:两次 harness 下 think 模式、3 次独立 run 取均、reasoning effort 固定 high、上下文窗口统一 200k、关闭 WebSearch 与 AskUserQuestion 工具。打分公式:任务级奖励 $r_t \in [0,1]$,轨道分 $S = \frac{1}{|T|}\sum_{t \in T} r_t$;Web 失败项扣配置罚分(0.1/0.2/0.3),致命失败置零;Office 三试取均后做 50 题等权宏均;Security 三次独立 run 取均。
技术新颖性
技术新颖性体现在'把分布、抗污染、可审计三者用一套构造协议同时满足'。与 LiveCodeBench 靠'题目发布晚于训练截止'抗污染不同,本文靠'重新构造的任务目录'在写作时刻就关闭可搜索路径,并在发布后用版本管理接力。与 CursorBench 闭源真实会话不同,本文分布匹配的是分布而非数据本身,因此可全量开放、可逐题审计、可证伪厂商偏置。Security 子集的'零 LLM 裁判 + 五层防作弊(banned-literal 扫描、renamed-input 测试、overlay/tamper 测试、encoding-dependence 测试、低权重诱饵字段)'在公开安全基准中罕见,把输入/代码/输出三条轴上的硬编码与穷举都堵住。Code 用诊断性 gold patch 做准入而非评分(任何满足隐藏测试的补丁都拿满分),并把 LLM-Judge 分明确隔离为参考值、绝不进头条分,是对'裁判偏置'最干净的处置。Web 把规则检查、LLM/VLM 判、Agent-Judge 驱动运行产物三类判分绑定到从最终产物抽取的证据上,是对前端评测'闭环工程'维度的扩展。整体上,新颖性是广度+构造哲学而非新任务类型,作者亦坦承这一点。
实验结果
核心发现是'没有一个模型通吃八块榜单'。在 Code/Web/Office/Security × {cbc, cc} 共 8 块榜中,Claude Opus 4.8 占据 5 块——Code 双 harness(cbc 74.43、cc 77.90‡,‡为修改指令的单 pass 配置)、Web 双 harness(68.14、69.86)、Office-cbc(82.37,紧随其后是 HY-3 的 82.08);GLM-5.2 包揽 Security 双 harness(76.32、80.86);GPT-5.5 拿下 Office-cc(86.05)。开权模型 GLM-5.2 在两块 Security 榜上同时登顶本身就是一个结论:开权与闭源前沿模型的差距在本套件上是'分榜而定'而非均匀。Harness 敏感性被量化为四轨差异极大:Code 排名在两 harness 间翻转(GPT-5.5 在 cbc 领先 GLM-5.2,72.90 vs 71.54,在 cc 反落后,76.63 vs 77.06);Web 在 cc 下 7 个双计模型中 4 个下降(GLM-5.2 跌 −6.72),有符号均移 −1.14;Office 移动最小,中位绝对移仅 0.86(除 GPT-5.5 +4.09、HY-3 −2.00);Security 重排最剧烈,7 个双计模型平均绝对移 8.6 分,GPT-5.5 在 cbc 第六、cc 跃升第二,MiniMax-M3 从第二跌到第五。安全相关请求的拒绝上,Claude Opus 4.8 在 cc 下记录 13 次(cbc 为 0),GPT-5.5 在 cbc 下 2 次。Code 内部分类揭示'编码 vs 数据/算法'系统性差距:数据算法类平均约 74%,编码类约 65%;最难两类是 bug_fix(0.47)与 api_contract(0.47),最易是 feature_pipeline(0.94)与 testing(0.88),product_analytics 跨模型范围竟达 0.08–1.00。Token 效率上,GPT-5.5 在 cbc 用 6.9k 输出 token 拿顶级分(全场最低预算),DeepSeek-V4-Flash 在 cc 烧 28.6k(约 3.3 倍)却低 14.74 分,证明'花费与排名不对齐'。HY-3 在 Code 上开启跨轮推理回传的诊断重跑,cbc +3.82、cc +1.92,说明 harness-模型集成细节本身也影响分数。Security 极端案例:MiniMax-M3 在 cbc 下平均 88.8 轮、约 11.1M cache-inclusive 输入 token 换得 74.14。
查看结构化数据
| 任务 | 指标 | 本文 | 基线 | 提升 |
|---|---|---|---|---|
| Code(仓库级 SWE,cbc harness) | 隐藏测试均分(0–100,think×3 run) | Claude Opus 4.8 = 74.43(榜首) | DeepSeek-V4-Flash = 55.73(榜末) | 榜首领先榜末 +18.7 分;7 模型跨度从 55.73 到 74.43 |
| Code(cc harness) | 隐藏测试均分 | Claude Opus 4.8 = 77.90(‡修改指令) | DeepSeek-V4-Flash = 61.89 | 双 harness 排名翻转:GPT-5.5 在 cbc 领先 GLM-5.2,cc 反落后 |
| Web(前端/GUI,cbc) | rubric 786 项 checklist 分 | Claude Opus 4.8 = 68.14(榜首) | DeepSeek-V4-Flash = 47.29 | 榜首领先榜末 +20.85 分 |
| Office(办公数据流,cbc) | Rule+Judge 任务级混合,50 题等权宏均 | Claude Opus 4.8 = 82.37(榜首,HY-3 82.08 紧随) | MiniMax-M3 = 78.28 | Office 跨 harness 最稳,中位绝对移 0.86 |
| Office(cc) | Rule+Judge 任务级混合 | GPT-5.5 = 86.05(榜首) | MiniMax-M3 = 76.30 | GPT-5.5 在 cc 下领 7 类中 5 类任务类型 |
| Security(红/蓝队,cbc) | 确定性 scoring.py 均分 | GLM-5.2 = 76.32(榜首,开权模型) | Claude Opus 4.8 = 64.37 | 开权模型双 harness 同时登顶 Security;harness 间平均绝对移 8.6 分 |
| Security(cc) | 确定性 scoring.py 均分 | GLM-5.2 = 80.86(榜首) | DeepSeek-V4-Flash = 53.90 | GPT-5.5 从 cbc 第六跃升 cc 第二(77.91) |
| Code 子集难度切片 | 类目平均 reward | feature_pipeline 0.94 / testing 0.88(最易) | bug_fix 0.47 / api_contract 0.47(最难) | product_analytics 跨模型范围 0.08–1.00,业务意图理解成主分水岭 |
| Token 效率(Code, cbc) | 每 run 平均输出 token(千) | GPT-5.5 = 6.9k(最低预算拿顶级分) | Claude Opus 4.8 = 22.3k(最高 cbc 输出) | DeepSeek-V4-Flash cc 28.6k 烧 3.3× GPT-5.5 预算却低 14.74 分 |
局限与改进
作者明确列出六条。其一,唯一一处榜单格用修改指令配置:Claude Opus 4.8 的 Code-cc 分(77.90‡)在禁用 AskUserQuestion 之上另加了'不要追问、单 pass 完成'指令,故与其它 run 不可严格比较,也未并入 harness-shift 聚合。其二,Code 子集严重偏 Python,跨语言仅靠少量把 JS/TS/Rust 目标移植到 Python 的任务,故关于编码难度、编码 vs 数据差距、harness 分化的结论不应外推到其他语言生态。其三,全量开放天然带来'后发布污染暴露'——任务内容自发布起即可被抓进未来训练数据,只能靠版本管理退役/替换显现污染症状的任务来缓解而非消除。其四,裁判类组件仍有模型裁判偏置:Web 的 LLM/VLM 与 Agent-Judge、Office 的 LLM-Judge 语义项都受影响;Office 虽独立保留规则项、裁判不能改写规则结果,但其语义 rubric 分仍受偏置,且本文未单独量化该风险。其五,分数绑定特定 serving 与 harness 条件:HY 端点为一方直供、其它模型走第三方 serving 端点,参数与请求处理可能影响指标;分数也绑定本次评测所用两 harness 的具体构建,随版本演化会漂移。其六,Office 是文本优先,不做 OCR、不用 VLM、不判像素级布局、不做原生桌面 GUI 交互。此外我自己的观察:Security 轮次/Token 统计仍用旧计数约定(未重算为唯一助手消息),与 Code 数字不可直接比较;Security 子集 red-team 偏重(38 vs 22),且难度'刻意偏难',代表性可能偏向资深安全研究而非日常 SOC。
独立分析的弱点
第一个弱点是 Security red/blue 比例失衡(38 红 vs 22 蓝)且刻意偏难,对'日常检测/运维'类能力的代表性不足;改进方向是补足蓝队检测工程与 SOC 日常任务的覆盖,使难度更贴近真实分布而非研究级攻防。第二个弱点是 Code 单语言偏 Python,结论外推风险高;改进方向是引入原生多语言任务目录(直接在 JS/TS/Rust/Go/Java 仓库里造题),而非'移植到 Python'。第三个弱点是榜单格存在修改指令配置(Claude Opus 4.8 Code-cc),破坏可比性;改进方向是按作者近计划,把该格纳入标准指令协议。第四个弱点是 Office 文本优先、缺 OCR/VLM/GUI,无法覆盖真实办公中的截图、扫描件、桌面交互;改进方向是新增视觉-办公任务与原生 GUI 操控任务。第五个弱点是后发布污染无根治手段;可改进为引入更细粒度的 canary 检测 + 自动化污染体检 + 更高频版本轮转,并把'被污染任务'纳入退役流水线。第六个弱点是裁判偏置未量化;改进方向是做多裁判交叉验证(不同家族裁判一致性)、引入裁判自评偏置基线、并对 Office Judge 做 ablation。第七个弱点是 Security 轮次/Token 计数口径不一致;改进方向是统一为'唯一助手消息'口径以与 Code 可比。第八个弱点是作者自承'这些比较是设计期定性自述而非实测跨套件 agent 对比',缺乏与 SWE-bench/CursorBench 的同模型同 harness 实测;改进方向是做一个跨套件的桥接评测。
未来方向
作者近计划明确两项:一是继续 Web rubric 校准;二是在可行时把唯一的修改指令配置(Claude Opus 4.8 在 Code under Claude Code)纳入标准指令协议。中长期路线是建设公开榜单,持续扩展两 harness 下的模型覆盖。基于本成果可延伸的方向包括:(1)多语言原生 Code 子集与跨语言编码难度研究;(2)把'分布知会'方法论扩展到更多业务域(数据分析、运维 SRE、数据工程),形成更长尾的工作分布匹配;(3)对 harness 敏感性本身做系统性研究——既然同一模型在两 harness 间 Security 可移 8.6 分,可设计'harness 无关能力'指标或 harness 归一化;(4)把 Security 的零裁判 + 五层防作弊范式迁移到 Code/Web 的判分,进一步压低裁判偏置;(5)加入多轮、长时程、人机协作(human-in-the-loop)任务,测试 agent 在真实组织里的'交接'能力;(6)建设自动化污染监测与版本轮转流水线,量化开放发布的污染衰减曲线;(7)跨套件桥接评测,把同模型同 harness 在 WorkBuddy Bench、SWE-bench、CursorBench 上的表现并列,检验分布外泛化。
复现评估
复现性是本套件的卖点之一,评级为高。它以 SWE-bench 风格全量开放:任务目录骨架与打包规范、任务 prompt 与指令文本、工作区/环境镜像(支持离线第三方测试)、评测 harness 与分数聚合代码、grading 测试(即 solve 时对 agent 不可见、但发布时公开的验证器)、gold patch 与参考解、每任务及聚合分数与公开榜单——全部发布。唯一不发布的是用户数据,且是'因为根本没用所以没有',而非'有但藏起来'。任何第三方无需特殊访问即可复跑单题并审计内容。可复现的工程门槛在于:每个任务需在隔离 Docker 容器内执行(自带 Dockerfile 与 setup.sh),两 harness(CodeBuddy Code 默认、Claude Code 备选)需各自能直连或经本地代理连模型后端,代理只做协议转换/模型名改写/请求日志;远端沙箱时禁止把基准侧代理放进沙箱,唯一无法满足该分离的'sandbox 后端 × 连接模式'组合被直接禁用而非静默回退。算力方面,Security 最重(MiniMax-M3 在 cbc 单 run 88.8 轮、约 11.1M 输入 token),Office 最轻(16–42 轮、10–30k 输出 token),完整跑一遍 8 块榜(7 模型 × 4 轨 × 2 harness × 3 run)成本不低,但单题复跑成本可控。需注意的复现陷阱:分数绑定本次所用两 harness 的具体构建、模型 serving 端点(HY 一方直供 vs 其余第三方)与采样超参,故'复现'应理解为'协议级 + 任务级可复跑'而非'数字逐位一致'。
论文图表
三个面板。(a) Code 的 6 个用法域(由 18 类细分类合并):Feature & API 18、Code eng. & understanding 18、Test & reliability 12、Algorithm engineering 12、Bug fix 10、Product & data analytics 10,明确 bug 修复仅占 80 题中的 10 题。(b) Web 的 7 个任务类别:Page interaction 21、Data visualization 15、Visual design 9、Analysis & reporting 7、Code & testing 7、Page implementation 6、Doc conversion 5。(c) Web 的 6 个生命周期模式:From Scratch 35、Bug fix 8、Feature extension 8、Review & analysis 7、Test generation 7、Format conversion 5,From Scratch 恰占一半。
这张图直接反驳'代码任务≈bug 修复''前端任务≈从零生成'的刻板印象,展示了套件刻意覆盖维护、审查、测试、转换等真实生命周期,是理解任务分布知会构造的关键证据。
以工作面(UI/App/Data/Doc-test)、生命周期(Scratch/Fix-ext./Review-convert)、运行时证据(Action/State)、Oracle(Rule/VLM/Agent)为轴,对比 Vibe Code Bench、CursorBench、Design2Code、Interaction2Code、FrontendBench、WebArena、VisualWebArena 与 WorkBuddy Web。WorkBuddy Web 在所有轴上均为'full coverage(•)',是唯一同时覆盖页面/UI/数据/文档测试、scratch 与 fix-ext./review-convert、运行时动作与状态、以及规则/VLM/Agent 三类判分的基准。
这张矩阵表定性定位了 WorkBuddy Web 相对现有 Web 基准的'广度'优势,是 related work 章节对前端评测空白的关键论证,虽为设计期自述而非实测对比。