遇见数据集

goldset

收藏
Hugging Face2026-08-19 更新2026-08-20 收录
官方服务:

资源简介:

Goldset 是一个经过验证的 bug-fix 记录数据集,专门用于评估编码代理(coding agents)。数据集包含 896 条记录,来自 352 个 Python 项目,修复提交时间范围为 2010-06-13 至 2026-08-17。每条记录对应一个真实的软件缺陷,包括作者编写的修复代码以及一个在修复前失败、修复后通过的测试用例。记录仅当两次运行(失败和通过)均被观察到后才保留,确保是可靠的可重现记录。数据集支持缺陷修复、缺陷检测、工具与脚手架评估等多种任务。数据结构包含 26 个字段,如 repo、source_before、source_after、test_file、fail_to_pass 等。构建流程仅从宽松许可证项目中查找同时修改源代码和测试文件的提交,运行作者测试并验证,约 10% 候选记录通过验证,全程不使用语言模型。验证方法通过独立脚本交叉验证。局限性包括测试通过不等于修复正确、不是缺陷随机样本、仅限 Python、可能存在污染。未发布部分保留记录,公开部分采用 CC BY 4.0 许可证。

Goldset is a validated bug-fix record dataset specifically designed for evaluating coding agents. It contains 896 records from 352 Python projects, with fix commit dates ranging from 2010-06-13 to 2026-08-17. Each record corresponds to a real software defect, including the authors fix code and a test case that fails before the fix and passes after the fix. Records are retained only when both runs (fail and pass) are observed, ensuring reliable reproducible records. The dataset supports multiple tasks such as bug fixing, bug detection, and tool/scaffold evaluation. Each record has 26 fields, including repo, source_before, source_after, test_file, fail_to_pass, etc. The construction process only looks for commits that modify both source code and test files from permissively licensed projects, runs the authors tests (must fail before fix and pass after fix), and only retains records that can be isolated to a single function or entire file. About 10% of candidate records pass verification. No language model is used in the entire process. The validation method uses an independent script to re-clone repos, check out two commits, and re-run tests for cross-validation. Limitations include: passing tests does not guarantee correct fixes, records are not a random sample of defects, only Python, and potential contamination. A portion of records is withheld from public release; the public part is released under CC BY 4.0 license.

创建时间:
2026-08-19
原始信息汇总

Goldset 数据集概述

基本信息

  • 数据集名称:Goldset
  • 许可证:CC BY 4.0
  • 语言:英语(单语)
  • 数据规模:896条记录(N<1K),来自352个Python项目
  • 任务类别:文本生成(text2text-generation)、文本生成(text-generation)
  • 标签:代码、软件工程、程序修复、缺陷修复、评估、基准测试、Python

数据内容

Goldset 是一个经过验证的缺陷修复记录数据集,每条记录包含:

  • 真实软件中的实际缺陷
  • 作者编写的修复代码
  • 修复前失败、修复后通过的测试用例
  • 记录仅在实际运行验证通过后发布,提供的是可复现的验证结果而非未经证实的声明

时间范围

修复提交时间介于2010年6月13日至2026年8月17日之间。

数据结构

数据集包含以下主要字段:

  • 仓库信息reporepo_url
  • 单元信息unitmoduleunits_changed
  • 粒度类型granularityfunction表示单函数隔离,file表示整个变更文件)
  • 规格说明specspec_source(来自docstring或提交信息)
  • 代码变更source_before(修复前)、source_after(修复后)
  • 测试信息test_filefail_to_pass(pytest节点ID)
  • 提交信息commitparentcommit_url
  • 日期信息committed_atparent_at
  • 许可证信息licenselicense_filealso_in
  • 身份标识fingerprintid
  • 规模指标diff_linesn_tests
  • 审计信息validated_atvalidator

数据划分

  • 单一测试集(test split):896条示例
  • 文件名:oracles.parquet

支持任务

  1. 缺陷修复:向模型提供修复前代码和规格说明,要求生成修复方案,并用测试用例作为奖励信号
  2. 缺陷检测:判断代码是否包含缺陷,以修复后代码作为ground truth
  3. 脚手架和模型评估:通过可执行测试来测量模型本身与外部工具/代理框架对评分贡献的差异

记录构建流程

  1. 仅在一许可证的开源项目中寻找同时修改源码和测试的提交
  2. 运行提交前的测试,必须失败
  3. 运行修复后的测试,必须通过
  4. 保留变更函数及其docstring,或无法干净隔离时保留整个文件
  • 约十分之一的候选记录通过验证
  • 整个流程无需使用语言模型

验证方法

提供独立的验证脚本(verify.py),该脚本与生成语料的流水线无共享代码,会重新克隆项目、检出两个提交、重新应用修复提交的测试并再次运行,以独立验证记录的正确性。

局限性

  • 测试通过不等于修复正确,仅表示记录的测试通过
  • 非缺陷的随机样本,仅包含同一提交中附带回归测试并能缩减到单个单元或文件的真实修复
  • 仅支持Python
  • 可能存在数据污染风险(每条记录都来自公共仓库,可能已在模型预训练数据中),因此每条记录都附带日期

许可证与归属

  • 源代码摘录保留原项目许可证
  • 验证结果、架构和整理层以CC BY 4.0发布
  • 许可证分布:MIT(629条)、Apache-2.0(117条)、BSD-3-Clause(81条)、BSD-2-Clause(64条)、PSF-2.0(4条)、ISC(1条)

数据集链接

  • 官方网站:https://goldset.dev
  • 代码和验证器:https://github.com/andysalvo/goldset
搜集汇总
数据集介绍
goldset 数据集图片
构建方式
Goldset数据集的构建严格遵循实证验证的流程,其源数据选自采用宽松许可证的开源项目,仅保留那些同时修改源代码与测试文件的提交记录。构建过程中,研究者首先在修复前的代码状态下运行作者所编写的测试,确认其必然失败;随后在应用修复后的代码上重新运行同一测试,确保其成功通过。这一双重验证机制确保了每条记录均为可复现的缺陷修复实例。此外,数据集对修复所涉及的函数或文件进行了精细的隔离处理,对于能够独立成函数的修复,保留函数及其文档字符串;对于无法干净隔离的修复,则保留整个变更文件,并以提交信息作为规格说明。整个流程不借助任何语言模型,约十分之一的候选记录通过筛选,最终形成了包含896条记录、覆盖352个Python项目的验证集。
特点
Goldset数据集的显著特征在于其高度的可信度与结构化信息。每个记录均包含代码修复前后的完整快照、触发状态转换的pytest测试节点、提交时间戳及可永久链接的提交URL,便于研究者进行时间窗口过滤以规避训练数据污染。数据集中355条记录为函数级粒度,附带明确的docstring作为规格说明,而剩余541条为文件级粒度,以提交信息作为规格。每个记录还涵盖变更规模、测试数量、许可证信息等元数据,并通过内容指纹与唯一ID实现稳定标识。尤为重要的是,该数据集提供了独立的验证脚本,该脚本与生成流程完全隔离,能够重新克隆仓库、检出提交并运行测试,从而独立审计每条记录的真实性,这种‘可校验而非仅可信’的设计理念,是其在众多缺陷修复基准中的独特优势。
使用方法
Goldset数据集主要面向评估编码智能体的缺陷修复与检测能力。使用者可通过HuggingFace的datasets库便捷加载测试集,并依据granularity与committed_at等字段筛选出符合需求(如函数级、修复时间晚于模型截止日期)的子集。对于缺陷修复任务,将source_before与spec输入模型,要求其生成修复代码,然后运行fail_to_pass中指定的pytest测试节点,以测试是否由失败转为通过作为客观奖励信号,无需人工或裁判模型。对于缺陷检测任务,则可询问模型source_before是否含有缺陷,并以source_after作为标准答案。该数据集的执行性奖励机制还支持对智能体框架与脚手架本身的评估,通过对比同一模型在不同框架下的得分差异,分离模型自身能力与外部工具的贡献。使用时需注意,尽管数据集不包含保留的未公开部分,但公开部分可能已存在于模型预训练语料中,建议报告评估所用时间窗口以避免污染影响。
背景与挑战
背景概述
在软件工程与人工智能的交叉领域,自动化程序修复与缺陷检测已成为研究热点,而评估这些智能体性能的关键在于高质量基准数据集。Goldset数据集由Andrew Salvo于2026年创建,旨在提供一个经过严格验证的Python真实缺陷修复记录集合。该数据集包含896条来自352个开源项目的记录,每条记录均包含缺陷代码、作者修复后的代码及一个能够区分前后状态的回归测试,且所有记录均通过实际运行验证,确保了可靠性与可复现性。其设计支持缺陷修复、缺陷检测及智能体框架评估等任务,通过可执行的测试作为奖励信号,避免了人工评估的主观性。Goldset的发布为编程智能体的评估提供了更真实、更具挑战性的基准,对推动自动化软件修复领域的发展具有重要意义。
当前挑战
Goldset数据集在构建与使用中面临多重挑战。首先,其针对的领域问题——自动化程序修复——本身具有高度复杂性,缺陷修复不仅需要理解代码语义,还需生成正确且风格一致的补丁,而一个测试通过并不能保证修复的完全正确,这限制了评估的准确性。其次,在数据构建过程中,严格的质量控制带来巨大困难:仅约十分之一的候选记录通过验证,且需确保记录的真实性与可复现性,这要求对每个修复提交进行双重测试验证。此外,数据集的Python限定性使其无法覆盖其他语言,非随机抽样可能导致偏差,而潜在的预训练数据污染问题也需要通过日期记录与保留集来缓解,这些挑战共同形塑了Goldset在评估中的适用范围与解释力度。
常用场景
经典使用场景
Goldset数据集的核心应用场景在于构建与评估代码修复智能体。它提供了896条经过验证的真实软件缺陷记录,涵盖352个Python项目,每条记录均包含缺陷代码、作者修复、以及能够区分二者的失败转通过测试。研究者可利用该数据集对代码生成模型进行微调或零样本评估,具体任务包括缺陷修复,即输入缺陷代码和功能规格,要求模型生成修复方案,并依据可执行测试自动判定修复是否成功;同时支持缺陷检测任务,即判断给定代码是否含有缺陷,以修复后代码作为真实标签。此外,该数据集还适用于评估智能体框架本身,如工具调用、代码检索和测试执行等复杂管线的性能。
实际应用
在实际应用中,Goldset可直接用于企业级代码质量保障工具的原型验证。开发团队可利用该数据集测试自动化缺陷修复工具在自身代码库上的适配性与鲁棒性,也可作为持续集成环节中智能编程助手的评估集。例如,辅助开发者定位代码缺陷、生成补丁建议,并自动运行回归测试以验证修复正确性,从而降低人工审查成本,提升软件维护效率。同时,数据集中的时间戳信息使团队能模拟模型训练截止日期后的“未见过”缺陷,用于持续监控模型在最新代码上的表现,为自动化修复工具的迭代升级提供数据支撑。
衍生相关工作
Goldset的发布促进了多个方向的后续研究。其可执行测试奖励机制启发了强化学习环境下代码修复模型的训练范式,推动了以测试通过率为奖励信号的优化算法设计。数据集的公开记录也被用于构建缺陷检测器、代码差异摘要器以及智能体评估框架的基准测试套件。此外,研究社区基于其“保持验证、不信任数据”的理念,衍生出关于数据集偏差、时间泄漏与模型遗忘问题的系统性分析,以及如何利用不可见留存集进行公平评估的方法论探讨。这些工作共同推动了可信代码智能评估体系的建设,并促使更多研究者关注真实世界数据在AI软件开发中的应用价值。
以上内容由遇见数据集搜集并总结生成
二维码
社区交流群
二维码
科研交流群
商业服务