
1. 项目概述当开源协议撞上AI的“黑箱”最近在开发者圈子里一个叫“malus”的项目引起了不小的波澜。它本身可能只是一个技术实验但其背后指向的问题却异常尖锐在AI大模型LLM和生成式AIAIGC席卷一切的今天我们沿用了几十年的开源协议是不是正在失效或者说它们正面临前所未有的挑战。“malus”这个名字本身就带有讽刺意味在拉丁语里是“坏”或“恶”的意思。这个项目以一种近乎行为艺术的方式展示了当前开源许可证在AI场景下的无力感。简单来说它可能是一个故意设计得“有毒”的开源项目其代码或数据一旦被用于训练AI模型就可能对模型产生难以预测的负面影响比如导致模型输出带有偏见、错误甚至有害的内容。然而根据现有的开源协议如MIT、Apache 2.0、GPL等使用者完全有权合法地获取、修改并使用这些代码来训练自己的AI模型。协议只管代码的“分发”和“修改”却管不了代码被“消化”进一个参数高达千亿的神经网络黑箱之后会发生什么。这不仅仅是malus一个项目的问题。想想看你现在用Stable Diffusion生成一张图用ChatGPT写一段代码或者用某个AI Agent帮你分析数据这些模型在训练时可能“吞食”了海量的开源代码、设计图、文档甚至整个维基百科。这些被“吞食”的内容其原有的开源许可证如CC BY-SA、GPL所要求的“署名”、“相同方式共享”等条款在模型的权重文件中如何体现几乎无法追溯和执行。AI时代的知识流动从清晰的“复制-分发”链条变成了模糊的“吸收-涌现”过程这让建立在“分发”和“修改”这两个核心动作上的传统开源协议显得有些措手不及。所以当我们讨论“AI时代开源协议将消亡”时并不是说开源精神死了而是指现有的法律和技术框架在应对AI带来的新范式时出现了巨大的漏洞和不确定性。malus项目就像一面镜子照出了这个漏洞迫使我们去思考在AI吞噬一切代码的时代我们该如何保护开源贡献者的权益又该如何定义AI时代新的“开放”与“共享”2. 开源协议的核心困境与AI的“消化”悖论要理解为什么AI会让开源协议陷入困境我们得先回到原点看看开源协议到底在管什么。几乎所有主流开源许可证无论是宽松的MIT、Apache 2.0还是具有“传染性”的GPL、AGPL它们的约束力都作用于一个非常具体的法律行为分发Distribution。当你将受开源协议保护的软件无论是源代码还是二进制形式分发给他人时协议条款才开始生效。例如GPL要求你在分发时必须同时提供对应的源代码Apache 2.0要求你保留原始的版权和专利声明。这些规则清晰、可执行因为“分发”是一个有明确边界的行为。然而AI大模型的训练过程彻底绕开了“分发”这个关键节点。这个过程更像是一种“消化”从“使用”到“消化吸收”传统软件开发中“使用”一个开源库通常意味着将其链接或导入到你的项目中最终产物中依然包含该库的“身影”。而AI训练则是将海量的开源代码、文本、图像作为训练数据“喂”给模型。模型通过学习数据中的统计规律和模式调整其内部数以百亿计的参数。训练完成后原始的训练数据并不会被“包含”在最终的模型文件中它被转化成了模型的“知识”或“能力”。你无法从GPT-4的模型权重中反编译出它读过的任何一行具体的开源代码。黑箱性与不可追溯性这是一个根本性的技术难题。即使一个模型完全使用GPLv3许可的代码库训练而成其产出的代码建议也受到了那些代码的影响但你无法在模型内部定位和证明这种影响。当这个模型被用于商业闭源服务如GitHub Copilot、Amazon CodeWhisperer时如何要求其遵守GPL的“传染”条款要求服务开源整个大模型吗这显然不现实也超出了GPL条款设计时的语境。输出的“衍生作品”界定模糊当AI根据用户的提示Prompt生成一段代码、一篇文章或一张图片时这个输出物是什么法律性质它是训练数据的“衍生作品”吗如果是它应该遵循哪些训练数据的许可证目前的法律几乎没有先例。例如一个用大量AGPL许可代码训练的代码生成模型它生成的代码片段是否也必须以AGPL发布这在实操中根本无法监管。malus项目的讽刺性正在于此它可能是一个以MIT协议发布的、人畜无害的代码库。任何人都可以合法地git clone它。但如果这个代码库中故意植入了一些诡异的模式或数据比如特定条件下会输出错误结果的函数当它被用作AI训练数据后这些“毒性”就会潜伏进模型影响其后续的所有生成结果。而MIT协议对此无能为力因为它只约束代码的“分发”不约束代码被“消化”后产生的间接影响。这暴露了现有协议在AI场景下的一个致命盲区它无法规制数据被用于训练后所产生的、非直接分发的下游影响。注意这里讨论的“毒性”是一个比喻用于说明协议无法约束的间接使用风险。在实际开源社区恶意投毒是严重违反开源精神的行为会被社区强烈抵制。但malus提出的是一种理论上的可能性用以拷问协议框架的边界。3. 主流开源许可证在AI场景下的“失能”分析让我们具体看看几个主流开源协议面对AI时是如何“失能”的。这能帮助我们更清晰地看到问题的症结所在。3.1 宽松型协议MIT BSD Apache 2.0几乎完全失效这类协议的要求非常简单主要是保留版权声明和免责条款。它们对使用方式几乎没有限制。AI场景下的表现对于使用MIT/BSD/Apache 2.0协议代码作为训练数据的AI项目来说这几乎是“免费午餐”。训练者只需在某个不起眼的文档里列出用到的开源项目及其协议即可完全不影响其将训练出的模型进行闭源商业化。例如一个公司可以用成千上万个Apache 2.0许可的开源项目训练一个专有的代码生成模型然后对外提供付费API服务这在当前协议框架下是完全合法的。协议只约束代码本身的分发不约束基于其训练出的模型的服务方式。3.2 弱传染型协议LGPL边界模糊LGPL设计之初是为了让专有软件可以链接使用自由软件库。它要求如果修改了LGPL库本身则需要开源修改部分但如果只是动态链接使用则不需要开源整个项目。AI场景下的困境AI模型“链接”一个LGPL库吗显然不是。它是“学习”了这个库。这既不属于静态链接也不属于动态链接是一种全新的交互方式。因此LGPL的条款很难适用。模型开发者可以主张自己只是“使用”了库的输出作为数据并未创建其“衍生作品”从而规避开源义务。这使得LGPL在AI面前变得边界极其模糊约束力大打折扣。3.3 强传染型协议GPL AGPL遭遇终极挑战GPL系列协议的核心是“Copyleft”精神如果你分发基于GPL代码的衍生作品那么你的衍生作品也必须以GPL发布。AGPL更是将“分发”的范围扩大到了“通过网络提供服务”。AI场景下的争议焦点模型是否是“衍生作品”这是最大的法律争议点。AI公司会主张模型权重文件是机器学习过程的“产出”是全新的、独立的作品而不是原始代码的“衍生品”。就像一个人读了莎士比亚后写出一部小说小说不是莎士比亚的衍生作品一样。开源社区则可能认为模型的功能性严重依赖于训练数据应被视为衍生作品。目前尚无定论。SaaS服务如何界定AGPL试图覆盖SaaS场景规定如果修改了AGPL软件并用其提供远程服务则需要向用户提供对应的源代码。但对于AI服务呢比如我用AGPL许可的代码训练了一个模型然后提供在线代码补全服务。我“修改”了AGPL代码吗似乎没有我只是用它作为数据。那么AGPL的“服务端触发开源”条款可能就无法生效。这正是像GitHub Copilot其训练数据包含大量GPL代码面临的伦理和法律质疑的核心。一个具体的思考实验假设有一个项目其许可证明确写道“本软件不得用于机器学习、人工智能训练或任何形式的模型生成。”这听起来能解决问题对吗但事实上执行起来异常困难。首先如何监测和证明某个模型使用了该软件作为训练数据技术上几乎不可能。其次这样的条款可能与传统开源定义如OSI开源定义中“不限制使用领域”的原则相冲突导致其可能不被认为是真正的“开源”许可证。malus项目如果采用这种“禁止用于AI”的许可证其讽刺性会更强它明确划出了红线但这条红线在现实中却无法被有效守卫。4. 新兴解决方案与社区实践的探索面对传统协议的困境开发者、律师和开源组织并没有坐以待毙已经开始探索新的解决方案。这些方案大致分为三类修订现有协议、创建新协议、以及采用非法律的技术或社区手段。4.1 协议层面的修补与创新“道德”许可证或伦理条款一些项目开始在许可证中加入针对AI的特定条款。例如BigScience OpenRAIL-M许可证家族在允许开源和商业使用的同时加入了“使用限制”条款禁止将模型用于监控、歧视等不道德用途。这虽然不直接解决“训练数据权利”问题但为AI模型本身的用途设立了边界。对于训练数据的保护也有提案在许可证中加入“不得用于训练与许可证作者有竞争关系的商业AI系统”之类的条款但其法律效力和可执行性有待检验。数据专用许可证认识到代码和数据在AI时代的不同专门针对训练数据的许可证开始出现。例如Creative Commons组织正在讨论如何更新其协议以适应AI。The RAIL (Responsible AI Licenses)系列也包含数据许可证。这些协议可能更明确地规定数据被用于训练后产出的模型或服务需要承担的义务比如要求标注数据来源。“互惠”式AI许可证这是一种模仿GPL“传染性”思路的新尝试。例如一种设想中的许可证可能规定“如果你使用本软件的数据训练了AI模型那么你通过该模型提供的公共服务也必须以同等开放的方式如开源模型权重或提供免费API回馈社区。”这试图将Copyleft精神延伸到AI服务领域但其复杂性和监管难度极高。4.2 技术与社区实践层面的应对除了修改法律条文社区也在通过技术和自发规范寻找出路。数据来源标注与溯源技术这是目前比较务实的方向。通过在训练数据中嵌入元数据、水印或开发算法来追溯生成式AI输出的内容与特定训练数据之间的关联性。虽然不能完全解决法律问题但可以为道德讨论、社区声誉评价和潜在的诉讼提供证据。例如spawning.ai等项目就在尝试建立工具让创作者可以“选择退出”其数据被用于AI训练。“请勿训练”元标签类似于网站的robots.txt一些网站和代码仓库开始尝试在根目录放置ai.txt或类似文件明确声明“本网站内容禁止用于AI训练”。这更多是一种道德呼吁缺乏法律强制力但表明了内容创作者的态度并对大型AI公司形成舆论压力。开源AI模型与数据的开放协作彻底拥抱变化构建完全由开源数据训练的开源AI模型生态。例如BigScience的BLOOM模型、Stability AI的Stable Diffusion模型都尽可能使用开源或已获授权的数据进行训练并将模型本身开源。这绕开了许可证纠纷通过社区协作构建属于自己的“干净”数据池和模型。这可能是最符合开源原教旨精神的出路但需要巨大的社区协作投入。实操心得作为开发者如何选择面对这个混沌的过渡期如果你是一个开源项目的维护者担心自己的代码被用于训练你不认可的AI模型目前可以采取以下混合策略明确声明在README或LICENSE文件中清晰表达你对代码被用于AI训练的立场欢迎、不欢迎或有条件欢迎。这虽无法律约束但能影响社区和商业公司的行为。考虑AGPL如果你希望最大限度地“传染”开源精神AGPL仍然是目前最强大的武器至少它对SaaS服务有明确约束可能对基于你代码提供的在线AI服务产生一定的威慑和讨论价值。加入元数据考虑在代码注释或文档中加入可追溯的、无害的标识信息。这不是为了阻止使用而是为了万一未来需要溯源时能有一个技术上的依据。参与社区讨论关注Open Source Initiative (OSI)、Software Freedom Conservancy等组织关于AI与开源的讨论。未来的规则需要社区共同制定。5. 开发者与企业的现实考量与行动指南理论争论之外我们更需要关注的是当下开发者个人和企业该如何在AI浪潮中既利用好开源的力量又保护好自身的权益。这里从两个角度提供一些现实层面的思考和行动建议。5.1 开源项目维护者如何保护你的代码如果你的项目不希望成为大公司AI模型的“免费午餐”或者至少希望得到应有的认可可以考虑以下步骤许可证审计与升级首先审视你项目当前使用的许可证。如果你的项目用的是MIT、BSD等极度宽松的协议那么从法律上讲你已经几乎放弃了对AI训练用途的控制权。如果你对此感到不安可以考虑在下一个重大版本Major Version升级时更换为Copyleft更强的许可证如GPLv3或AGPLv3。需要注意的是许可证变更通常只对新版本生效旧版本仍按原许可证流通。变更前务必在社区进行充分沟通。采用双许可证或附加条款一种更灵活的方式是采用“主许可证附加约定”的模式。例如项目主体采用Apache 2.0许可证但同时附加一个**“附加商业使用限制”条款**明确规定“禁止将本项目代码用于训练商业闭源AI模型”。这种模式的合法性在部分法域可能得到支持类似于MongoDB的SSPL但它可能使你的项目不符合OSI的开源定义从而不被一些严格的开源生态所接受。你需要权衡“开放性”与“控制力”。强化代码“指纹”与文档声明在代码结构和注释中植入一些独特的、无害的“指纹”。例如使用特定的、不常见的变量命名风格在注释中加入项目特有的标识字符串等。同时在项目的显著位置如官网、README顶部发表关于AI训练的正式立场声明。这些措施不能阻止训练但能在模型输出疑似“模仿”你的代码风格时为社区讨论和舆论监督提供依据。拥抱并领导开源AI生态最积极的防御是进攻。如果你项目的领域与AI强相关可以考虑主动发起或参与一个开源AI子项目使用明确合规的数据集如你自己生成的合成数据、明确获得授权的数据来训练一个专注于你项目领域的“官方”小模型并以严格的开源协议发布。这既能为社区提供价值也能在事实上确立你项目在该领域AI应用上的权威性和标准。5.2 AI模型开发者/企业如何合规地使用开源数据对于想要使用开源代码或数据训练模型的公司或团队规避法律和伦理风险至关重要。建立严格的数据供应链审计不能简单地“全网爬取”。必须建立内部流程对计划用于训练的数据集进行许可证审计。建立一个分类清单绿色区域明确允许商业使用和修改的协议如MIT Apache 2.0, CC0。可相对放心使用但仍需保留 attribution。黄色区域具有传染性的协议如GPL LGPL, CC BY-SA。使用时必须极度谨慎需要法务评估其“衍生作品”风险。一个常见的保守策略是避免将这类数据用于训练核心模型或仅用于非商业的研究项目。红色区域明确禁止商业使用或AI训练的数据如某些NC-ND协议或自定义了严格条款的项目。绝对禁止使用。实施数据过滤与清洗在数据预处理阶段除了技术上的去重、去噪还应加入基于许可证的过滤。开发或使用工具能根据文件头部的许可证声明自动将不同协议的数据分流到不同的处理管道。对于许可证不明或存在冲突的数据宁可舍弃也不冒风险。探索“合成数据”与“数据购买”为了彻底规避版权和许可证风险越来越多的企业开始转向合成数据Synthetic Data和授权数据。合成数据是通过算法生成的、模拟真实数据分布但又不包含具体版权信息的数据。虽然质量挑战大但法律上更干净。购买或获取明确授权的高质量数据集虽然成本高但为商业产品提供了坚实的法律基础。开源模型权重以应对“传染性”风险如果你的模型不可避免地使用了大量具有传染性的开源代码例如GPL进行训练并且你担心由此产生的法律风险一个可行的策略是将训练出的模型权重本身以对应的传染性协议开源。例如如果主要训练数据是GPL代码那么将模型权重以GPL发布。这虽然不符合许多公司的商业闭源初衷但却是最合规、最符合开源精神的做法也能赢得开发者社区的好感。重要提示当前法律处于灰色地带以上建议主要是基于风险规避和社区最佳实践。最终的法律解释权在法庭。在做出重大决策前咨询精通知识产权和科技法的律师是必不可少的环节。AI与开源的冲突最终可能需要通过里程碑式的法庭案例来划定新的边界。6. 未来展望开源精神的进化与AI时代的“新开放”malus项目所揭示的危机与其说是开源协议的“消亡”不如说是一次迫在眉睫的“进化”信号。开源运动的核心精神——协作、透明、共享——在AI时代不仅没有过时反而更加重要。但承载这些精神的法律和技术工具必须升级了。未来的“开源协议”可能会演变成一种更加分层、更加精细的体系第一层代码/数据本身的开源协议。这部分可能变化不大继续管理传统的分发、修改行为。第二层AI使用条款。作为一个独立的附加条款或新型许可证专门规范该内容被用于AI训练、微调、推理时所涉及的权利义务。它可能需要明确是否允许训练允许训练何种规模的模型研究用/商业用训练后产出的模型或服务需要承担何种回馈义务开源模型、提供API、支付费用第三层溯源与认证技术标准。这不再是纯粹的法律条文而是配套的技术设施。类似今天的HTTPS证书未来可能会有“AI训练数据来源证书”通过密码学和水印技术将训练数据、模型、乃至AI生成的内容进行可验证的关联。对于开发者个人而言或许我们需要调整心态。在传统开源中我们贡献代码收获的是软件的改进和个人的声誉。在AI时代我们贡献的代码和数据除了上述回报还可能“滋养”出我们无法直接控制的、强大的AI能力。这要求我们更审慎地选择将代码托付给何种协议也要求我们思考除了许可证还有哪些方式如社区治理、道德共识可以维护开源生态的健康。最终AI不会杀死开源但它迫使开源社区进行一次深度的自我审视和革新。就像当年自由软件运动应对软件专利的挑战一样这次面对AI的“黑箱消化”开源社区需要凝聚智慧创造出既能保护创作者权益、又能促进AI技术向善发展的新规则。这个过程注定充满争论和试错但唯有通过这样的碰撞我们才能找到通往下一个时代“开放”之路。而像malus这样充满争议的项目无论其初衷如何都像一枚投入平静湖面的石子激起的涟漪正在推动整个行业去面对这个无法回避的难题。