Code Fingerprints: Disentangled Attribution of LLM-Generated Code

本文针对大语言模型生成代码的归属问题,提出了能够分离语义与风格特征的解耦代码归属网络(DCAN),并构建了首个跨模型与多语言的大规模基准数据集,实现了可靠的模型级代码溯源。

Jiaxun Guo, Ziyuan Yang, Mengyu Sun, Hui Wang, Jingfeng Lu, Yi Zhang

发布于 2026-03-05
📖 1 分钟阅读☕ 轻松阅读

Each language version is independently generated for its own context, not a direct translation.

这篇论文讲述了一个非常有趣且实用的问题:当一段代码是由人工智能(AI)写出来的,我们如何知道它具体是“哪位”AI 写的?

想象一下,如果世界上有四位著名的厨师(比如 ChatGPT、Claude、DeepSeek 和 Qwen),他们都能做出一模一样的“宫保鸡丁”(解决同一个编程问题)。虽然菜的味道(功能)是一样的,但每位厨师切菜的手法、放盐的习惯、甚至摆盘的细节(代码风格)都藏着他们独特的“指纹”。

这篇论文就是为了解决"AI 代码指纹识别"的问题。

以下是用通俗易懂的比喻和语言对这篇论文的解读:

1. 核心难题:为什么很难分辨?

现在的 AI 写代码太厉害了,它们都能写出功能完美的程序。

  • 以前的做法:就像警察抓人,只问“这菜是人做的还是机器做的?”(二元检测)。
  • 现在的挑战:警察需要知道“这菜到底是哪位厨师做的?”(多源归属)。
  • 难点:因为大家做的都是“宫保鸡丁”,所以菜里的鸡肉、花生(核心逻辑)长得都一样。如果只看这些,根本分不清是谁做的。我们需要找到那些只有特定厨师才有的习惯

2. 解决方案:DCAN( disentangled 解耦网络)

作者提出了一个叫 DCAN 的新方法。它的核心思想可以用一个"去重分离"的比喻来理解:

想象你拿到一杯混合了果汁(任务逻辑)和墨水(AI 风格)的饮料。

  • 果汁:不管是谁做的,宫保鸡丁都需要鸡肉和花生。这是所有 AI 共有的“任务逻辑”。
  • 墨水:这是每个 AI 独特的“笔迹”。有的 AI 喜欢用长名字,有的喜欢用短名字;有的喜欢写很多注释,有的喜欢极简。

DCAN 的工作流程就像是一个神奇的“分离机”:

  1. 混合输入:把 AI 写的代码扔进去。
  2. 提取“果汁”:机器先分析出这段代码是做什么的(比如“计算斐波那契数列”),这部分是通用的,跟谁写的没关系。
  3. 分离“墨水”:机器把“果汁”从代码里抽走,剩下的就是纯粹的“墨水”——也就是只有特定 AI 才有的风格指纹
  4. 识别身份:最后,机器只看剩下的“墨水”,就能准确判断出:“哦,这肯定是 Claude 写的,因为它喜欢用这种特定的变量命名方式。”

3. 他们做了什么实验?(建立了一个巨大的“指纹库”)

为了训练这个“分离机”,作者们做了一个超级大工程:

  • 四位大厨:他们让四个最火的 AI(DeepSeek, Claude, Qwen, ChatGPT)干活。
  • 四国语言:让它们用 Python, Java, C, Go 四种语言写代码。
  • 两千多道题:从 LeetCode(编程题库)里找了 2800 多道不同的题目。
  • 两种模式
    • 纯代码模式:只写代码,不写解释。
    • 带注释模式:代码里夹杂着 AI 写的中文或英文解释。
  • 成果:最终收集了 9 万多条 高质量的代码样本,建立了一个前所未有的“指纹数据库”。

4. 发现了什么秘密?(AI 的“性格”藏不住)

通过实验,作者发现 AI 们真的有自己的“性格”:

  • ChatGPT:有点像话痨,代码写得比较啰嗦,变量名喜欢用短单词。
  • Claude:喜欢用很长的、描述性很强的变量名,注释写得很有条理。
  • DeepSeek:喜欢用特定的函数库(比如栈操作),注释风格很具体。
  • Qwen:喜欢用蛇形命名法(snake_case),哪怕是在 Java 这种通常用驼峰命名的语言里。

最有趣的是:即使题目很难(Hard 模式),AI 们依然保持这些习惯。甚至当它们用不同的编程语言写代码时,那种“说话的口吻”和“写注释的风格”依然能暴露它们的身份。

5. 这个研究有什么用?

这就好比给软件世界装上了“防伪标签”:

  • 安全审计:如果一段代码里有漏洞,我们可以立刻知道是哪个 AI 生成的,从而针对性地修复或排查。
  • 版权保护:如果一家公司声称代码是自己写的,但其实是 AI 生成的,或者用了竞争对手的 AI 生成的,这个技术可以揭穿它。
  • 事故调查:如果系统崩溃了,是哪家 AI 写的“坏代码”导致的?这个技术能迅速定位。

总结

这篇论文就像是在说:“别以为 AI 写的代码都长得一样,它们每个人都有自己的‘笔迹’。我们发明了一种新工具,能把代码里的‘任务内容’和‘作者风格’分开,从而像笔迹鉴定一样,精准地找出是哪个 AI 写的代码。”

这不仅让 AI 生成的代码有了“身份证”,也让未来的软件世界更安全、更透明。