开源软件中的GenAI自白:开发者如何用、项目如何管、代码质量受何影响?

论文:Self-Admitted GenAI Usage in Open-Source Software

arXiv:2507.10422
Self-Admitted GenAI Usage in Open-Source Software
Tao Xiao, Youmei Fan, Fabio Calefato, Christoph Treude, Raula Gaikovina Kula, Hideaki Hata, Sebastian Baltes
Comments: 17 pages, 8 tables, 1 figures, currently under review
Subjects: Software Engineering (cs.SE)

一段话总结:

该研究以自承认的GenAI使用(开发者在代码注释、提交信息和文档中明确提及使用GenAI工具)为视角,分析了25万+GitHub开源仓库,识别出156个仓库中的1292次相关提及。通过混合方法研究,得出包含32项任务、10种内容类型和11种使用目的的分类体系;分析了13项GenAI使用政策及开发者调查,揭示项目对GenAI的规范;同时发现GenAI采用后代码 churn 未普遍增加,与流行观点相悖。

研究背景:当AI写代码成常态,我们却看不清它的“真面目”

打开GitHub,你可能会看到一段完美运行的代码,但你很难分辨:这是开发者一行行敲出来的,还是ChatGPT、GitHub Copilot“一键生成”的。

近年来,生成式AI(GenAI)工具像一阵旋风席卷了软件开发圈。开发者用它们写代码、查bug、翻文档,甚至自动生成提交信息——但问题来了:这些AI生成的代码和人工代码长得太像,我们根本不知道它在开源项目里到底被用了多少、怎么用的,更说不清它对代码质量是好是坏。

就像我们吃外卖时,想知道食材是否新鲜、烹饪是否卫生,但如果商家不标注“半成品加热”还是“现做”,我们永远只能猜。开源项目里的AI代码也是如此:没有明确的“自白”,开发者、维护者和使用者都像在“盲盒”里开发。

这篇论文就想解决这个问题:通过开发者主动“承认”使用GenAI的痕迹(比如代码注释里写“这段由ChatGPT生成”),来揭开GenAI在开源世界的真实面貌。

主要作者及单位信息

  • Tao Xiao(九州大学,日本)
  • Youmei Fan(奈良先端科学技术大学院大学,日本)
  • Fabio Calefato(巴里大学,意大利)
  • Christoph Treude(新加坡管理大学,新加坡)
  • Raula Gaikovina Kula(大阪大学,日本)
  • Hideaki Hata(信州大学,日本)
  • Sebastian Baltes(拜罗伊特大学,德国,通讯作者)

创新点:从“被动猜测”到“主动承认”,换个角度看GenAI

这篇论文最亮的地方,是提出了**“自承认的GenAI使用”**这个概念——简单说,就是开发者在代码注释、提交信息或项目文档里,明确写了“我用了ChatGPT”“这段由Copilot生成”。

以前研究GenAI在开发中的使用,要么靠工具厂商的内部数据(普通人拿不到),要么靠猜(因为AI代码和人工代码难区分)。但这次,研究者直接“抓”那些主动“坦白”的案例,相当于让开发者自己告诉我们:“我用了AI,用它做了这些事”。

这种视角的好处是:真实、直接,能绕过“区分AI和人工代码”这个技术难题,直接聚焦开发者的真实行为。

研究方法:从25万+仓库里,“挖”出1292条GenAI的“自白”

研究者的步骤很清晰,像在“筛沙子找金子”:

  1. 选仓库:缩小范围,锁定有价值的样本
    从73万多个GitHub仓库里,先挑出用Python、JavaScript等5种热门语言的项目,再排除掉没许可证、没发布过、贡献者太少的“不活跃”仓库,最后留下14785个“正经”开源项目。

  2. 找“自白”:捕捉开发者的明确提及
    用脚本搜索这些仓库里的代码注释、文档和提交信息,找包含“ChatGPT”“Copilot”的内容。但不是所有提及都算——比如代码里调用ChatGPT的API不算,只有“用它生成了内容”才算。最后手动筛选出1292条“真·自白”(来自156个仓库)。

  3. 做分析:给“自白”分类,看政策,测代码质量

    • 定性分析:给1292条“自白”贴标签,总结出用GenAI做什么任务(比如写代码、翻译)、生成什么内容(比如源文件、文档)、为什么提它(比如承认使用、提醒注意)。
    • 政策研究:从“自白”里找出13个项目的GenAI使用规则(比如“禁止用AI”“必须说清楚用了AI”),再 survey 开发者了解背后的原因。
    • 代码质量分析:用“代码churn”(14天内被修改或回滚的代码比例)当指标,对比项目用GenAI前后的变化,看AI是否让代码更“短命”。

主要贡献:这3个发现,让我们重新认识GenAI在开源中的角色

  1. 搞懂了开发者用GenAI干些啥
    总结出32种任务(最常见的是写代码、翻译文字、重构代码)、10种生成内容(主要是源文件和文档)、11种目的(最多的是“承认用了AI”,还有提醒“这段AI生成的可能有问题”)。
    举个例子:有开发者在注释里写“这段几何变换代码由ChatGPT生成,prompt是……”,也有人说“ChatGPT翻译的文档,我英语不好请多包涵”。

  2. 摸清了开源项目对GenAI的“规矩”
    项目态度两极分化:有的完全禁止(比如怕版权纠纷),有的要求必须说清楚用了AI(比如PR里要注明),还有的鼓励用(比如用AI写PR描述)。开发者最担心的是:AI训练数据的版权、生成内容的许可证、敏感信息泄露(比如用AI时不小心把密码传上去了)。

  3. 推翻了“AI让代码质量下降”的传言
    之前有报告说“用了AI后,代码churn上升,质量变差”,但这里的研究发现:大部分项目用了AI后,代码churn没涨,甚至降了。只有少数项目有上升,但不是普遍现象——也就是说,AI没那么“坑”,关键看怎么用。


思维导图:

在这里插入图片描述


详细总结:

  1. 引言

    • 背景:生成式AI工具(如ChatGPT、GitHub Copilot)改变软件开发,但实际使用模式研究较少,因生成代码与人工代码难区分。
    • 核心概念:自承认的GenAI使用(开发者明确提及使用GenAI),类比自承认的技术债务。
    • 研究问题:聚焦三个RQ,旨在理解GenAI使用场景、规范及对代码质量的影响。
  2. 研究方法

    • 样本选取:从735,669个仓库筛选,最终保留14,785个,涵盖Python、JavaScript等5种语言,排除非标准许可、无发布等仓库。
    • 数据收集:检索ChatGPT和GitHub Copilot的提及,通过Python脚本搜索代码注释、文档、提交信息,手动筛选出1292个真阳性提及(来自156个仓库)。
    • 分析方法:定性编码(任务、内容、目的)、政策分析、开发者调查、回归不连续性设计(RDD)分析代码churn。
  3. RQ1:GenAI使用的任务、内容和目的

    • 任务:32项,主要包括代码生成(105次)、翻译(50次)、代码重构(29次)等,且存在人类后续修正行为(如修复AI生成代码的bug)。
    • 内容类型:10种,主要为源文件(176次)、文档文件(106次)、提交信息(1003次,多来自单一仓库)。
    • 目的:11种,主要为承认使用(1236次)、质量保证(如请求同行评审)、规范使用等。
  4. RQ2:GenAI使用的现有规范

    • 政策与指南:13项,分为两类:
      • 禁止使用:如jqwik-team/jqwik禁止GenAI生成内容,因版权问题。
      • 规范使用:如graycoreio/daffodil要求PR中披露GenAI使用;avaloniaui/avalonia鼓励用GenAI写PR描述。
    • 开发者调查:开发者对规范需求存在分歧,部分关注版权、数据隐私,部分担忧限制创新。
  5. RQ3:GenAI使用对代码churn的影响

    • 代码churn定义:14天内被修改或回滚的代码比例。
    • 结果:与GitClear报告相反,151个仓库中,整体代码churn平均下降(文件级从0.17→0.06,行级从0.68→0.50),仅少数仓库上升。
    • RDD分析:149个仓库中,仅26-30个有显著趋势,无系统性上升。
  6. 研究贡献

    • 提出GenAI使用的分类体系(32任务、10内容、11目的)。
    • 基于13项政策和调查,提供负责任使用建议。
    • 揭示GenAI对代码churn的多样化影响,挑战质量下降观点。

关键问题:

  1. 什么是“自承认的GenAI使用”?其在研究中的作用是什么?
    答:“自承认的GenAI使用”指开发者在代码注释、提交信息或项目文档中明确提及使用GenAI工具(如ChatGPT、GitHub Copilot)进行内容创作的行为,灵感来自“自承认的技术债务”概念。其作用是作为研究GenAI在开源项目中实际使用的视角,帮助识别GenAI的使用场景、规范及影响,因生成代码与人工代码难以区分,需依赖开发者的明确提及。

  2. 开源项目对GenAI使用的规范主要有哪些类型?各有什么代表性案例?
    答:主要分为两类:

    • 禁止使用:如jqwik-team/jqwik在贡献者协议中禁止使用GitHub Copilot等工具,因版权问题;shoelace-style/shoelace禁止AI生成代码,担忧伦理和许可问题。
    • 规范使用:如graycoreio/daffodil要求PR中披露GenAI使用;avaloniaui/avalonia鼓励用GenAI翻译PR描述;owasp/wrongsecrets警告GenAI可能导致敏感信息泄露。
  3. 该研究关于GenAI使用对代码churn的影响与GitClear报告有何不同?原因可能是什么?
    答:差异在于:GitClear报告称GenAI采用后代码churn增加,暗示代码质量下降;而该研究发现代码churn无普遍增加,整体平均下降,仅少数仓库上升。原因可能是方法不同:GitClear使用全球截止日期,而该研究以仓库首次自承认GenAI使用为时间点,更精细;且该研究区分了文件级和行级churn,并分析了具体仓库模式。

总结:GenAI在开源里的“自白”,告诉我们什么?

这篇论文通过“开发者主动承认用GenAI”的痕迹,第一次清晰地展示了:

  • 开发者用GenAI做的最多的是写代码、翻译和重构,而且会主动提醒“这是AI生成的,注意检查”;
  • 开源项目对GenAI的态度从“完全禁止”到“鼓励使用”都有,核心是怕法律风险和质量问题;
  • 说“AI让代码质量下降”太绝对,实际影响五花八门,没有统一的“变坏”趋势。

简单说,GenAI已经成了开源开发的“常规工具”,但怎么用好、管好,还需要更多规范——而开发者的“自白”,正是透明化的第一步。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/91685.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/91685.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/91685.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI绘画版权问题全解析:你的作品真的属于你吗?

AI绘画版权问题全解析:你的作品真的属于你吗? 关键词:AI绘画、版权归属、生成式AI、训练数据、独创性、法律合规、知识产权 摘要:当你用MidJourney生成一张“赛博朋克风格的熊猫”,或用Stable Diffusion画出“梵高笔触的星空咖啡馆”时,你是否想过:这张图的版权属于你、…

深入理解Linux文件I/O:系统调用与标志位应用

目录 一、引入 二、标志位 1、什么是标志位? 2、标志位传递示例 输出结果分析 关键点解释 三、文件描述符(File Descriptor)(先大概了解) 四、接口介绍:open()函数 1、命令查看 2、头文件 3、函数原型 4、参数说明 …

海康线扫相机通过采集卡的取图设置

目录 1、扫描高度小于65000行 1.1 软触发 1、采集卡设置项 2、相机设置项 1.2 硬触发 1、采集卡设置项 2、相机设置项 2、扫描高度大于65000行 1.1 软触发 1、采集卡设置项 2、相机设置 1.2 硬触发 1、采集卡设置项 2、相机设置 2.1 帧扫描 2.2 行扫描 3、注意…

InfluxDB 3与Apache Parquet:打造高性能时序数据存储与分析解决方案

在当今数据驱动的时代,各行业产生的数据量呈爆炸式增长,如何高效存储和管理海量数据成为企业和开发者面临的重大挑战。对于时序数据而言,其具有数据量大、写入频繁、查询模式多样等特点,对存储系统的性能和效率提出了更高的要求。…

20250718-4-Kubernetes 应用程序生命周期管理-Pod对象:实现机制_笔记

一、Pod对象1. 资源共享实现机制1)共享网络基本概念实现方式:通过将业务容器网络加入到负责网络的容器(infra container)实现网络共享核心特点:共享网络协议栈(包括TC…

防爆手机是什么?能用普通手机改装吗?

在石油开采平台的井架之上,在化工车间的反应釜旁,在煤矿深达千米的巷道中,一群特殊的工作人员正使用着看似普通的通讯设备。这些设备外壳上醒目的Ex防爆认证标志,揭示着其与众不同的身份——防爆手机。这类专为易燃易爆环境设计的…

gem install报错解析

报错内容 [rootlocalhost ~]# gem install bundler Fetching: bundler-2.6.9.gem (100%) ERROR: Error installing bundler:bundler requires Ruby version > 3.1.0. The current ruby version is 2.5.0.解决方案(任选其一) 这个错误表明你当前的 Ru…

css 如何实现大屏4个占位 中屏2个 小屏幕1个

1、 使用grid.container {display: grid;grid-template-columns: repeat(4, 1fr);gap: 20px;border: 1px solid red;width: 400px;height: 400px;}media (max-width: 768px) {.container {grid-template-columns: 1fr;}}media (min-width: 768px) and (max-width: 992px) {.con…

Redis学习系列之—— JDHotKey 热点缓存探测系统

一、为什么需要热点缓存探测 在回答这个问题前,我们先考虑一下:为什么光用 Redis 还不够,还需要使用本地缓存? 一般来说,Redis 集群的性能能抗住几十万并发,能够应付大部分情况。但对于一些头部 APP&#x…

Linux 安全加固

Linux 安全加固需要从​​用户权限、系统服务、网络防护、日志审计、文件系统、访问控制​​等多个维度入手,目标是减少攻击面、限制未授权访问、提升系统健壮性。以下是​​详细步骤实操示例​​,覆盖主流 Linux 发行版(如 CentOS/Ubuntu&am…

【Docker#2】容器历史发展 | 虚拟化实现方式

一、前言 – 容器技术发展史 容器技术是现今计算技术的重要组成部分,其发展历程可以追溯到很早的计算机系统提供的进程隔离工具。以下是容器技术的发展历程,其中涵盖了从早期的进程隔离技术到现代云计算和云原生的演变: ① Jail 时代 1979 年…

React + Mermaid 图表渲染消失问题剖析及 4 种代码级修复方案

Mermaid 是一个流行的库&#xff0c;它可以将文本图表&#xff08;例如 graph LR; A-->B;&#xff09;转换为 SVG 图表。在静态 HTML 页面中&#xff0c;Mermaid 会查找 <pre class"mermaid"> 代码块&#xff0c;并在页面加载时将它们替换为渲染后的图表。它…

[Element]修改el-pagination背景色

[Element]修改el-pagination背景色 代码 <el-pagination:current-page.sync"queryParams.current":page-size.sync"queryParams.size":page-sizes"[10, 20, 50, 100]"layout"prev, pager, next, jumper, sizes":total"queryP…

Docker 可用镜像列表

Docker 镜像源列表&#xff08;7月15日更新-长期&免费&#xff09;_dockerhub国内镜像源列表-CSDN博客

低代码可视化工作流的系统设计与实现路径研究

一、背景分析在数字化转型不断深化的背景下&#xff0c;企业业务流程呈现出高度定制化与动态调整的趋势&#xff0c;传统信息系统在开发周期、实施成本与扩展能力上的局限性日益凸显&#xff0c;已难以支撑快速响应和敏捷迭代的实际需求。面向这一现实挑战&#xff0c;基于 BPM…

mac mlx大模型框架的安装和使用

mlx是apple平台的大模型推理框架&#xff0c;对mac m1系列处理器支持较好。 这里记录mlx安装和运行示例。 1 安装mlx框架 conda create -n mlx python3.12 conda activate mlx pip install mlx-lm 2 运行mlx测试例 以下是测试程序&#xff0c;使用方法和hf、vllm等推理框架基…

JAVA 使用Apache POI合并Word文档并保留批注的实现

一、需求背景 在实际工作中&#xff0c;我们经常需要将多个Word文档合并成一个文件。但当文档中包含批注&#xff08;Comments&#xff09;时&#xff0c;传统的复制粘贴会导致批注丢失或引用错乱。本文将介绍如何通过Java和Apache POI库实现保留批注及引用关系的文档合并功能。…

Linux的服务管理工具:`systemd`(`systemctl`)和`SysVinit ` 笔记250718

Linux的服务管理工具:systemd(systemctl)和SysVinit 笔记250718 Linux的服务管理工具 Linux 的服务管理工具随着发行版和初始化系统的发展而演变。以下是主要的服务管理工具及其对应的初始化系统&#xff1a; 1. systemd (现代主流标准) 初始化系统&#xff1a; 是绝大多数…

Couchbase 可观测性最佳实践

Couchbase 介绍 Couchbase 是一个开源的分布式 NoSQL 数据库&#xff0c;专为高性能和高可扩展性设计&#xff0c;适用于实时数据处理的企业应用。它结合键值存储和文档数据库的优势&#xff0c;支持 JSON 文档存储&#xff0c;并通过 N1QL&#xff08;类 SQL 查询语言&#x…

构建基于MCP的LLM聊天机器人客户端开发指南

引言 在当今人工智能技术快速发展的时代&#xff0c;大型语言模型(LLM)已成为构建智能应用的核心组件。MCP(Modular Conversational Platform)作为一个强大的对话平台&#xff0c;为开发者提供了将LLM能力与自定义工具集成的标准化方式。本文将详细介绍如何使用Python开发一个…