新规没有给人留模糊空间。如果你正在做开源AI软件,模型、Agent、辅助编程工具、甚至一个带AI功能的npm包,接下来对“风险披露”的处理方式,直接影响出事之后是赔钱还是免责。过去我们对风险披露的理解往往是“写一段免责声明丢进README”,这让很多项目在司法视角下等于裸奔。最高院这次涉开源软件的新规(征求意见稿)把风险披露从“形式动作”提到了“实质性免责要件”,很多项目组完全没有准备好。
这篇文章不聊空泛的法理,只讲实操:新规到底要求什么,披露到什么程度才算有效,以及中小企业、独立开发者在真实项目里如何把披露流程落地。全文基于新规征求意见稿的公开思路,结合司法实践常见裁判逻辑,按“能直接抄作业”的标准来写。
1. 新规背景:开源AI软件风险披露为何成了“生死线”
1.1 最高院这份新规,到底动了谁的蛋糕
最高院这次针对涉开源软件纠纷出台新规,核心变化是把开源软件的责任认定从“协议约定”扩展到了“行为审查”。过去判断一个开源项目要不要担责,主要看License(开源许可证)怎么写;现在法院会把发布者的披露行为、注意义务、风险提示是否到位作为独立审查对象。换句话说,光靠MIT、Apache-2.0协议里的“AS IS”条款,不能再当万能挡箭牌。
对于AI类开源软件,这个变化被进一步放大。AI模型和传统代码有一个本质区别:你无法通过静态检查穷尽它的所有输出行为。一个模型可能通过了几万条测试,但在某个特定输入下产生错误、违法、歧视性甚至危险的结果。法院认为,发布者对这种“不可穷尽的风险”负有更重的告知义务。如果发布者明知道模型有已知缺陷(比如训练数据存在偏见、特定场景识别率低、可能生成不当内容),却不在发布时向用户明确披露,一旦用户基于该缺陷受到损失,发布者很难通过“我开源了所以我不负责”来脱责。
实操中受影响最大的是三类项目。第一类是开源大模型权重发布方,尤其是有微调版本、量化版本或特定领域能力宣传的;第二类是开源AI应用框架,比如带提示词注入防护的Agent框架、AI内容生成工具;第三类是提供AI辅助能力的开源库,比如代码补全插件、自动化测试生成工具。这三类项目的共同点是:使用门槛低,但风险传导链条长。用户拿你的开源项目直接用于生产,出问题时第一时间找的是“那个开源项目的作者”,而不是自己重新审查代码。
1.2 风险披露从“可选项”变成“免责前提”
新规征求意见稿中有一句非常关键的方向性表述:开源软件发布者应当对已知风险进行必要披露;未披露或披露不充分的,不影响其依法承担相应责任。这等于告诉所有人,你在GitHub上放一个项目,就意味着你承诺了“合理注意义务”。注意义务的起点不是用户下载之后,而是发布动作完成的那一刻。
这意味着风险披露从“讨好用户的加分项”变成了“免责的前提条件”。你没有披露,不是“少了段说明”,而是“义务履行的空白”。法院在认定过错时,会先判断“你知不知道这个风险”,再判断“你有没有告诉用户”。对于AI软件来说,“知道风险”的门槛比传统软件高得多。社区里已经讨论过的问题、论文里指出的模型漏洞、用户issue区不断反馈的失败案例,甚至训练数据本身的一些特征,都可能被认定为“应当知道”。
我接触过一个实际的早期案例(非诉讼,是合规咨询):某个开源OCR项目在模型说明里只写了“适用于一般文档识别”,没有提及对复杂表格、手写体、低分辨率图像的识别性能明显下降。用户把模型集成到财务票据识别系统里,因为批量识别错误造成了直接经济损失。项目方最后虽然没有被判赔,但在多轮沟通过程中非常被动,原因就是“披露文档里找不到任何关于性能边界的内容”。新规如果正式落地,这类项目再进入争议程序,结果大概率完全不同。
2. 拆解新规要求:什么样的披露才叫“有效免责”
2.1 披露范围:不是把风险写出来就完事
很多开发者对风险披露的理解是“写一段警告”,这远远不够。新规思路下的有效披露,至少应覆盖四个维度:
第一,性能边界披露。必须明确该项目在哪些场景下表现良好、在哪些场景下可能失效。对于AI模型,这涉及训练数据分布、评估指标、已知失败模式。你不能只说“本模型用于文本分类”,要说清楚“在中文新闻语料上准确率为94%,在口语化对话语料上准确率降至78%,对网络用语、方言、专业术语支持有限”。
第二,内容安全披露。如果项目能生成文本、图像、代码或其他内容,必须披露可能产生的不安全输出类型。比如“模型可能生成包含暴力、色情、歧视、仇恨言论的内容”“可能生成存在安全漏洞的代码”“可能对特定群体产生刻板印象”。不要把这些归结为“用户使用问题”,生成模型的内容风险是模型本身的属性,不是用户主动选择的结果。
第三,数据与隐私披露。项目是否收集用户数据,训练数据中是否包含个人信息、敏感信息,模型是否可能在输出中复现训练数据中的私人内容。这些都要明示。一些开源AI应用为了让用户开箱即用,内置了遥测或反馈收集功能,这属于重大披露事项,不能藏在隐私政策里。
第四,合规与责任边界披露。特定行业(医疗、金融、法律、教育、自动驾驶)的使用限制,以及是否提供任何形式的保证或技术支持义务。这里要注意,开源许可证中的“无保证条款”依然需要配合风险披露才能发挥作用。许可证解决的是“版权责任”,风险披露解决的是“产品责任和过错责任”,两者不在同一个维度上。
2.2 披露强度:告知、警示与防护的分层
不是所有风险都需要用同样的力度披露。我梳理了一个三层模型,可以用于项目自我评估:
第一层:告知(Information)。适用于一般性、低概率、低后果的风险。比如“模型可能对某些输入产生不准确结果”。告知类披露只需要在文档中客观描述即可。
第二层:警示(Warning)。适用于已知的、中等概率或较高后果的风险。比如“模型在代码生成任务中可能产生存在SQL注入漏洞的代码”“模型可能泄露训练语料中包含的个人信息”。警示类披露不仅要说清楚风险评估,还要放在用户能看到的显著位置——README顶部、首次启动提示、API返回结果中。藏在docs目录第5层的警告,法律上很可能被认定为“没有披露”。
第三层:防护(Protection)。适用于高风险场景,仅靠文字披露不够,必须增加技术性防护措施。比如,开源模型在医疗建议场景下应内置“本回答不能替代专业诊断”的触发提示,或者在模型卡片中明确必须由专业人员进行人工审核;代码生成工具应内置安全扫描能力或强制提示“此代码未经过安全审查,请勿直接用于生产环境”。司法审查会看你有没有在“可以加防护”的环节加防护。能加技术护栏却不加,只写一份风险提示,免责效力会大打折扣。
新规对三层的要求是:告知要充分,警示要显眼,防护要必要。我们做披露方案时,建议先按“如果不披露这个风险,最坏的后果是什么”对全项目风险排序,然后再决定每项风险用哪一层去处理。
2.3 免责边界:哪些事即便披露了也不能免责
风险披露不是万能药。新规思路中有几条明确的“免责无效”边界,项目组必须提前知道。
第一,故意或重大过失不因披露而免责。如果你明知模型有严重安全缺陷(比如能被轻易越狱并生成恶意内容),还故意在披露中轻描淡写,这种“披露”反而会成为不利证据。披露必须诚实完整,不能选择性披露。
第二,违法内容生成风险不能通过“用户自行承担”规避。如果模型本身经过不当训练,核心能力就是生成违法内容(比如恶意代码生成器、钓鱼邮件生成器),这类项目本身就可能涉及违法。你写再多的“请勿用于非法用途”,也不能改变项目本身的违法属性。开源协议和风险披露只能在合法范围内分配责任,不能成为违法行为的通行证。
第三,违反强制性法律规定的义务不因披露而免除。比如对特定行业的监管要求(医疗器械、金融信息服务等),如果法律强制要求取得资质或满足特定安全标准,发布者通过开源协议和披露条款把这些义务全部推给用户,在新规语境下是无效的。裁判逻辑是:义务如果是法定的,当事人不能在开源发布时单方面转移或取消。
第四,技术性防护措施不能缺失。这是前面提到的“防护层”的延伸。对于可预见的重大风险,不能只做提示。举个例子,一个开源AI客服系统明知自己的模型容易被提示词注入(prompt injection)攻击,却不在系统里加任何输入过滤和输出分类能力,只写“可能被注入攻击,请用户注意”。这个免责在司法审查中很可能会被认定为不充分,因为技术上有明显的可行补救措施。
3. 实操落地:开源AI软件风险披露完整清单
3.1 发布模型仓库时的披露模板
如果你发布的是模型权重、模型微调脚本或模型推理服务,我建议在仓库根目录增加MODEL_CARD.md(模型卡片),并配套更新README.md。模型卡片直接决定法院怎么认定“你披露了什么”,一定要认真写。
MODEL_CARD.md必须包含以下内容:
- 模型概述:训练目的、架构、参数量、部署方式。
- 预期用途与禁用用途:明确哪些场景是推荐的,哪些场景是不允许的(如医疗诊断、司法判决辅助)。
- 训练数据说明:数据来源、数据规模、过滤流程,是否包含个人信息、敏感数据,是否包含版权存疑的数据。
- 评估结果:在公开基准上的效果,以及在特定子集上的效果差异。评估不仅要写平均分,要写分布情况。只写平均准确率而隐瞒特定类别表现差,属于典型的不充分披露。
- 已知限制与失败模式:逐一列明已知的失败场景,最好附上用户复现问题的示例输入。
- 内容安全分析:是否做过红队测试、对抗性测试、有害内容过滤测试,结果如何,已知的绕过方式有哪些。
- 使用建议与强制护栏:部署时建议加什么防护,哪些防护是“必须”而不是“建议”。
注意,不要把MODEL_CARD当成宣传文档。真实评估自己的项目,把失败案例和缺陷写出来,确实会影响下载量,但从法律合规角度看,这是目前最有价值的保护措施。我在多个项目上实测过,一个诚实、完整的MODEL_CARD,比十页法律条款更能降低风险敞口。
3.2 开源AI应用/Agent类项目的展示与运行披露
应用类和Agent类项目的风险披露有特殊性:用户往往不读文档就直接跑起来,所以不能只依赖README和模型卡片,要在多个接触点同时做披露。
第一,项目首页/README顶部。在“简介”之前加一段“风险提示”,用加粗或引用块突出显示。内容包括:本项目的已知风险、适用场景边界、禁止用途、用户应尽的审查义务。切忌把风险提示放在页面底部或折叠区域。
第二,安装与首次运行时。可以在CLI工具的启动输出中、Web应用的首次加载弹窗中、Python库的import时打印一条警告。例如:“Warning: This AI model may generate inaccurate or biased content. Review all outputs before production use.”不要担心“弹窗劝退用户”,这行警告是你未来自证“已履行披露义务”的关键证据。
第三,API接口响应头或输出中。如果项目提供API,可以在返回的JSON里增加一个risk_notice字段,或者在响应头里加X-Risk-Disclosure。这不是要求你给每个请求都塞一段法律废话,而是让调用方在程序层面也能看到风险提示,避免“用户只看输出不看文档”的争议。
第四,Agent类项目还要披露自主行为边界。如果你的Agent能执行命令、调用外部工具、访问网络,必须在显著位置告知:Agent会在什么情况下自主执行操作、可能产生什么后果、是否默认开启人工审批机制。新规下,自主性越强的开源AI软件,发布者的注意义务越高。如果是完全自主执行模式,必须在代码里默认禁止高危险操作,而不是在文档里提示“请谨慎使用”。
3.3 依托开源协议补充披露条款
开源许可证和风险披露不是互斥关系,而是互补关系。当前主流开源协议(MIT、Apache-2.0、GPL-3.0、BSD)都包含“无保证(WITHOUT WARRANTY)”条款,但这份“无保证”主要覆盖版权和软件质量责任。新规把AI软件的安全性、内容合规性纳入注意义务后,你需要考虑在协议之外增加一份独立的“风险披露与免责声明”文件,或者直接在协议中增加AI风险相关条款。
如果项目用的是MIT、Apache-2.0这类宽松协议,我建议在发布时叠加一个RISK_DISCLOSURE.md,里面明确以下内容:
- 项目已知风险清单与披露日期
- 每个风险对应的缓解措施(技术性防护还是使用限制)
- 用户应自行承担的审查责任
- 发布者对间接损失、数据丢失、业务中断不承担责任
- 发布者对用户违反禁用用途产生的法律后果不承担责任
这里需要特别提醒一个很多人忽视的细节:如果项目包含多个组件,比如模型权重、推理代码、前端界面,要分别做风险披露。模型有模型的披露,代码有代码的披露。不要认为“模型卡片里写了,整个项目都覆盖了”。司法审查会区别看待不同组件可能造成的不同损害。
另外,如果你发布的是衍生模型(比如对某个开源基座模型做了微调),必须同时保留原始模型的风险披露。微调后的模型可能存在新的风险,不能因为“基于某某模型”就把披露责任推给上游。你可以引用上游的披露,但自己微调过程中引入的增量风险必须自己负责。
4. 法律文书实操与流程化管理
4.1 从README到License:披露文件应该放在哪里
很多项目只有一个README,把所有东西都塞进去。风险披露文件如果全堆在README里,会显得混乱且容易被忽略。我建议采用“核心文件+索引”的架构:
- README.md:放简短版风险提示(若干条),并给出“完整披露见RISK_DISCLOSURE.md”。
- RISK_DISCLOSURE.md:完整风险披露清单,逐项记录风险描述、发生概率、影响后果、缓解措施、更新日期。
- MODEL_CARD.md:模型相关披露,包括训练数据、评估结果、失败模式、内容安全。
- LICENSE:许可证文本,如果需要加入AI风险条款,在原文基础上以附加条款(Additional Terms)方式增加。
如果项目是单体仓库(monorepo),不同子项目的披露文件要分开放,不要统一一个“总披露”覆盖全部。比如前端代码和一个推理后端,风险类型完全不同,合并披露会让重点不突出。
文件命名建议固定,便于审计时追溯。不要用“DISCLAIMER_final_v3.md”这种命名,命名混乱本身就是管理不善的信号。
4.2 持续披露:版本更新与漏洞响应中的注意点
风险披露不是一次性工作,发布一个版本就要同步更新一轮。新规对“持续披露”提出了隐性要求:如果你的项目在某个版本中存在已知风险,却在后续版本中悄悄修复了但没有更新披露文档,一旦用户使用的是旧版本并因此受损,法院可能认定你“未及时揭示风险”。
实际操作中,建议把风险披露纳入版本发布流程,作为发布检查单的一项。我见过比较完善的做法是在GitHub Action里加一个检查步骤:发布Release时,自动校验RISK_DISCLOSURE.md的最后修改时间是否晚于上次代码变更时间。如果披露文件过旧,CI流程直接失败。这个自动化检查能有效防止“代码更新了,文档忘了改”的经典问题。
发现重大漏洞时,要在48小时内更新风险披露并发布安全公告。对于开源AI软件,漏洞不仅是代码逻辑漏洞,还包括模型行为漏洞。比如你发现模型可以被特定prompt绕过安全限制,生成不当内容,应该在第一时间同步更新MODEL_CARD中的“已知绕过方式”,而不是等修复后再统一披露。披露越及时,你的过错程度越轻。
如果项目有用户社区、讨论区,对于用户反复提出的风险问题,不要只回复“后续版本会修复”。应该把这些issue的链接记录下来,并在下一版风险披露中正式收录。为什么?因为issue区的内容就是“你应当知道的风险”的最直接证据。用户已经反馈了,你却视而不见,这在主观过错认定上非常不利。相反,如果你在披露文件里明确注明“该风险已经在issue #1234中讨论,尚未修复,缓解措施是……”,你就完成了从“知道”到“有效披露”的闭环。
5. 常见问题与实际排查经验
5.1 五个典型“白披露”场景
“白披露”就是我给无效披露起的名字——写了等于没写。下面五种情况,在新规思路上很可能被认定为披露不充分:
场景一:免责声明写得像法律文书,但用户完全看不懂。满屏的“不承担任何明示或暗示的担保”“不对适销性负责”,看似严谨,实际没有告知用户“AI可能产生错误结果”这个最核心的风险。披露要让一般用户能理解,不要求用大白话,但至少要让目标用户知道“用的时候要审”。
场景二:只披露“可能出错”,不披露“哪里会错”。“使用本软件可能存在风险”是一句空话。有效披露必须列举具体场景:在代码生成中可能输出不安全的正则表达式,在文本摘要中可能遗漏关键信息,在图像识别中可能无法识别遮挡严重的目标。越具体,证明你越尽到了注意义务。
场景三:风险写在文档里,但在使用路径上看不到。用户使用软件时,入口是README、是CLI命令、是API参数,他们大概率不会去读docs目录下的风险文档。披露必须实现在用户真实的使用路径上。如果用户必须在安装、运行、调用的全流程中至少一次看到风险提示,才算是“可见的披露”。
场景四:有披露,但没有对应的技术缓解措施。披露了风险却不做任何缓解,等于告诉用户“东西有坑,你自己绕”。有能力的发布者应该为高风险项提供技术防护。披露+缓解才是完整动作。没有缓解的披露,在造成重大损失时仍然可能被判定为存在过错。
场景五:引用其他项目的披露来替代自己的披露。“本项目基于某某模型/某某框架,风险见上游文档”这种省事做法在新规下很危险。你基于上游做了一层加工,你就对加工后的结果负有独立披露义务。上游披露的词句,完全不能覆盖你引入的新风险。
5.2 被认定未尽披露义务后的应对思路
如果项目因为披露不足被用户投诉或诉讼,首先要做的是止损,而不是辩解。第一步是立即补全缺失的披露,并在版本更新说明中明确标记“本次更新增加了风险披露内容”。虽然这不代表对过去的免责,但能减少后续损害的扩大,影响法院对持续过错状态的认定。
第二步是整理证据链。把项目发布时的README、MODEL_CARD、RISK_DISCLOSURE、release notes全部归档。如果你能证明“发布时已经做了在当时技术认知水平下合理的披露”,即便后来发现披露不充分,也可以主张没有故意或重大过失。
第三步是评估风险缓解措施是否需要升级。如果用户反馈的问题确实存在,而且技术上可以通过加过滤、加告警、加人工复核流程等方式缓解,尽快上线。技术性缓解措施的缺失,在司法认定中权重很高,比你事后解释“当时没考虑到”更有说服力。
第四步是评估是否需要定向通知用户。如果是已下载量较大的项目,且新增披露涉及重大风险,应该在项目首页显著位置发布更新公告,并且通过已知渠道通知关键用户。对关键用户(尤其是商业用户)的定向通知,能有效证明你采取了积极措施防止损害扩大。
最后分享一点我个人的经验
做了几年开源项目的合规和风险披露,我最大的体会是:披露文档写得好的项目,往往代码质量也不会差到哪去。因为写风险披露的过程,就是逼着团队直面“我这个项目到底在哪些地方会坑人”的过程。很多bug、安全缺陷、模型偏见,其实是写披露时才被团队意识到的。所以不要把新规里的风险披露要求当成负担,它其实是一份免费的代码和模型自检清单。
另一个实操技巧是:把风险披露的更新记录做成一个简单的日志文件(比如用Markdown表格,按日期记录每次修改了什么风险项),发布Release时顺手同步。这样不仅合规,而且未来真要面对争议时,你能拿出的是一份完整的时间线,而不是一句“我好像以前写过免责声明”。
新规的征求意见稿阶段是最好的调整窗口期。等正式落定再改披露,你就晚了一步。趁现在把披露体系搭好,无论后续规则怎么细化,你都已经站在了不败的位置上。