← 返回 2026-06-16

CODA-BENCH:代码智能体能否胜任数据密集型任务? CODA-BENCH: Can Code Agents Handle Data-Intensive Tasks?

Yuxin Zhang, Ju Fan, Meihao Fan, Shaolei Zhang, Xiaoyong Du 📅 2026-06-13 👍 13 2026-07-13 08:37
Kaggle 代码智能体 基准测试 数据发现 数据科学 智能体评估

首个联合评估代码智能与数据发现能力的数据密集型基准。

前置知识

代码智能体 (Code Agent)

基于大语言模型驱动的、能自主完成多步骤软件开发任务的智能体,例如 Claude Code、Codex CLI、OpenHands 等。它们通过读写文件、执行命令、调用工具来达成用户给定的目标,已经从单纯的代码补全演化为可独立承担 issue 修复、功能开发等完整工程的「自主工程师」。

CODA-BENCH 的核心评估对象正是当前最强的代码智能体;要理解基准的设计动机和实验结果,必须先了解这些智能体的能力边界。

数据智能 (Data Intelligence)

指在复杂的数据环境中识别、定位并合理利用正确数据源的能力,区别于单纯读取某个给定文件的数据分析能力。它要求智能体能在数百个语义相近的候选文件中做精细语义推理,而不是依赖关键词或格式过滤。

本文明确将「数据智能」与「代码智能」解耦,认为前者是当前代码智能体在真实场景中最大的短板,是基准试图测量的核心维度。

Louvain/Leiden 社区检测算法

在图结构数据中自动发现紧密连接子群的经典算法。给定一个带权无向图,Leiden 算法通过迭代合并节点来最大化模块度 $Q$,使社区内部边密度尽可能高、社区之间边密度尽可能低。相比 Louvain,Leiden 额外保证社区内部节点之间是连通的。

CODA-BENCH 利用 Leiden 算法($\gamma=1.0$)将 Kaggle 21,122 个数据集自动划分成 323 个语义社区,从中精选 31 个社区构造评估环境,是数据环境构建的关键算法基础。

Kaggle Notebooks 与 Solution Anchor

Kaggle Notebooks 是数据科学家在 Kaggle 平台上发布的可执行分析脚本,记录了从数据探索到最终结果的完整流程。本文把 Notebook 输出单元格中的可验证数值结果(统计量、排名、聚合值等)定义为 Solution Anchor,因为这些数字由具体数据 + 代码确定性地产生,可作为反向构造问题的真值。

Solution Anchor 是 CODA-BENCH 问题构造的「锚点」:从可验证的答案反推出真实分析问题,确保了任务的可判分性,并杜绝了凭空生成问题带来的歧义。

生成对抗式思想 (GAN-style Game)

经典 GAN 通过生成器 $G$ 和判别器 $D$ 的极小极大博弈 $\min_G \max_D \mathbb{E}[\log D(x)] + \mathbb{E}[\log(1-D(G(z)))]$ 学习数据分布。CODA-BENCH 把这一思想迁移到「任务难度演化」:生成器负责让任务更难,判别器(多个 LLM 的集成)尝试解题,两者交替迭代直至任务足够难但仍可解。

理解这一思想是看懂论文第 3.3 节「对抗式任务演化」的关键,也是为什么最终 1,009 道题难度可控且具备可解性的原因。

研究动机

现阶段的代码智能体评估基准存在严重的「割裂评估」问题,主要分为两大流派且彼此不交叉。代码中心型基准(如 SWE-Bench 的 2,294 个真实仓库 issue、Terminal-Bench 的 89 个命令行任务)侧重于函数正确性、issue 修复、终端交互等纯软件工程能力,假定所有所需数据都已「摆好」。数据科学中心型基准(如 DS-1000、DA-Code、DABstep、DataSciBench、DAComp、ScienceAgentBench、DiscoveryBench 等)虽然任务贴近真实分析,但通常只给出 1 个文件或不超过 10 个文件作为输入,且以 Python 脚本形式直接呈现,几乎不考察在 shell 环境中发现和访问大规模数据的能力。本文通过 Table 2 清晰展示了这一空白:在所有 13 个对照基准中,没有任何一个同时具备「社区级别数据规模(community-level ~980 个文件)+ 未指定数据文件 + 提供代码 + 提供终端工具 + Kaggle 来源 + 无引导」这一组合能力。这意味着即便智能体在 SWE-Bench 或 DA-Code 上得分再高,在真实工业场景中——例如分析师被丢进一个装满上千份 CSV/JSON/PDF 的共享盘、没人告诉你该看哪个文件——也可能无从下手。

本文的目标是本文的目标是填补这一空白,构建首个真正「端到端」数据密集型评估基准 CODA-BENCH,并基于此系统性地回答一个核心问题:当代最优秀的代码智能体是否同时具备代码智能(Code Intelligence,能写出语法正确、逻辑严密的程序)与数据智能(Data Intelligence,能在复杂数据景观中定位并利用正确的信息源)。具体而言,作者希望给出现有 SOTA 智能体在 1,009 道覆盖 31 个语义社区的任务上的真实表现,并用 CODA-HARD(119 道同时考察多文件发现与复杂代码的任务)量化它们距离「自主工程师」还有多远。

与已有工作不同的是,本文的独特切入角度在于把「数据发现」从「数据处理」中拆出来单独度量,并设计了一个能产生「领域内噪声」(in-distribution distractors)的环境构造方法。区别于过去基准随机生成干扰文件(容易被格式或文件名特征区分),CODA-BENCH 通过分析 Kaggle 笔记本中的真实数据集共现模式,自动构建出包含 21,122 个数据集、共现 93,727 次的语义关系图,再用 Leiden 算法划分社区,使干扰文件与目标文件具有「主题相似但任务无关」的迷惑性。这种设计把数据发现问题从「找文件」升级为「语义推理」,并配套提出了 Discovery Accuracy(DA)和 Execution Accuracy(EA)双指标,将数据智能与代码智能解耦打分,是过去基准不曾提供的诊断维度。

核心方法

CODA-BENCH 的方法思路分三步走:先「搭环境」、再「挖问题」、最后「炼难度」。第一步利用 Kaggle 生态已有的数据集共现关系,自动构建一个包含 21,122 个数据集节点的语义图,通过 Leiden 算法将其分成 323 个社区,再精选 31 个社区作为评估背景,使得每个任务环境平均含 980 个语义相关但任务无关的干扰文件;第二步从同一社区下的真实 Kaggle Notebook 中抽取 Solution Anchor(可复现的数值结果),用数据流分析反推出该结果所需的输入文件集合 $D_a$ 和转换序列 $T_a$,再用 LLM 把 Anchor 反向表述成自然语言问题;第三步引入对抗式演化机制,由 4 个 LLM(GPT-5.2、Claude-Sonnet-4.5、Gemini-3.0-Flash-Preview、Kimi-K2)轮替扮演生成器与判别器,迭代简化问题表述、移除过度提示,直至任务难度(solve rate)低于阈值 $\tau=0.667$ 但仍保持可解,最终再由人类标注员把关。整个流水线具有高度可扩展性,可以无成本地持续从 Kaggle 新增的笔记本中生产新任务。

本文最核心的创新在于把「任务质量」从「人为标注」转化为「可计算的对抗过程」。在传统基准中,任务难度往往由出题人主观设定,且很难保证所有题「难但仍可解」。CODA-BENCH 借鉴 GAN 思想构造了一个形式化的极小极大目标 $\min_G \max_F \mathbb{E}_{q \sim G}[\mathbb{1}[F(q) \neq a_q]]$,其中生成器 $G$ 通过去掉多余上下文、泛化术语来降低 solve rate,判别器 $F$ 则是由 $K$ 个 LLM 组成的集成 $\{F_1, \dots, F_K\}$,通过随机采样防止对单一模型过拟合。与以往基准最大的不同是:判别器性能强不代表任务无效,而是触发「继续加难」的信号;判别器全错也未必是好事,可能意味着题意有缺陷,此时进入「诊断—修复」分支。算法的关键新颖之处在于把「任务本身」作为优化对象,把「判别器解题轨迹」作为反馈信号,并用人类验证作为最后兜底。

方法步骤详情

方法可拆为三大阶段、若干子步骤。阶段一(数据密集环境构造):(a)以 Kaggle 数据集 $D=\{d_1, \dots, d_n\}$ 为节点、Notebook $N=\{n_1, \dots, n_m\}$ 为共现来源,构建加权无向图 $G=(D,E,w)$,权重定义为 $w(d_i, d_k) = \sum_{j=1}^{m} \mathbb{1}[d_i \in D_j \wedge d_k \in D_j]$,即同时出现在同一 Notebook 的次数;(b)使用 Leiden 算法($\gamma=1.0$)将图划分为 $C=\{C_1, \dots, C_{|C|}\}$ 共 323 个社区,模块度高达 0.711;(c)对每个任务的真实目标数据 $D^* \subset C_k$,将整个社区 $C_k$ 作为评估环境,$C_k \setminus D^*$ 即「领域内干扰」,平均 980 个文件、跨 CSV/JSON/Parquet/PDF/图片,单环境大小 20.3 MB–45.4 GB。阶段二(基于解的任务构造):(a)用静态分析 + LLM 选出 Notebook 中可验证且非平凡的数值输出作为候选 Anchor;(b)通过静态数据流分析重建 Anchor 的输入文件集 $D_a$ 和转换序列 $T_a = \langle \tau_1, \tau_2, \dots, \tau_k \rangle$,并以数值容差 $\epsilon=10^{-6}$ 重跑计算路径验证唯一性;(c)由 LLM 基于 Anchor 与解路径反向生成自然语言问题,再由人类标注员消除歧义。阶段三(对抗式演化):(a)从 4 个 LLM 中随机抽 3 个作为判别器集,第 4 个作为生成器;(b)每轮求解率 $r^{(t)} = \frac{1}{K} \sum_{k=1}^{K} \mathbb{1}[F_k(q^{(t)}) = a_q]$;(c)若 $r^{(t)} > \tau=0.667$,生成器通过分析成功轨迹继续简化问题;若 $r^{(t)}=0$,进入诊断分支:判别为 TYPE 1 缺陷(任务错误)则修复,TYPE 3 歧义则改写,否则判定为「真实过难」并拒绝;(d)通过演化后进入人工复核,最终接受率为 72.3%(从生成问题到最终基准)。整个流程的形式化任务定义为元组 $T=(q, F, a^*)$,其中 $q$ 是问题、$F = F_{\text{target}} \cup F_{\text{distractor}}$ 是文件系统、$a^*$ 是真值。

技术新颖性

技术新颖性体现在四个层面。第一,**环境真实性的形式化保证**:用数据集共现图 + 社区检测替代人工选题,使干扰文件与目标文件在主题和结构上都相似,但又明确不是答案;这是过去「随机噪声」式基准从未达到的语义层次。第二,**可验证任务构造管线**:Solution Anchor + 数据流反推 + 重跑验证三重把关,把「题目本身的正确性」变成可计算问题;同时支持「答案唯一性」检测,避免多解。第三,**对抗式任务演化算法**:形式化定义了任务难度优化问题并给出 Algorithm 1 的伪代码,阈值 $\tau=0.667$ 和最大迭代 $T=5$ 提供了工程可复现的停止准则;判别器用集成轮替抽样,巧妙避免了「针对某个特定模型优化」的过拟合陷阱。第四,**双指标诊断体系**:Discovery Accuracy(DA)只关心是否找到正确文件,Execution Accuracy(EA)关心端到端答案正确,配合 CODA-HARD 子集,可独立量化「找不到文件」与「代码写错」两类失败。这一指标设计借鉴了信息检索中「召回—精确」的思路,但首次将其与代码生成的端到端正确性结合。

CODA-BENCH 三阶段构造方法概览
Figure 2: CODA-BENCH 三阶段构造方法概览
数据集共现网络(含 21,122 个 Kaggle 数据集节点)
Figure 3: 数据集共现网络(含 21,122 个 Kaggle 数据集节点)
31 个精选社区的整体网络结构
Figure 8: 31 个精选社区的整体网络结构

实验结果

在 5 个 native CLI 工具与 5 套 framework-based 配置(OpenHands / Mini-SWE-Agent)共 10 个系统的对照实验中,CODA-BENCH 与 CODA-HARD 都呈现出「明显未饱和」的表现。最强模型组合 Mini-SWE-Agent + GPT-5.5 在 CODA-BENCH 上仅取得 61.1% 的 EA 和 83.0% 的 DA,意味着即便顶级智能体仍有近 40% 的任务无法在合理交互轮次内正确完成;Codex CLI + GPT-5.5 (xhigh) 紧随其后(DA 75.0 / EA 60.5),OpenHands + GPT-5.5 取得 EA 59.7%。DA 与 EA 之间普遍存在 10–25 个百分点的 gap,说明即便找到了正确文件,仍有相当比例的代码生成或语义推理错误。在更难的 CODA-HARD 上,性能进一步下滑:Mini-SWE-Agent + GPT-5.5 仅 49.6% EA,Claude Code Opus-4.6 反而以 68.4% DA 表现最佳(EA 45.4%),表明多文件+复杂代码的耦合任务对所有系统都是大挑战。性价比方面差异极大:Claude Code Sonnet-4.6 仅用平均 14.7 轮、81,714 token、$\$0.11$/task 达到 53.8% EA,而 Codex CLI GPT-5.5 需要 380,558 token、$\$1.39$/task(约 13 倍),说明原生 CLI 工具优化程度显著影响实际部署成本。第 6.1 节的关键消融实验表明,提供 oracle 文件路径(即告诉智能体答案文件在哪)后,Claude Code Sonnet-4.6 在 CODA-HARD 上从 45.4% EA 跳升到 73.1%(+27.7 pp),OpenHands GPT-5.5 从 44.5% 跳升到 68.9%(+24.4 pp),证明「数据发现」是当前智能体最大瓶颈,且即便在数据完美对齐的情况下,仍有约 29% 的剩余错误来自多源整合与多步推理本身。第 6.2 节对 Top 30 社区做相关性分析,发现 signal-to-noise ratio(SNR = 关键文件数/总文件数)与准确率的 Spearman $\rho=0.466, p<0.01$,而数据体积 > 8 GB 的社区几乎全部跌至接近 0 准确率($\rho=-0.461, p<0.01$)。第 6.3 节关于交互轮次的数据显示:Codex CLI 用 6.8 轮就达到 60.3% EA,Mini-SWE-Agent 用了 32.5 轮仅换回 0.8 pp 提升,表明对 GPT-5.5 而言「更多轮次」并不能无限抬高上限。第 6.4 节对 200 个失败案例的人工归因(Figure 7)显示:强模型 GPT-5.5 的最大失败源是代码生成(44.0%)、其次是数据发现(33.0%);而较弱模型 Kimi-K2.6 的最大失败源变为数据发现(40.7%),且执行错误占比 12.6% 远高于 GPT-5.5 的 6.5%——这说明模型能力越弱,数据发现占的瓶颈比例越大。

基准构建流水线的统计数据
Table 1: 基准构建流水线的统计数据
CODA-BENCH 与现有基准的定位对比
Table 2: CODA-BENCH 与现有基准的定位对比
CODA-BENCH 与 CODA-HARD 子集的统计对比
Table 3: CODA-BENCH 与 CODA-HARD 子集的统计对比
CODA-BENCH 与 CODA-HARD 上的主实验结果
Table 4: CODA-BENCH 与 CODA-HARD 上的主实验结果
Kaggle 共现图的统计数据
Table 5: Kaggle 共现图的统计数据
精选 31 个社区中的 10 个示例社区
Table 6: 精选 31 个社区中的 10 个示例社区
Community 2 完整数据集列表(按度排序)
Table 7: Community 2 完整数据集列表(按度排序)
对抗式演化轨迹示例
Table 8: 对抗式演化轨迹示例
环境特征对 GPT-5.5 性能的影响(Top 30 社区)
Figure 4: 环境特征对 GPT-5.5 性能的影响(Top 30 社区)
Oracle 数据 vs Community 发现的结果对比(CODA-HARD)
Figure 5: Oracle 数据 vs Community 发现的结果对比(CODA-HARD)
不同交互轮次下智能体的表现
Figure 6: 不同交互轮次下智能体的表现
智能体错误归因分布(GPT-5.5 vs Kimi-K2.6)
Figure 7: 智能体错误归因分布(GPT-5.5 vs Kimi-K2.6)
查看结构化数据
任务指标本文基线提升
CODA-BENCH(端到端 1009 任务) Discovery Accuracy (DA) Mini-SWE-Agent + GPT-5.5 = 83.0% Claude Code Opus-4.6 = 71.3% +11.7 pp(说明 framework 选择对发现能力影响显著)
CODA-BENCH(端到端 1009 任务) Execution Accuracy (EA) Mini-SWE-Agent + GPT-5.5 = 61.1% Codex CLI GPT-5.5 (xhigh) = 60.5% +0.6 pp(接近饱和,但仍有 ~39% 任务未解)
CODA-HARD(119 道高难度任务) Discovery Accuracy (DA) Claude Code Opus-4.6 = 68.4% Codex CLI GPT-5.5 = 61.4% +7.0 pp(多文件场景下 Claude Code 系列优势凸显)
CODA-HARD(119 道高难度任务) Execution Accuracy (EA) Mini-SWE-Agent + GPT-5.5 = 49.6% OpenHands DeepSeek-V4-Pro = 36.1% +13.5 pp(高难度子集上模型差距被进一步放大)
成本效率($/task) 单任务平均花费 Claude Code Sonnet-4.6 = $0.11 Codex CLI GPT-5.5 = $1.39 约 12.6× 成本下降(Sonnet-4.6 以 53.8% EA 达到性价比最优)
Oracle 数据消融(CODA-HARD) EA 提升(Oracle − Community) Claude Code Sonnet-4.6: 73.1% − 45.4% = +27.7 pp OpenHands GPT-5.5: 68.9% − 44.5% = +24.4 pp 量化了「数据发现」占总难度的约 24–28 pp

局限与改进

作者在文中显式承认或可从结果推导出的局限性包括五点。第一,**任务来源单一**:所有 1,009 道题都来自 Kaggle Notebook 的真实分析场景,意味着覆盖的任务分布偏向「数据科学 + 机器学习」领域,对企业内部的 ETL/数据治理、科学研究中的实验数据采集等场景外推性有限。第二,**环境规模局限**:平均 980 个文件已显著超过此前所有基准,但相比企业级数据湖(动辄百万文件)仍只是入门级;数据体积上限 45.4 GB 还不足以触发真实 I/O 瓶颈的全部形态。第三,**抗污染能力未验证**:虽然作者强调任务从 Kaggle Notebook 反向构造(理论上无法被现有模型见过),但 1,395 道初始题被 4 个 LLM 反复求解,可能存在特定模型族偏好的隐性偏差;任务没有专门做「防污染」形式化证明。第四,**评判指标简单化**:EA 仅做「归一化后字符串相等」,对数值类答案做了容差,对排序、集合等结构化答案的鲁棒性需进一步评估。第五,**作者未充分讨论的局限**:COST 估算口径不统一(Claude Code 用内置账单、其他用 OpenRouter 估算),可能存在显著偏差;附录 E 的沙箱超时 600 秒与 4 GB 内存限制可能在某些大数据量任务中过早截断推理;CODA-HARD 的样本量仅 119 道,统计显著性有限。

独立分析的弱点

独立审视论文,可识别出五个值得改进的弱点。**弱点 1:判别器池过窄且版本可能过时**——生成器-判别器都用 GPT-5.2、Claude-Sonnet-4.5、Gemini-3.0-Flash-Preview、Kimi-K2 这一代模型,当这些模型升级或被淘汰时,难度校准会失效;改进方向是引入「动态难度」机制:定期用最新 SOTA 重新测一遍 1,009 道题,自动重新标注难度等级。**弱点 2:社区选择的人工干预痕迹**——从 323 个社区中精选 31 个的标准没有完全公开,可能存在选择偏差(如偏向英文 Kaggle 社区);改进方向是用 LLM-as-a-judge 对所有社区统一打分并报告每个社区的可解性,让社区选择更可复现。**弱点 3:解的「单一性」检查仍弱**——虽然用 $\epsilon=10^{-6}$ 重跑验证唯一性,但对「多解但都正确」的情形(如不同排序顺序)处理粗暴,可能误删一些真实世界中的合理任务;改进方向是引入基于 LLM 的多解聚类与人工复核结合的机制。**弱点 4:缺少对失败过程的诊断粒度**——Figure 7 把错误仅分为 4 类,但实际错误(如文件读取的编码错误 vs 解析错误)需要更细的标签,否则下游研究难以定位改进点;改进方向是引入栈追踪自动归因。**弱点 5:基准过度依赖英文 Kaggle 资源**——任务语言、文档、社区主题全部英文,限制了非英语场景下的可用性;改进方向是引入多语言 Notebook 源(如 Colab 中文教程、GitCode 等)。

未来方向

作者明确提出的未来工作包括:(a)把 CODA-BENCH 作为平台扩展到更大规模的社区和更长时间窗口的 Notebook;(b)将构建流水线扩展到企业级数据湖场景(百万级文件);(c)联合评估代码与数据智能以推动「自主数据分析师」的发展。基于本文成果可延伸的方向有四类:(i)**算法层**——专门针对「数据发现—代码生成」耦合设计的检索增强代码生成(RAG-for-Code)方法,把数据发现作为独立检索阶段;(ii)**训练层**——用 CODA-BENCH 1,009 道任务及对抗式演化轨迹作为 RL 训练奖励信号,构造专门面向数据密集场景的微调数据集;(iii)**评测层**——把本文的「oracle vs community」消融推广到更多基准(如 SWE-Bench),建立「数据发现贡献度」这一通用诊断指标;(iv)**多模态层**——当前环境已包含 PDF 和图像文件,但任务仍以表格数据为主,未来可拓展到纯文档问答、视频理解等真正多模态的数据发现任务。

复现评估

可复现性总体良好,具体体现在:代码仓库已开源于 https://github.com/ruc-datalab/CoDA-Bench,数据集已发布在 HuggingFace https://huggingface.co/datasets/RUC-DataLab/CoDA-Bench;论文附录 E 给出了完整的 Docker 沙箱配置(Python 3.11 + pandas 2.1.0+ + numpy 1.24.0+ + matplotlib 3.7.0+ + scikit-learn 1.3.0+ + openpyxl + pyarrow,4 GB 内存、2 CPU、600 秒超时),目录结构标准化(`/workspace/task_description.txt`、`/workspace/data/`、`/workspace/result.txt`)。复现难度评估如下:**算力门槛**——评测一次 SOTA 系统需要数百次 Docker 运行,每个任务数十分钟,完整复现主表需要至少 100+ GPU 小时;**API 成本**——根据 Table 4,单任务 $\$0.11$–$\$1.39$,1009 道题 $\$110$–$\$1,400$,若做完整 10 个配置对比需 $\$1,100$–$\$14,000$,对个人研究者门槛较高;**关键风险**——Kaggle 数据集授权为 Creative Commons、ODC-BY、PDDL 等开源协议,但商业用途仍需逐数据集核验 License;附录 C 给出的演化算法伪代码可直接实现,但提示工程(evolution strategy JSON)依赖较多经验调优,迁移到新领域时需重写。总体而言,对学术机构而言复现门槛中等,对工业团队则可以低门槛部署评测管线。