
给 Code Agent 一个明确的数据文件,它往往能写出正确的分析代码。
但如果把它放进一个包含 1000 + 文件的真实数据目录,只告诉它一句自然语言问题,不给文件名、不告诉路径、不提供 schema,它还能完成任务吗?
中国人民大学的研究团队提出 CoDA-Bench,联合评估 Agent 的 Code Intelligence + Data Intelligence。该基准首次把 Code Agent 放进包含 1000 + 数据文件的复杂环境下,要求模型先自主探索文件系统、找到相关数据,再编写代码完成分析。实验显示,即使当前表现最好的系统,在 CoDA-Bench 上执行准确率也只有 61.1%;在更难的 CoDA-HARD 子集上,最高准确率进一步降至 49.6%。
当前 Code Agent 的真实瓶颈,并不是 “不会写代码”,而是找不对数据。相关论文、数据、代码均已开源:

项目主页:https://coda-bench.github.io/
论文链接:https://arxiv.org/abs/2606.15300
评估代码:https://github.com/ruc-datalab/CoDA-Bench
数据链接:https://huggingface.co/datasets/RUC-DataLab/CoDA-Bench
现有 Code Agent 评估的隐藏前提
数据已经被准备好
过去很多代码或数据分析评测,都会默认把目标文件交给 Agent。模型要做的是读取给定数据、编写代码、运行程序并输出答案。
但真实工作流里,用户往往不会提前整理好数据,也不会告诉 Agent 正确文件在哪。数据可能分散在复杂目录中,格式多样、命名不统一,还夹杂大量主题相近但实际无关的文件。
这就带来一个容易被忽视的问题:如果 benchmark 默认把正确数据交给 Agent,它测到的更多是「给定数据后的代码能力」,而不是完整真实工作流中的 Agent 能力。
CoDA-Bench 关注的正是这个缺口:
当正确数据不再被提前给出时,当前 Code Agent 还能否完成数据密集型分析任务?
CoDA-Bench:
让 Agent 自己找数据、写代码、给答案
模型既需要找数据也需要写代码分析数据!
在 CoDA-Bench 中,Agent 被放入一个包含 1000 + 数据文件的 Linux sandbox。它只会收到一个自然语言任务,但不被告知目标分析文件路径、文件名或数据的 schema。
它需要自己完成完整流程:
理解自然语言任务需求;
在 Linux 文件系统中探索数据目录;
从大量候选文件中找到相关数据;
理解数据结构和字段含义;
编写代码进行分析;
运行代码并输出最终答案。
因此,CoDA-Bench 同时考察 Agent 的两类能力:
Data Intelligence:能不能在复杂数据环境中发现、理解和选择正确数据源;
Code Intelligence:能不能基于数据写出正确分析代码,并得到正确结果。
这使得 CoDA-Bench 不再只评测「给定数据后的代码生成」,而是评测从数据发现到代码执行的完整链条。

难点不在「文件多」,
而在「干扰文件也很像」
构造这样的环境并不容易,一种直观做法是往目录里塞很多无关文件。但随机放入大量无关文件,Agent 很容易通过文件名、关键词或格式把干扰数据排除掉。这样的环境看起来复杂,但并不能真实反映数据发现的难度。
CoDA-Bench 没有简单地使用随机噪声,而是基于 Kaggle 生态构建数据环境。研究团队分析了 Kaggle notebooks 中不同数据集的共现关系:如果多个数据集经常被真实用户在同一个 notebook 中使用,它们通常属于相近主题或分析场景。
基于这种共现关系,CoDA-Bench 构建了一个大规模数据集网络,并进一步划分出多个语义相关的数据社区,每个任务环境中的干扰文件都来自同一个数据社区。
这使得 Agent 面对的不是垃圾堆,而是一批看起来都合理的候选数据。
目标数据和干扰数据往往主题相近、结构相似,Agent 不能只靠简单关键词匹配,而必须真正理解任务需求和数据内容。

构造CoDA-Bench数据环境所使用的Kaggle社区数据集共现关系图
从真实 Kaggle notebook 中
反向构造可验证任务
除了数据环境,CoDA-Bench 的任务本身也来自真实分析过程。
研究团队从 Kaggle notebooks 中提取可复现的分析结果,例如统计量、排名、比例、聚合结果等,并将这些结果作为 solution anchor,再反向构造自然语言问题。
这让 CoDA-Bench 的任务具备三个特点:
真实来源:问题来自真实 Kaggle notebook 中的数据分析流程;
可验证答案:答案对应可复现的统计量、排名、比例或聚合结果;
对抗式演化:如果任务对强模型太容易,就移除明显提示;如果任务变得歧义或不可解,就修正或回退,最后再经过人工检查保证问题的可靠性。
这种构造方式既保留了真实数据分析中的问题形态,也保证答案可以通过代码复现,便于自动化评测。

结果:Agent 经常不是写错,而是先找错
研究团队评测了多个当前常用的 Code Agent 和 Agent 框架,包括 Claude Code、Codex CLI、OpenHands 和 Mini-SWE-Agent。
实验结果显示,当前强 Agent 在 CoDA-Bench 上仍然面临明显挑战:
在完整 CoDA-Bench 上,最高执行准确率为 61.1%;
在更难的 CoDA-HARD 子集上,最高执行准确率进一步下降到 49.6%。

更关键的问题是:这些失败并不总是来自代码写错。很多时候,Agent 在第一步就没有找到正确数据。
为了区分「写代码难」和「找数据难」,研究团队进行了 oracle data 实验。
在普通设置中,Agent 需要自己从完整数据环境中发现相关文件;在 oracle 设置中,系统直接告诉 Agent 正确数据路径,只考察后续代码分析能力。
结果差距很大:
Claude Code + Sonnet-4.6 在 CoDA-HARD 上从 45.4% 提升到 73.1%;
OpenHands + GPT-5.5 从 44.5% 提升到 68.9%。
这说明,数据发现已经成为当前 Code Agent 的关键瓶颈。
如果一个 benchmark 默认把正确数据交给 Agent,它可能会系统性高估 Agent 在真实数据分析场景中的能力。

总结
CoDA-Bench 并不是为了证明某个具体 Agent 不够强,而是希望补上当前 Agent 评测中的一个重要缺口:真实任务中,数据往往不是已经准备好的输入,而是散落在复杂环境中的资源。
一个真正可用的 Code Agent,需要先判断该用什么数据、从哪里找数据、如何验证数据是否匹配任务需求,然后才能谈得上写代码分析。CoDA-Bench 希望为这一方向提供更真实、更系统的评测基础。
论文、代码和数据均已开放,欢迎大家体验并提交新的 Agent 结果。
作者介绍

张玉鑫,中国人民大学信息学院在读博士生,导师为范举教授。研究方向包括大语言模型、数据智能体、数据分析与智能体强化学习,主要关注大模型在复杂数据环境中的自主查询、数据发现和代码分析能力。个人主页:yuxinzhang-research.github.io

张绍磊,中国人民大学信息学院助理教授。他于中国科学院计算技术研究所获得博士学位。研究方向涵盖大语言模型、智能体系统、数据科学。相关研究成果在 NeurIPS、ACL、ICLR 等国际人工智能与自然语言处理会议发表论文 30 余篇,开源的多语言与多模态大模型项目在 GitHub 社区累计获得 10000 + 星标,模型下载量万余次。长期担任国际会议 ACL ARR 领域主席。个人主页:https://zhangshaolei1998.github.io/

范举,中国人民大学教授、博士生导师,国家级青年人才,中国计算机学会数据库专委会、大数据专委会执行委员。研究方向包括:数据治理技术与系统、智能数据库系统等。相关研究成果在计算机领域国际顶级期刊 / 会议发表论文 60 余篇。作为负责人先后主持国家自然科学基金优秀青年基金项目、重点项目、面上项目,以及多项产学研合作项目。先后获得 ICDE 2025 Best Paper Runner-Up、ACM SIGMOD Research Highlight Award、ACM China Rising Award、宝钢优秀教师等奖励。
© THE END
转载请联系本公众号获得授权
投稿或寻求报道:liyazhou@jiqizhixin.com