当AI写的代码遍布互联网,我们还能分清它是ChatGPT、Claude还是DeepSeek的手笔吗?

一段代码,能暴露它的“亲生父亲”

想象这样一个场景:你打开一个开源项目,看到一段优雅的Python函数,代码简洁、注释清晰。它可能是某位资深工程师熬夜写的,也可能是你随手召唤的AI助手几秒钟生成的。但如果是AI,你能看出它出自哪个模型吗?是温文尔雅的Claude,还是逻辑缜密的ChatGPT?

这听起来像科幻小说,但四川大学的研究团队最近在代码归因领域投下了一枚重磅炸弹——他们发现,不同的大语言模型在生成代码时,会留下独一无二的“指纹”,就像人类的笔迹一样,可以被识别、被追溯。

这项研究名为 《Code Fingerprints: Disentangled Attribution of LLM-Generated Code》,首次系统定义了“LLM代码来源归因”任务,并提出了一个能精准识别代码“亲生父亲”的框架——DCAN(解耦代码归因网络)

为什么我们要“人肉”AI代码?

你可能会问:知道代码是谁写的,重要吗?

太重要了。

想象这些场景:

安全漏洞爆发:某天你的系统被攻破,黑客利用了一段AI生成的漏洞代码。如果不知道这段代码来自哪个模型,你就无法评估风险范围,也无法向模型提供商反馈修复。

版权纠纷:一家公司起诉你使用了他们模型生成的代码,侵犯了知识产权。你需要证明这段代码其实是另一家开源模型写的。

软件供应链审计:你的项目依赖大量AI生成的代码,如果某个模型被爆出“后门”,你需要快速定位哪些代码来自该模型,及时替换。

代码归因,就是给每一段AI生成的代码打上“出生证明”。

01

论文核心亮点:不止于

“区分人机”,更能“锁定模型”

这篇聚焦LLM生成代码模型级溯源(LLMCSA)的研究,核心突破在于跳出“二进制检测”的局限,针对性解决多模型溯源的行业痛点。其核心成果可概括为三大亮点,每一个都直击行业需求:

1. 首次明确任务定义:清晰界定LLMCSA任务边界,填补了模型级代码溯源领域的定义空白,为后续研究划定清晰方向;

2. 构建标准化数据集:打造首个大规模基准数据集,涵盖9万+代码样本,为行业提供统一、可靠的评估载体;

3. 创新解纠缠策略:提出DCAN归因框架,精准分离代码中的“任务语义”与“模型指纹”,实现多场景下的高精度溯源,为实际应用提供可落地的技术方案。

02

行业痛点凸显:

LLM代码溯源难

2.1 溯源需求迫在眉睫

随着DeepSeek、Qwen、ChatGPT等主流LLM在软件开发中广泛应用,代码生成效率实现质的飞跃,但安全隐患与合规风险也随之攀升:生成代码出现漏洞、恶意逻辑,或涉嫌知识产权侵权时,若无法锁定生成模型,责任认定、风险处置便会陷入僵局。

而传统检测技术的局限的愈发明显——多数方法仅能区分“机器生成”与“人类编写”,面对多模型共存的实际场景,根本无法完成精准溯源;少数尝试模型级溯源的方案,要么依赖人工设计特征,主观性强、泛化性差,要么局限于单一编程语言,难以适配多样化的开发需求。

2.2 两大核心难点,卡壳行业发展

模型级代码溯源之所以难,核心在于两大“拦路虎”,也是川大团队重点攻克的方向:

1. 任务语义干扰:同一编程任务,不同LLM会生成功能相似、语法规范相近的代码,任务本身的语义信息会“掩盖”模型专属的生成风格,让传统方法难以区分;

2. 模型指纹隐蔽:LLM的训练数据、架构设计、解码机制存在差异,这些差异会转化为代码风格、token偏好等“生成指纹”,但这些指纹极其细微,传统特征提取方法根本抓不住。

针对这一痛点,研究团队提出核心假设:代码的潜在表示可拆分为“源无关信息”(任务语义)和“源专属信息”(模型指纹),只要通过技术手段将两者分离,就能突破溯源瓶颈,实现精准归因。

03

DCAN:给代码“卸妆”,

找出素颜的模型风格

为验证假设、破解痛点,团队提出DCAN(解纠缠代码归因网络)框架,核心逻辑的是“分离干扰、聚焦指纹”,通过四大模块协同工作,实现高精度溯源,流程清晰、可落地性极强。

3.1 特征提取:捕捉代码的“完整信息”

作为DCAN的基础环节,特征提取的核心是获取包含“任务语义+模型指纹”的完整代码表示。团队选用预训练代码模型UniXCoder作为基础编码器,将分词后的代码片段输入其中,提取[CLS] token的隐藏状态作为基础表示h_base——这一步就像给代码做“全面扫描”,不放过任何隐藏的特征信息。

3.2 特征解纠缠:剥离干扰,锁定“专属指纹”

这是DCAN框架的“核心杀手锏”,也是突破语义干扰的关键。其核心目标是从h_base中,精准拆分出“源专属信息h_spec”(模型指纹)和“源无关信息h_com”(任务语义),两步就能实现高效分离:

1. 提取源无关信息h_com:通过MLP网络(MLP_com)对h_base进行投影转换,重点捕捉不同LLM在同一任务上的共享语义,确保h_com只包含任务信息,不掺杂任何模型特征;

2. 提取源专属信息h_spec:采用减法分解策略,通过h_spec = h_base - h_com,直接剥离任务语义干扰,只保留模型专属的风格、结构、token偏好等“核心指纹”——这一步,相当于给代码的“模型身份”做了精准提炼。

3.3 优化目标:兼顾精度与稳定性

为让DCAN既精准又稳定,团队设计了联合损失函数,平衡归因精度与解纠缠效果

1. 源分类损失:在h_spec基础上接入线性分类器,采用交叉熵损失,确保h_spec能精准区分不同LLM的生成特征,提升溯源精度;

2.表示一致性损失:通过最小化同一任务、不同模型生成代码的h_com余弦距离,进一步强化解纠缠效果,确保h_com只聚焦任务语义。

04

数据集支撑:

9万+样本,筑牢研究基础

没有标准化数据集,溯源方法的评估就无从谈起。为填补这一空白,团队构建了首个大规模LLM生成代码归因基准数据集,样本充足、覆盖全面,为自身研究及后续行业探索提供了可靠支撑。

样本规模:共91,804条代码片段,数量充足,可充分支撑模型训练与测试;

覆盖范围:涵盖4大主流LLM(DeepSeek、Claude、Qwen、ChatGPT)、4种主流编程语言(Python、Java、C、Go),适配多场景溯源需求;

场景划分:分为无注释(Plain)、有注释(Comment)两种场景,各45,902条样本,全面验证不同场景下的溯源性能;

任务来源:源自LeetCodeDataset的2,869个算法任务,覆盖5大领域、21个细分标签,难度分为Easy、Medium、Hard三级,分布均衡,全面考验模型性能。

为确保数据质量,团队采用标准化构建流程:统一提示词模板、严格控制生成变量、多轮数据清洗(过滤空文件、注释标准化等),彻底剔除低质量样本,让数据集更具可靠性。

05

实验验证:DCAN的表现,

证明大模型风格真的存在!

为全面验证DCAN的有效性、鲁棒性,团队围绕4个核心研究问题设计实验,通过与基线模型对比、消融实验等方式,用数据说话,证明了DCAN的硬实力。

5.1 实验设置:公平对比,全面评估

基线模型:选取CodeGPTSensor、GPTSniffer两种主流二进制检测模型,适配多分类归因场景,作为性能对比基准;

评估指标:采用多分类准确率(Acc.)、F1分数(综合反映精确率与召回率),贴合多分类溯源场景需求;

实现细节:基于PyTorch框架,以UniXCoder为编码器,AdamW优化器,批大小32,训练12轮,单NVIDIA A100 GPU支撑,确保实验高效稳定。

5.2 核心实验结果:四大问题,一一破解

RQ1:LLM生成代码,真的有“可区分指纹”吗?

答案是:有!通过分析代码冗长度、词汇密度、命名规范等4大核心指标,结合注释风格,团队发现不同LLM的生成偏好差异显著且稳定,形成了独特的“生成指纹”:

ChatGPT:代码冗长度波动大,变量名偏短,注释密度低,偏爱行内注释,风格灵活;

Qwen:最简洁的“代码能手”,LOC中位数最低,冗余度极低;

Claude:标识符偏长,偏爱块注释,缩进规范,风格严谨;

DeepSeek:命名规范偏差较大(如Java中偏爱snake_case),注释详细,可读性强。

RQ2:多语言场景下,模型级溯源可行吗?

完全可行!DCAN在所有场景下均碾压基线模型,性能表现惊艳:

无注释场景:平均F1达92.94%,远超GPTSniffer(89.15%)、CodeGPTSensor(76.38%),无额外语义辅助也能精准溯源;

有注释场景:平均F1飙升至98.38%,注释的自然语言信号的进一步放大模型指纹,精度再上一个台阶;

任务难度影响:复杂任务(Medium/Hard)溯源准确率更高,因复杂任务的模型实现差异更显著,更易被DCAN捕捉。

RQ3:解纠缠模块,真的能提升溯源性能吗?

必须能!消融实验(Java无注释场景)给出明确答案:

仅用h_spec(源专属信息):F1达93.20%(最优),证明模型指纹能精准支撑溯源;

用h_base(原始纠缠表示):F1为92.65%,略降,说明任务语义确实会干扰精度;

仅用h_com(源无关信息):F1仅9.96%(接近随机猜测),证明解纠缠模块已彻底剥离模型特征。

更直观的是t-SNE可视化结果:h_spec空间中,不同LLM的样本聚类清晰,一眼就能区分;h_com空间中,样本高度重叠,完全无法区分——解纠缠效果一目了然。

RQ4:DCAN的鲁棒性与泛化性,经得起考验吗?

经得起!实验证明,DCAN适配多种实际场景,实用性拉满:

1. 数据效率高:仅用10%训练数据,F1仍达88.03%,远超CodeGPTSensor(61.62%),数据量有限也能稳定发挥;

2. 多语言泛化强:统一多语言模型与单语言模型性能相当,对Python还存在正向迁移,F1从83%提升至90%;

3. 零-shot跨语言能打:有注释场景下,训练3种语言、测试未见过的第4种语言,F1均超90%;无注释场景下,因Python与C家族语言语法差异大,F1降至69.70%,但仍处于可接受范围。

5.3 案例直击:DCAN到底在抓哪些“指纹”?

通过梯度显著性分析,团队揭开了DCAN的溯源逻辑——主要捕捉两类“指纹”,精准又靠谱:

无注释场景:Claude偏爱显式控制流(if/elif语句),DeepSeek常用栈相关API(.pop方法),Qwen偏爱聚合操作(sum函数),ChatGPT有独特的变量命名习惯;

有注释场景:结合语法特征与注释风格,比如Claude、DeepSeek常用.zfill()方法,GPT、Qwen常用f-string格式化;注释上,DeepSeek详细、GPT简洁,这些差异都成为溯源的关键依据。

06

行业对比:

DCAN的核心优势,一目了然

与现有研究相比,DCAN的优势十分突出,彻底解决了传统方法的痛点,具体对比可分为两类:

1. 人类vs机器代码检测:早期方法依赖统计指标,效果拉胯;后期方法(如CodeGPTSensor)虽提升了二进制检测精度,但仅能区分“人机”,无法实现模型级溯源,满足不了实际需求;

2. 模型级归因方法:主动式方法需修改LLM生成流程(嵌入水印),适用性有限;被动式方法依赖人工特征或单一语言,泛化性、准确性双低。

而DCAN的核心优势,正是精准破解了这些痛点:无需修改LLM生成流程(被动式归因),适用性更强;自动提取模型指纹,避免人工设计的主观性;支持多语言、多场景,泛化性与准确性双领先,更贴合行业实际应用需求。

07

总结与展望:

DCAN的价值,不止于溯源

7.1 核心成果总结

这篇研究用扎实的实验与创新的方法,得出四大核心结论,为行业发展提供了重要支撑:

1.不同LLM生成的代码,存在稳定、可区分的“生成指纹”,为模型级溯源奠定了基础;

2.解纠缠技术能有效剥离任务语义干扰,显著提升溯源性能,验证了核心假设的正确性;

3.DCAN框架在多语言、不同数据规模、零-shot跨语言场景下表现优异,实用性极强;

4.注释能补充自然语言指纹,与代码语法特征协同,进一步提升溯源精度。

7.2 研究局限与未来方向

尽管DCAN表现惊艳,但仍有可提升空间,也为后续研究指明了方向:

覆盖范围可拓展:目前仅验证了4种LLM、4种编程语言,未覆盖小众模型与冷门语言,泛化性仍需进一步验证;

零-shot性能可优化:无注释场景下,Python的零-shot跨语言溯源性能(F1=69.70%)还有提升空间;

对抗性场景需探索:未验证LLM刻意模仿其他模型风格时的溯源性能,后续可重点突破。

08

应用落地:

DCAN能解决哪些实际问题?

DCAN的出现,不仅填补了行业技术空白,更在多个实际场景中具备广泛应用价值,真正实现了“技术落地”:

8.1 理论价值

首次明确LLMCSA任务定义,提出解纠缠归因思路,为代码溯源领域提供了全新研究方向;构建的大规模基准数据集,填补了行业无标准化评估载体的空白,推动后续研究规范化发展。

8.2 实际应用场景

软件安全问责:生成代码出现漏洞、恶意逻辑时,快速锁定生成模型,明确责任主体,为安全事件处置提供依据;

知识产权合规:检测代码是否来自未授权LLM,规避侵权风险,保障软件企业合法权益;

软件取证:安全事件调查中,追溯代码生成来源,辅助案件分析,为取证工作提供技术支撑;

编程教育:检测学生提交的代码是否由特定LLM生成,辅助教师判断学生真实编程能力,维护学术诚信。

结语

AI正在重塑软件开发的每一个角落,但正如人类作家各有风格,AI模型也留下了不可复制的“指纹”。DCAN就像一位经验丰富的笔迹鉴定专家,能透过代码的“伪装”,一眼看穿它的“亲生父亲”。

下次你再用AI助手写代码,不妨想想:这段代码里,藏着多少个只有它才知道的“小习惯”?而这些习惯,正悄然定义着它的身份。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐