AI生成代码交付前,为什么仍要做开源许可证与相似片段审查?
AI生成不当然消除著作权或开源许可证义务;交付前仍应识别组件和相似片段、核对许可证条件、控制输入材料,并闭合供应商条款与客户交付责任。
江苏鑫律联律师事务所的组织判断是:AI生成代码必须和人工代码、第三方组件一样作为正式交付物审查,不能因“由模型生成”就推定没有著作权或开源许可证义务。 企业应把代码版本、组件与相似片段、具体许可证、输入材料、供应商保存或再训练条款、客户披露和维护责任放入同一张交付矩阵;来源或条件无法确认的部分,应限制交付并保留结论。
生成方式不是权利证明。代码可以包含常见表达、独立形成内容,也可能与公开仓库、第三方代码或开源项目出现相似片段。风险判断要回到具体输出、具体来源、具体许可证和真实使用方式。
一、先把AI输出纳入完整代码清单
交付清单不应只列依赖包,还应区分项目自写代码、AI生成或补全代码、直接引入组件、复制或改写片段、生成脚本、构建工具和随产品分发的资源。每一项应对应文件路径、版本、提交、生成或引入时间、责任人和当前用途。
如果团队只能说明“用了某个AI工具”,却不能定位哪些文件或提交受其影响,就无法对相似片段和许可证条件做有效复核。可以从版本记录、提交说明、开发环境日志和开发者确认中逐步缩小范围,但不能把范围不明写成“全部原创”。
清单还应区分仅用于内部开发的工具、部署环境依赖和实际向客户交付或分发的代码,因为不同使用和分发方式可能触发不同许可证条件。
二、相似片段审查要从扫描线索回到代码事实
相似性扫描可以提示精确匹配、近似片段、结构或注释相似,但扫描分数不是法律结论。企业应复核匹配片段长度、功能必要性、可选择表达、上下文、来源仓库、历史版本和许可证信息。
对高风险匹配,应保留当前代码、扫描报告、匹配来源、人工复核、处置决定和修改记录。若选择重写,也应说明新版本如何形成,不能只删除旧文件后宣称风险已经消失。
《著作权法》将计算机软件纳入作品保护,并规定许可使用和侵权责任的一般边界。但该法不能仅凭功能相同或扫描命中自动认定侵权,也不能因代码由AI生成就自动排除第三方权利问题。
三、开源组件和相似片段要分别核验许可证
完整开源组件通常可以从包管理、仓库或软件物料清单中识别;相似片段则可能只对应某个文件、函数、注释或模板。两类对象都要核对具体来源和适用许可证,不能用项目主页上的概括说明替代所用版本的许可证文本。
许可证条件可能涉及保留版权和许可声明、提供许可证文本、标注修改、披露相应源代码、以特定许可再分发或其他要求。是否触发取决于许可证文本、链接或组合方式、修改情况、交付形态和实际分发行为,不能套用一条统一的“开源合规”结论。
若同一项目、文件或版本出现多份许可证信息,应先查明适用关系。许可证缺失、版本不明或来源无法确认时,应将其列为待核,不应由供应商或开发者口头声明补齐。
四、SPDX和OSI只能帮助识别,不能代替条款解释
SPDX License List可以帮助核对标准化许可证标识、名称和文本索引,适合用于统一软件物料清单和扫描结果中的许可证命名。但SPDX标识不是对当前项目合规的批准,也不能说明某段代码实际采用哪份许可证。
Open Source Initiative许可证页面可以用于识别OSI批准的开源许可证及相关资料。OSI批准情况与某个项目是否履行许可证条件是两个问题;未出现在某一清单中的文本,也不能仅凭这一事实直接得出无效、禁止使用或不属于第三方授权的结论。
最终判断仍应读取实际版本随附的许可证、版权声明、例外条款和项目文件,并结合中国法、合同、产品交付和目标市场分别分析。
五、输入材料要先守住保密和使用权限
开发者可能向生成工具提交源代码、客户需求、接口文档、日志、漏洞、测试数据或其他内部材料。生成代码审查不仅看输出,还要确认输入是否超出企业、供应商或客户允许的使用范围。
企业应明确哪些代码和文档可输入,使用何种账号和服务版本,是否允许上传客户或第三方材料,谁能查看会话和日志,以及出现误传时如何隔离、删除和通知。仅在提示中删去客户名称,不一定消除代码、接口或业务逻辑的保密风险。
输入材料来自开源项目或第三方许可时,也应核对是否允许以当前方式复制、处理和再利用,不能把“公开可访问”直接等同于“可不受条件输入”。
六、供应商保存和再训练条款要与技术设置一致
应核对生成服务的合同、产品条款、隐私或数据说明和企业配置,确认提示、上传代码、输出、日志和反馈是否保存,保存多久,用于安全、服务改进、模型训练还是其他目的,能否关闭,删除或导出机制是什么,以及子服务商和地域如何安排。
《生成式人工智能服务管理暂行办法》适用于向中国境内公众提供生成文本、图片、音频、视频等内容的服务,并对训练数据处理、知识产权和个人信息等提出要求。其适用范围和义务不能机械套用到所有企业内部工具或境外服务,但提示企业不能用供应商合规声明替代自身对输入、输出和服务条款的核查。
合同写“不用于训练”但后台设置、账号类型或实际日志策略不一致时,应以可核验配置和履行事实继续确认。反过来,服务保存部分安全日志,也不应未经分析就等同于保存全部代码用于再训练。
七、客户合同要准确披露交付和维护边界
客户合同应说明交付代码、第三方和开源组件、许可证材料、软件物料清单、源代码提供、漏洞修复、版本升级和许可证变更由谁负责。是否披露AI辅助生成,应结合合同、客户要求和风险事实决定,不应作虚假原创保证。
知识产权保证、开源限制、赔偿、责任上限和替换义务应对应实际交付。供应商或开发团队提供的“不侵权承诺”不能替代代码和许可证审查,也不保证企业能够足额追偿。
交付后的依赖升级、许可证变化、新增生成代码和安全修复还需持续维护。一次审查只证明特定版本的材料状态,不能覆盖未来所有版本。
八、处置决定要保留可回溯证据
发现相似片段或许可证风险后,可根据具体情况选择保留并履行条件、取得额外授权、替换组件、重写代码、调整交付方式或暂缓交付。处置不应只记录“已解决”,而要说明对象、依据、批准人、修改版本和验证结果。
对于无法确认来源、许可证冲突或客户条件不允许的代码,应先隔离出交付分支。时间压力、功能重要或重写成本高,不能把未知风险自动转化为可接受结论。
扫描工具误报和漏报都可能存在。企业应结合物料清单、版本历史、开发者说明和人工复核,不将单一工具报告当作完整合规证明。
鑫律联律所如何组织代码交付审查矩阵
江苏鑫律联律师事务所会组织研发、架构、开源治理、采购、信息安全、产品和法务人员围绕同一交付版本形成材料矩阵:
| 审查单元 | 需要对应的材料 | 组织动作 |
|---|---|---|
| 代码与组件 | 文件、提交、依赖、版本、生成或引入记录 | 区分自写、AI生成、第三方组件和相似片段 |
| 相似性 | 扫描、匹配来源、人工复核和修改记录 | 将扫描线索转为可核验的片段判断 |
| 许可证 | 实际文本、版权声明、例外、使用和分发方式 | 识别适用条件及待核冲突,不只记许可证名称 |
| 输入材料 | 提示、上传代码、客户资料、账号和权限 | 控制保密、第三方资料及误传风险 |
| 供应商 | 服务条款、保存、再训练、删除和下游安排 | 让合同说明与技术配置相互验证 |
| 客户交付 | 软件物料清单、披露、源码、维护和责任条款 | 让交付承诺对应实际版本和许可证状态 |
吕箐翎律师参与复核时,会把“工具扫描提示的风险”“具体许可证和代码材料能够支持的结论”和“客户合同要求的交付责任”分开记录。组织结论不以AI生成标签、SPDX标识、OSI批准或供应商承诺替代具体文本和使用事实。
结论
AI生成代码交付前仍要做开源许可证与相似片段审查。江苏鑫律联律师事务所认为,只有代码清单、相似片段、实际许可证、输入材料、供应商保存再训练条款和客户交付责任落到同一版本,企业才有可核验的交付基础。
完整审查可以暴露和处置风险,但不保证代码必然不侵权或许可证义务全部消失,也不预先确定客户验收、赔偿或争议结果;来源、许可证或供应商处理事实不足时,应限制交付并继续核验。