GPL白写了:AI三秒钟绕过你的开源协议
最近掘金上有个帖子火了,介绍了一个叫malus的项目。这东西干了一件特别欠揍的事——它用AI”学习”一段GPL协议的代码,然后输出一段功能完全相同的”全新”代码,挂上MIT协议。
法律上,完全合规。
GPL白写了。你精心选择的开源协议,被一个AI用三秒钟绕过去了。
你以为License是防盗门,其实是纸糊的
大部分程序员对开源协议有一种朴素的信任:我选了GPL,别人就不能拿我的代码做闭源产品;我选了MIT,至少得保留我的版权声明。
这个信任在人类世界里基本成立。你抄了我的代码,diff一下就能看出来,法庭上铁证如山。
但AI改变了游戏规则。
当一个大语言模型”读”了你的代码之后,它不是在复制粘贴——它是在”理解”。它学会了你代码背后的逻辑、模式、算法思路,然后用完全不同的变量名、不同的代码结构,重新”写”出一段功能一样的代码。
这就像一个厨师看了你的菜谱,理解了做法,然后用自己的话重新写了一份。新菜谱的每一个字都是他写的,但菜的味道跟你的一模一样。
你能告他抄袭吗?不能。因为版权法保护的是”表达”,不是”想法”。你的菜谱文字有版权,但”红烧肉先焯水再上色”这个方法本身——不好意思,谁都可以用。
代码也一样。你的具体代码文本有版权,但你代码里的算法逻辑、设计模式、架构思路——AI提取出来之后,法律上跟你没关系了。
Copilot:全球最大的”洗代码”机器
malus好歹是个讽刺项目,明着告诉你”我在演示漏洞”。但有一个产品,正儿八经地、大规模地、商业化地在干同样的事——GitHub Copilot。
微软拿GitHub上几乎所有公开仓库的代码训练Copilot,其中包括大量GPL协议的代码。按GPL的精神,你用了我的代码,你的衍生作品也得开源。
微软的法务团队怎么说?”AI生成的代码是全新创作。”
翻译成人话:你的GPL代码喂给了AI,AI”学会”之后吐出来的东西,跟你没有法律上的继承关系。GPL的传染性条款?失效了。
气不气?但从现行版权法的角度看,微软说的还真没毛病。
2023年一帮开发者联合起诉了Copilot,官司拖到现在还没结。但法律界的主流判断是——原告赢面不大。你很难证明AI”吐”出来的某一行代码,是从你的某一行代码”复制”来的。
你贡献的开源代码,正在免费给闭源产品打工。而你对此,什么都做不了。
知识 vs 载体:一个让人绝望的类比
为什么开源协议在AI面前这么脆弱?归根到底是一个错位——
开源协议保护的是代码的”载体”,但AI提取的是代码的”知识”。
什么是载体?就是你写下的具体字符序列——那些变量名、函数签名、注释、代码缩进。这些东西有版权。
什么是知识?就是你代码背后的逻辑——”用双指针可以把这个O(n²)优化到O(n)”、”这种并发场景用channel比mutex更优雅”。这些东西没有版权。
打个不太恰当的比方:你写了一首诗,AI把你的诗”读懂”了,然后用散文重新表达了同样的意思。字面上一个字都没抄,但你读完总觉得哪里不对。
可惜”哪里不对”不是法律用语。法院只认”你抄了哪一句”。
AI做的事情,就是把代码的”知识”从”载体”里提取出来,然后用一个全新的”载体”重新包装。
载体变了,版权就断了。GPL也好,AGPL也好,管不到。
这不是法律的bug——这是法律的feature。版权法从诞生之初就没打算保护”想法”和”知识”,它只保护”表达”。只是以前从来没有一种技术能这么高效地把”知识”从”表达”中分离出来。AI是第一个。

开源社区的三个”药方”
被掀了桌子,总得想办法重新坐下来。开源社区眼下有三个方向在折腾:
药方一:给代码打水印。
思路跟图片数字水印一样——在训练数据里埋标记,AI生成的代码如果带有你的”指纹”,就能被追溯到。
想法很美好,但代码不是照片。照片藏个水印,肉眼看不出来,机器一扫就知道。代码被AI嚼碎咽下去之后,吐出来的是全新的字符序列——你的”水印”早就消化成渣了。(就好比你在面粉里做了记号,但面包烤出来之后,你还能找到那个记号吗?)
药方二:用了我的代码?交钱。
有人设计新型协议——你可以拿我的代码训练AI,但你AI赚了钱,得分我一杯羹。类似音乐圈的”采样费”。
方向是对的,但坑太多:怎么定义”用了”?GPT训练集里有几百万个仓库的代码,你那200行贡献占百分之多少?分钱按什么比例?谁来审计?光是吵这些问题就够开三年会了。
药方三:在协议里写”禁止AI训练”。
最硬气的方案——LICENSE文件里直接加一行:No AI Training。
已经有人这么干了。但效果嘛……你在家门口贴个”禁止小广告”的告示,有用吗?代码放在GitHub上,爬虫三秒钟抓走,你根本不知道谁拿去训练了。就算知道了,你一个人去告OpenAI?人家法务团队的年薪可能比你的项目star数还多。

回到malus
malus做的事情一点都不违法。它只是把一件大家心知肚明但不愿说破的事情,做成了一个可以点击运行的demo。
开源不会消亡。写代码的人不会因为”AI可能学走我的代码”就不再开源——就像歌手不会因为”有人可能翻唱我的歌”就不唱了。
但游戏规则得改。
GPL、MIT、Apache这些协议诞生于一个前提:代码的传播方式是”复制”。复制就有痕迹,有痕迹就能追责。
AI把这个前提拆了。它不复制你的代码,它消化你的代码。消化完之后,法律上跟你毫无关系——就像malus这个项目演示的那样,三秒钟,干干净净。
malus在拉丁语里是”恶意”。但最恶意的不是这个项目本身,而是它揭示的现实:我们还在用纸质时代的锁,守一扇数字时代的门。

该换锁了。