
先给结论AI 治理这件事最容易让人误判的一句话就是“把模型放进沙箱就安全了”。沙箱程序解决的是运行隔离解决不了行为合规。真正决定一个 AI 应用能不能长期稳定跑下去的不是它被关在哪个技术容器里而是它在什么边界内做事、谁对它的行为负责、出了问题按什么规则处理。这个判断不是我拍脑袋而是很多 AI 应用在从 Demo 走向生产时反复踩到的问题技术隔离做得很足但因为缺少治理边界照样在数据授权、内容安全、用户权利、责任追溯这些环节出问题。用一句话概括这篇博文的核心判断AI 应该由法律治理沙箱只是辅助手段不能作为治理主体。这里说的“法律”放在工程语境里不是让每个程序员去背条文而是把法律法规、行业规范、合同约定、用户协议这些外部规则翻译成 AI 产品在设计、开发、部署、运营各个阶段都能执行的工程约束。适合谁看主要给三类人AI 应用开发者和算法工程师、AI 产品经理、负责模型平台和运维的工程师。读完你会知道为什么沙箱不能替代合规设计以及在真实项目里如何把法律治理思想落成可检查、可测试、可追溯的工程实践。下面按实际落地顺序拆一遍。1. 为什么“把 AI 关进沙箱”容易让人误判风险1.1 沙箱解决的是“运行隔离”不是“行为合规”沙箱在工程上是个非常成熟的东西。常见做法包括容器隔离、进程权限限制、文件系统只读、网络访问白名单、系统调用拦截。拿这些手段去保护宿主机让 AI 模型不能随便读写磁盘、不能访问内网、不能执行危险命令这个方向完全正确。但沙箱有一个本质局限它只约束“能做什么”不约束“该做什么”。举个例子一个法律咨询助手跑在 Docker 容器里网络被限制文件系统只读权限降到普通用户这是典型的沙箱保护。但用户问“我能不能通过某种方式规避责任”如果模型仍然给出可执行的操作建议沙箱本身不会拦下来。因为从技术角度看模型只是“生成了文本”没有违反任何系统权限规则。很多团队把沙箱做好之后就觉得 AI 安全性已经解决了。实际上沙箱对应的风险模型是“恶意程序破坏系统”而 AI 应用在生产环境里更多暴露的是“输出误导性内容”“未经授权处理个人信息”“生成侵权内容”“责任主体不清晰”这一类问题。这两类问题完全不在同一个维度。1.2 沙箱可以限制行为但无法定义“什么不该做”一个沙箱策略写得再细也只能描述技术层面的允许和拒绝。比如允许访问哪些路径允许调用哪些 API允许监听哪个端口。但法律治理要回答的问题完全不一样这个 AI 产品使用用户上传的数据用户是否知情并授权模型输出涉及个人隐私时应该如何处理生成内容包含歧视、偏见或误导谁来负责用户要求删除自己的数据系统能不能在限定时间内完成AI 在某些场景下无法判断时是拒绝回答还是转人工这些问题没有一个是沙箱配置项能覆盖的。它们需要的是业务规则、数据治理规范、内容安全标准、用户权利响应机制、审计和追责流程。这些规则共同构成 AI 行为的外部边界也就是标题里说的“Fences not Sandboxes”——围栏不是箱子。1.3 当系统越来越复杂时沙箱边界会不断模糊早期 AI 应用可能只有一个模型接口输入文本输出文本。这时候沙箱相对容易设计。但到了 AI Agent 时代情况完全变了。一个 AI Agent 可能需要调用搜索工具、查询数据库、读取文档、调用外部 API甚至操作浏览器或执行代码。这时候沙箱边界在哪里如果 Agent 需要通过工具访问外部信息你不可能把所有外部服务都设成白名单如果 Agent 需要根据用户请求动态决定调用哪个工具你很难在启动阶段就把所有可能的“危险调用”都预先拦截。更麻烦的是有些边界不是“能不能访问”的问题而是“访问之后拿它做什么”。模型读取一个文件本身可能没有问题但读取文件后把内容拼进提示词再输出给下游接口整个过程可能已经违反了数据最小化原则。这种跨多个组件的行为级越界光靠沙箱很难判断。所以越复杂的 AI 系统越需要一个独立于技术沙箱的行为治理层。这个治理层不关心容器怎么配置它关心的是业务规则、数据权限、输出边界、责任归属。2. 法律治理与沙箱治理各自管什么边界在哪里2.1 法律治理是“围栏”不是“箱子”我比较喜欢“围栏”这个比喻。箱子把东西关在固定空间里空间内可以很乱。围栏不同围栏划定的是活动范围里面的东西可以在范围内自由活动但越线就是违规。对应到 AI 产品上沙箱决定“模型不能访问哪些系统资源”围栏决定“模型在什么样的业务规则下提供什么样的服务”。比如一个面向 C 端的 AI 写作助手它的围栏应该包含只处理用户主动上传的文本不擅自读取本地文件对上传内容中的个人私密信息做脱敏或隔离生成内容不包含可识别的真实个人隐私信息对医疗、法律、金融等专业领域的建议加上限定说明用户关闭服务或要求删除数据时能在约定周期内完成。这些边界不是靠进程权限实现的而是依靠产品设计、数据流程、提示词约束、输出审核、用户协议和后台日志共同作用的结果。2.2 法律框架如何转成工程约束很多人一听到“法律治理”就觉得是法务部门的事开发团队只要等需求文档。这个理解不准确。法律要求要真正落地必须转成可执行的工程约束否则就是装饰。通常我会把法律要求拆成四类工程约束第一类数据授权约束。涉及用户数据的采集、存储、使用、共享。工程上要有明确的授权记录、数据分类、访问控制、留存期限和删除机制。第二类内容安全约束。涉及模型输出的内容边界。工程上要有输入过滤、输出审核、风险等级判定、敏感内容拦截和人工复核入口。第三类用户权利约束。涉及用户对自己的数据行使权利比如查询、更正、删除、导出。工程上要有对应的接口、流程和超时处理机制。第四类责任追溯约束。涉及如果出问题谁能定位、证明和处理。工程上要有全链路日志、关键事件记录、版本快照和可复现环境。每一类约束都可以做成检查项放进需求评审、代码评审、测试用例和上线验收里。2.3 两张“治理地图”的对比这里用一个表格把沙箱治理和法律治理的差异放一起方便在项目讨论时快速对齐。对比维度沙箱治理法律治理核心问题模型能访问哪些系统资源模型在什么业务边界内提供服务典型手段容器、权限限制、网络白名单、进程隔离数据授权、内容安全审查、用户权利响应、审计日志边界来源技术配置和系统策略法律法规、行业规范、合同约定、产品规则能否独立证明合规不能能提供审计依据和流程记录常见失效场景绕过隔离、工具调用越权、语义级越界无明确规则、无人负责、无审计记录设计时机部署阶段为主需求阶段就要介入贯穿整个生命周期实际项目里两种治理不是二选一而是并列存在。沙箱仍然要做它是底线之一法律治理是决定产品能不能长期跑下去的另一个维度。只做沙箱产品可能“很安全但无法自证合规”只做规则不落沙箱系统资源又可能被模型误操作。正确的顺序是先有治理边界再有技术隔离。3. 在 AI 产品里把法律要求翻译成可执行的工程检查项这一节是全文最实用的部分。不管你做的是对话机器人、AI Agent、RAG 问答系统还是内容生成工具下面四类检查项基本都会涉及。3.1 数据来源与授权确认先看数据从哪里来。用户主动输入、系统导入、爬虫采集、第三方 API 返回不同来源对应不同的授权要求。工程上要做的第一件事是形成数据清单。每类数据至少记录数据内容、来源渠道、是否获得授权、授权范围、存储位置、留存期限、接触人员。我曾经排查过一个 AI 知识库问答项目业务方觉得“数据都是公司内部文档不会有问题”。实际上很多文档里包含员工手机号、身份证复印件扫描件、客户联系方式。模型把这些内容切成向量块存入向量数据库后等于把原本分散在 Word 和 PDF 里的个人信息集中到了一个可检索的接口后面。这就是典型的数据治理缺口。后来处理方式是对文档做敏感信息识别命中个人信息规则的内容单独隔离不进入向量库必须进入的做脱敏处理。落地建议所有数据源必须能回答“这个数据从哪里来授权范围是什么”涉及个人信息的数据默认不进入模型训练和向量库必须使用个人数据时先确认是否具备合法性基础保存数据来源和授权记录不能只留数据本身。3.2 内容安全与输出边界模型输出审核是 AI 应用上线前最不能省的一步。这里的难点不是“加一个关键词黑名单”而是如何定义边界以及边界不确定时怎么处理。我一般会分三层做第一层输入侧过滤。用户提交的内容是否包含恶意指令、敏感个人信息、明显攻击性语言。这部分可以在请求进入模型前拦截降低模型被诱导的概率。第二层模型侧约束。通过系统提示词、输出格式限制、temperature 参数设置让模型更倾向于稳定输出。比如要求模型遇到不擅长的专业问题时明确说明无法回答而不是生成一段看起来专业但没有依据的内容。第三层输出侧审核。模型生成结果后用规则或分类模型判断是否包含违禁内容、隐私泄露、虚假信息、品牌侵权等风险。不能确定的输出进入人工复核队列而不是直接返回给用户。判断标准要具体。什么叫“内容安全达标”至少包括预设的敏感类型全量拦截漏放率为 0至少对已知类型低风险输出通过率不能太低避免用户正常问题被误杀不确定内容有明确的人工复核入口和响应时间。3.3 用户权利响应与投诉反馈AI 产品很容易忽略用户权利这一段。很多团队把数据采集做好了但用户问“你能删除我的对话记录吗”发现系统根本没有删除接口。用户权利响应在工程上不是什么高深技术核心是流程通不通。常见的用户请求包括查询用户想知道系统保存了哪些关于他的数据更正用户发现个人信息有误要求修改删除用户要求删除对话记录或上传文件导出用户想要一份自己数据的备份撤回授权用户取消对某类数据的使用同意。每个请求都应该有入口、有处理流程、有超时约定、有结果反馈。即使系统设计上决定不提供某些能力也要能解释原因并给出替代路径而不是用户找不到任何处理渠道。我建议在开发计划里把“用户权利响应”当成一个普通功能模块来排期而不是临时补丁。一个简单做法是预留一组管理接口对接后台客服系统或自动化处理流程。3.4 日志留痕与责任追溯日志是最后一道防线。系统运行总会出问题出了问题是模型本身的局限、提示词配置不当、数据权限没控制住还是产品文案有误导没有日志这些问题都会变成“说不清楚的事”。AI 应用日志至少要有三类记录第一类是请求日志。记录用户输入、模型输出、调用参数、处理耗时、是否触发拦截规则、是否进入人工复核。第二类是决策日志。记录内容安全判定结果、数据脱敏动作、权限校验结果。这类日志的价值是让每次“拦截”或“放行”都能解释。第三类是运维日志。记录模型版本、提示词版本、依赖版本、配置变更。这个很关键因为同样的输入模型版本不同输出可能完全不同没有版本记录很多问题无法复现。日志格式建议统一至少包含时间、用户标识、事件类型、触发规则、结果、处理人。注意日志里也不宜直接存原始个人敏感信息。需要分析问题时先用脱敏后的标识做关联必要时再走正式流程调取完整记录。4. 从一个 AI Agent 的需求评审开始落地流程示例4.1 需求阶段先确认适用场景和责任边界开始写代码之前先开一次需求评审会。评审的重点不是功能需求而是治理需求。比如要做一个“企业知识库 AI 助手”需求阶段要问清楚这个助手是面向内部员工还是外部客户它能回答哪些领域的知识哪些问题必须拒绝回答用户能不能上传自己的文档上传后如何处理回答出错时可能的后果是什么是否需要提示“仅供参考”用户聊天记录会保留多久是否提供给业务方查看这个阶段输出的不是代码而是一份治理边界清单。我见过很多项目跳过了这一步结果开发到一半才发现某个功能没法做因为数据授权范围不对或者输出内容超出业务资质边界。需求阶段可以先出这样一份 checklist需求评审 Checklist 1. 用户用这个功能做什么会涉及哪些数据 2. 这些数据是否获得授权授权范围是什么 3. 输出如果错误影响谁有没有补救机制 4. 哪些操作必须留痕日志保存多久 5. 用户如何投诉、导出、删除自己的数据 6. 如果 AI 不能判断是否有降级路径4.2 开发阶段在代码里设置合规断言代码评审不能只盯着性能和可维护性还要看合规约束有没有真正生效。比较好的做法是把治理要求写成可测试的断言。举一个 RAG 问答系统的例子project: enterprise-kb-ai compliance: data_source: user_upload_authorized: true internal_doc_authorized: true sensitive_content_isolated: true content_safety: enable_input_filter: true enable_output_review: true manual_review_queue: true data_lifecycle: retention_days: 180 user_delete_enabled: true audit: log_request: true log_decision: true log_model_version: true这段配置不是最终产品代码但可以把合规要求变成项目里可见的配置项避免开发过程中遗忘。代码层面至少要做到上传文件前先做文件类型和敏感信息检查构建向量库时跳过未授权和敏感内容模型调用入口统一封装所有请求都经过内容安全中间件删除请求不只是删除用户可见记录还要清理关联的向量数据和缓存所有关键节点写审计日志。4.3 测试阶段用红队样例验证输出边界法律治理不能只靠代码评审必须用测试证明边界生效。测试方式除了常规功能测试一定要加“红队样例”测试。红队样例是针对治理边界的对抗性输入。每个 AI 产品都应该维护一组这样的样例并且随着线上真实案例持续补充。以下是我常用的红队样例类型输入包含个人隐私信息看模型输出是否泄露或过度存储输入包含诱导模型扮演角色、越权操作的提示词输入包含“如何规避规则”类问题看模型是否配合输入涉及医疗、法律、金融等专业建议看模型是否过度承诺输入包含知名品牌或他人作品看输出是否可能构成侵权连续多轮对话看模型是否被绕开初始约束。测试通过标准不要写得模糊比如“基本不会泄露”这种不算。要写成可执行的已知敏感类型拦截率达到 100%低风险正常问题通过率不低于 95%命中不确定状态时进入人工复核而不是直接返回。4.4 上线阶段建立观测指标和人工复核机制上线不是治理工作的终点。真正上线之后治理问题反而会集中暴露因为真实用户输入比测试集复杂太多。建议上线前就准备好观测面板关注四类指标拦截率输入过滤和输出审核触发次数占比人工复核量进入人工队列的数量和响应时长用户举报量用户主动投诉的比例和类型分布数据生命周期执行情况过期数据是否按时清理删除请求是否及时完成。人工复核机制也要提前定好。谁来复核响应时长目标是多少复核后发现模型误判是调规则、调提示词还是人工介入修改结果这些没有明确方案人工复核很容易变成一个只增不处理的积压队列。上线后前两周我建议每天花 30 分钟过一遍拦截日志和人工复核记录。这个阶段发现的边界问题最多也最值得投入。5. 五个常见误区和排查思路5.1 “本地部署就等于安全”很多人觉得模型部署在内网、不出公网数据安全就没问题。这里有个误区本地部署解决的是数据传输和第三方接触的问题不代表内部使用过程中不会发生越权、泄露或滥用。我见过一个内部 OA 系统模型部署在内网看起来非常安全。但系统功能上允许用户上传任意文档并让模型总结结果有员工上传了包含全体同事手机号的表格模型把内容处理成摘要并展示给另一个部门的人。这个问题的根源不是模型部署位置而是访问控制和数据处理规则没有做好。排查思路先看用户角色和文档权限是否映射到模型调用权限上再看向量数据库是否有独立的访问控制最后看日志里能不能定位到具体人的操作记录。5.2 “模型加了内容审核就不会出问题”内容审核是治理体系的一部分但它有自己的局限。关键词规则很容易被同义改写绕过去分类模型也会存在误判尤其面对专业领域内容时很多模型只是低置信度地给出一个判断不能当作确定结论。更关键的是内容审核如果没有接入业务闭环效果会大打折扣。拦截了内容之后是直接拒绝、模糊回答还是转人工不同处理方式对用户体验和风险影响完全不同。排查思路先看审核规则的命中情况有没有大量误杀再看低置信度输出是否进了人工队列还是被直接放行最后看审核结果和最终返回给用户的内容是否一致。5.3 “沙箱隔离之后可以不用管日志”这个想法是最危险的。沙箱给出的是技术边界但业务层面发生了什么、谁在什么时间做了什么、模型为什么给出这个回答这些信息只能靠日志和审计体系回答。如果沙箱把系统保护得非常好但日志没有记录模型版本和输出决策出了责任争议时基本没有证据。合规视角下“没发生事故”不等于“可证明没发生事故”。排查思路先确认请求日志是否完整再看日志是否包含模型版本和规则版本最后检查日志保存时长是否满足业务和合规要求。5.4 “法律风险只有上线那一刻才需要看”治理不是上线前的“安全检查”。模型会迭代提示词会修改数据源会增加业务场景会扩展。每一次变更都可能改变行为边界。比如原来模型只处理公开文档后来接入员工内部文档数据授权范围变了原来提示词限制只能回答产品知识后来有人增加了售后投诉处理功能输出边界也变了。这些变更如果不做治理评审问题往往是上线后才暴露。排查思路把治理检查加入变更流程。每次模型版本更新、提示词调整、数据源接入都需要重新过一遍数据授权、内容安全、日志覆盖和用户权利检查项。5.5 “把责任推给模型即可”模型只是一个软件系统。出了问题模型本身不能承担责任责任落在部署它、设计它的组织和人身上。如果把“AI 模型自己输出错误”当作解释理由而不去复盘原因无法回答三个关键问题为什么模型在那个场景下会输出错误内容为什么现有审核机制没有拦住产品是否在用户侧给了足够的风险提示排查思路出问题后先定位是哪个环节失效。是训练阶段的数据质量问题是指标调整不到位是提示词约束不够还是产品流程缺少人工兜底定位到环节之后再来谈怎么修复。6. 治理落地的几个实操建议6.1 小团队怎么做先做最小治理清单小团队人少、节奏快不可能像大型组织那样设置专职合规岗位。但也别因此放弃治理可以采用最小治理清单。最小治理清单可以保持在 10 项以内列出数据来源和授权范围明确哪些敏感数据不允许进入模型设置统一模型调用入口所有输入输出经过内容审核敏感输出默认走人工复核记录请求日志、决策日志和模型版本提供用户删除数据入口设置日志保存时长上线前用红队样例测试一轮每次版本变更重新检查上述清单。这份清单不需要很重的系统支撑大多数可以靠统一的 API 封装、几组配置项和一个简单审核页面完成。关键是坚持执行而不是停留在文档里。6.2 中大型团队怎么做把治理做成独立流程团队大了之后治理要和研发流程绑定。建议在需求评审、设计评审、代码评审、测试验收、上线发布这几个节点都加入治理检查项。具体做法是需求模板里增加“数据与合规影响”区块设计文档必须说明数据流和权限边界代码评审检查治理相关代码是否覆盖测试用例必须包含红队样例和用户权利场景上线发布前由固定的治理负责人确认检查项。这里的关键是“固定的治理负责人”。AI 治理不能靠所有人顺便做必须有具体的人对一个项目的治理状态负责哪怕不是全职。6.3 治理不是一次上线而是在迭代里持续做最后想说一个观点治理是在迭代过程中持续校准的不是一次性交付物。模型能力在变提示词在变用户使用方式在变治理规则也不可能一成不变。我见过一个 AI 内容生成工具第一次上线时内容安全规则覆盖得很好但三个月后用户开始尝试用新的方式诱导生成违规内容原有规则明显不够只能重新补充测试样例和拦截策略。所以治理这件事不要想着“做完一次就结束了”。比较好的状态是形成节奏每周看一次拦截日志和人工复核记录每月做一轮红队样例更新每次版本发布前跑一遍治理检查清单。贵在坚持。回到开头那句话AI 应由法律治理沙箱只是辅助手段。沙箱解决了“模型跑不出系统”的问题法律治理解决的是“AI 不该做的事系统从一开始就不做”的问题。前者是技术底线后者是行为边界。真正让 AI 产品走得更远的永远是后者。