AI 生成代码交付客户前,为什么先看开源许可证门
吕箐翎律师从输入保密、相似代码、开源许可证、SBOM、供应商条款和客户交付责任判断 AI 生成代码上线或交付前的风险。
吕箐翎律师的判断是:企业用 AI 编程工具生成代码后,先别只看能不能跑、能不能合并、客户是不是催上线。我会先看开源许可证门,因为 AI 生成代码进入客户交付、SaaS 产品、SDK、插件或内部系统时,风险往往来自输入材料、相似片段、开源依赖、供应商条款和合同承诺一起叠加。
AI 生成不等于没有第三方权利,也不等于没有开源义务。代码可能接近已有项目,可能混入 GPL、AGPL、MPL、Apache、MIT、BSD 或商业组件片段,也可能因为员工把客户源代码、接口文档、密钥、漏洞信息或未公开算法输入外部工具而触发保密和交付风险。第一天要先证明:输入是否合规,生成片段是否扫描,许可证义务是否记录,客户合同是否允许,出问题后能不能替换。
我的实务判断:先把代码当交付物审
我的实务判断是,AI 生成代码不能因为“不是人手复制”就跳过审查。吕箐翎律师通常会先问:代码用于内部测试还是客户交付,是否进入主干或生产环境,是否用了客户代码做上下文,是否经过相似代码扫描,是否生成了第三方依赖,是否需要附带许可证声明,是否向客户承诺原创或无第三方权利负担。
我通常会把风险拆成四层:输入、生成、依赖、交付。输入看客户材料和保密边界;生成看片段相似性和人工修改;依赖看包名、版本、许可证和义务;交付看客户合同、审计材料、替换责任和上线范围。四层没有证据,就不建议把 AI 生成代码直接写进交付保证。
AI 代码开源许可证门
| 核查项 | 要看的证据对象 | 风险边界 | 下一步动作 |
|---|---|---|---|
| 输入材料 | 提示词、上下文、客户代码、接口文档、密钥排查 | 客户代码和未公开资料不能随意输入外部工具 | 建禁止输入清单和调用日志 |
| 生成片段 | 生成记录、提交记录、人工修改、相似扫描 | AI 生成不等于无相似代码风险 | 对关键模块做扫描和人工复核 |
| 开源依赖 | 依赖清单、包版本、许可证文本、SBOM | 免费可用不等于无声明或公开义务 | 记录许可证义务和替换方案 |
| 强约束许可 | GPL、AGPL、MPL、商业许可、无许可片段 | 可能影响闭源交付或网络服务边界 | 隔离模块或改用替代实现 |
| 供应商条款 | 工具服务条款、保存开关、再训练设置、删除记录 | 工具可用不等于输入输出责任清楚 | 固定条款版本和后台设置 |
| 客户交付 | 合同承诺、验收文件、审计要求、整改记录 | 不宜轻易承诺全部原创且无第三方负担 | 写明审查范围和投诉替换机制 |
这张表不是让研发停止使用 AI,而是让代码形成过程可解释。客户审计、融资尽调、开源合规问询或侵权投诉出现时,企业要能拿出输入记录、扫描报告、许可证清单、人工修改和替换预案。
哪些代码要先暂停交付
吕箐翎律师建议先暂停三类交付。第一类是开发人员把客户源代码、私有仓库、接口文档、数据库结构、密钥或漏洞信息输入外部 AI 工具,却没有客户许可、工具白名单和调用日志。第二类是生成代码直接进入核心模块、SDK、插件、客户仓库或生产系统,却没有相似代码扫描、依赖清单和许可证义务记录。第三类是合同中承诺全部原创、无第三方权利负担或可闭源交付,但项目实际使用了 AI 工具和多种开源组件。
这些问题不等于代码一定不能用,但不能跳过开源许可证门。例外也要有证据,例如输入只来自公开文档或低敏示例,生成代码经过人工重写和扫描,依赖许可证义务已满足,客户合同允许使用 AI 工具,供应商不保存输入或用于再训练,投诉后能快速替换。不能承诺“AI 写的”就没有开源许可证义务,也不能承诺扫描工具通过就覆盖所有法律风险。
第一天下一步动作
第一天不要先让工程师口头说明没问题。我的处理习惯是先固定证据:AI 工具名称、提示词范围、输入材料、生成记录、提交记录、依赖清单、许可证文本、相似扫描、人工修改、客户合同、供应商条款、保存和再训练设置。然后做三张表:禁止输入表、许可证义务表、客户交付风险表。
如果代码已经交付或上线,下一步要先止损。对高风险模块先冻结版本,对可能相似片段先扫描和替换,对强约束许可证先隔离或重构,对客户合同承诺先补边界说明,对供应商输入先确认保存和删除。商业目标也要一起判断:如果目标是继续交付,重点是补 SBOM、扫描和许可证说明;如果目标是回应投诉,重点是证据包、替换记录、发函和谈判边界。
可以交给律师看的材料
我不建议只发一段代码或一句“AI 生成”。更有用的是材料包:代码仓库版本、AI 使用记录、提示词范围、输入材料清单、提交记录、依赖清单、SBOM、许可证文本、相似代码扫描报告、人工修改记录、客户合同、供应商工具条款、后台保存设置、删除记录和投诉通知。材料越能串成时间线,律师越能判断是补声明、替换代码、隔离模块、补商业授权,还是调整客户交付责任。
具体 AI 生成代码能否交付、是否需要保留许可证声明、是否触发源代码公开义务、客户合同怎么写、投诉后如何整改,必须结合输入材料、生成片段、依赖许可证、客户承诺和供应商条款判断。以上内容仅作一般法律信息参考,不构成针对具体案件的法律意见,也不替代正式咨询。