渐进式交付:用白名单机制把 Agent 的风险降到最低
第16篇在讨论任务完成判断时提到信任是累积的一次明显的失误会大幅拉低还没建立起来的信任恢复的速度慢于损耗的速度。这个观察指向了一个交付策略问题AI Agent 在生产环境里应该怎么推进才能在积累信任的同时控制风险答案是渐进式交付而白名单机制是它的技术实现基础之一。白名单不是唯一的安全机制但它能先把 Agent 的可用能力范围收窄到经过治理和验证的部分再配合权限、参数校验、人工确认、审计、监控和回滚把风险控制在可接受范围内。一次性全量开放的问题有些团队在初次交付时倾向于全量开放就是把业务系统的所有服务端命令都纳入白名单让 Agent 能做所有事然后等用户反馈问题。这个策略的问题在于它把发现问题的成本转移给了用户。用户在生产环境里遇到一个 Agent 的明显错误如调错了接口、传了错误的参数、生成了一份数据有问题的报表等这次体验的负面影响很难用后续的改进来完全抵消。第一印象尤其脆弱在 AI 工具的普及程度还不高的企业环境里更是如此。更实际的问题是全量开放意味着全量治理。一个有五十个服务端命令的系统要让所有命令都被 AI 正确使用意味着五十个命令都需要达到治理基准线覆盖面一下子铺得太大哪里出了问题都不清楚排查成本极高。渐进式交付的逻辑反过来先治理一批验证 AI 能正确使用这批再开放下一批。每个阶段的范围是可控的问题出在哪里是清晰的修复之后再推进。白名单机制的工作方式在我们的解决方案中白名单的实现很直接在服务端命令的描述字段里加入[HOB_INCLUDE]标记抽取工具在生成本体时只输出带有这个标记的命令没有标记的命令不会出现在本体文件里Agent 在正常工具选择路径里也就不会看到它们。但这只是第一层控制。更严谨的设计中白名单还必须在运行时生效Agent 发起调用前本体层或执行层要再次检查这个命令是否在当前本体版本、当前应用、当前用户上下文允许的白名单里。这样即便出现旧本体缓存、手工构造调用、通用脚本工具误用等情况也不会只依赖Agent 看不见这一层来保证安全。这个设计有一个值得注意的特性白名单的控制在工程文件里不在本体文件里。本体文件是从工程文件抽取的工程文件是唯一的信息源。要调整白名单在活字格工程里修改描述字段重新运行抽取工具重新部署本体文件。这个特性让白名单的更新和本体的版本管理保持一致白名单的变更有迹可查Git 提交记录每次变更会产生一个新版本的本体文件可以回滚可以对比前后差异。如果直接在本体文件里删除某些命令就失去了这种一致性也会引入第22篇里提到的版本分叉问题。分期路线图从演示到全量渐进式交付通常分三个阶段每个阶段有明确的目标和退出条件。第一阶段主流程演示目标是让核心用例在受控条件下跑通向项目相关方展示 AI 工作台的基本能力建立继续推进的信心。这个阶段白名单的范围很小通常只包含 5 到 10 个高频使用的命令覆盖最典型的查询和操作场景。测试数据是人工准备的覆盖了已知的边界情况。演示的对象是项目负责人或者关键用户代表不是全体用户。退出条件核心用例全部通过LLM as a Judge 评分达到可接受水平比如所有用例平均 7 分以上权限和白名单相关用例不得失败高风险动作必须触发人工确认项目相关方认可继续推进。第二阶段小范围生产验证目标是在真实生产数据和真实用户操作下验证 Agent 的表现发现演示环境里没有暴露的问题。这个阶段白名单扩展到覆盖主要业务流程命令数量通常在 15 到 25 个之间。开放给一小组种子用户这些用户对 AI 工具有较高的接受度出了问题愿意配合反馈而不是直接放弃使用。运维人员需要主动跟进每天检查调用日志快速响应用户反馈。在这个阶段写入、删除、外发、批量更新这类高风险动作不应该直接全自动放开。可以先采用只读模式、shadow mode、强制人工确认或者把 Agent 的输出限制为建议而不是直接执行。同时要准备 kill switch、回滚路径和异常告警一旦出现越权、错误写入或连续失败可以立刻暂停相关能力。退出条件连续两周内无严重错误严重错误定义为导致业务数据出错、越权调用或用户强烈投诉的错误种子用户的满意度达到预期已经发现的问题都有对应的归因、治理修复记录和回归测试结果。第三阶段规模化推广目标是把白名单扩展到覆盖更多经过治理验证的命令并逐步向更多用户开放。这个阶段不意味着把所有命令都加进去而是把所有已经验证过的命令都加进去。仍然有一些边缘命令要么还没有完成治理要么使用频率极低不值得花治理成本这些可以留在白名单之外。这个阶段不应该理解成从小组用户一次性切到所有用户而是按角色、部门、业务线、地区或用户比例逐步放量。每次放量之前确认测试结果、调用日志和用户反馈发现问题可以暂停扩展或回滚到上一阶段。这个阶段之后白名单的扩展变成一个常规的迭代工作新功能上线治理验证加入白名单灰度放量监控反馈。不是一次性完成的终点而是一个持续运转的节奏。黑名单作为补充白名单是正向控制明确说哪些命令可以用。黑名单是反向控制明确说哪些命令不能用在通用软件里它常被理解为排除少数其余默认可用。两种控制方式适合不同的场景但企业 Agent 的默认策略应该是白名单和最小权限。白名单适合初期接入也适合长期控制 Agent 的能力边界。黑名单只能作为补充用来排除某些永远不应该开放或需要额外审批的特殊命令。按照方案的设计我们可以在服务端命令描述里加入[HOB_EXCLUDE]标记抽取工具会在--mode all时跳过这些命令。它更适合作为本地审查或特殊排除机制而不是生产环境的主要安全策略。删除类命令、批量操作命令、权限管理相关命令即便未来要开放也应该经过单独治理、测试和人工确认设计。实际项目里白名单和黑名单可以同时使用用白名单控制整体的开放节奏用黑名单排除即便在本地全量审查时也不应该进入候选范围的特殊命令。但最终生产准入仍然应该以白名单为准。不推荐直接修改本体文件这条建议在第22篇提到过在渐进式交付的语境里值得再说一次因为它的违反频率很高。比如很多团队在验证某个命令时发现本体里的描述有问题很自然的反应是直接打开本体文件修改。改完重新测试通过了继续。这个操作很快也很直觉。问题在于下一次发版之后开发者重新运行了抽取工具覆盖了整个本体目录手动修改的内容消失了。这个命令的 LLM as a Judge 评分重新下降已经验证通过的用例出现了反复用户发现一个之前能用的功能突然不能用了。这类反复对用户信任的伤害比功能从来没有正常过更大因为它传递的信息是这个系统不稳定好了又坏无法依赖。正确的流程始终是发现本体质量问题回工程里修改描述重新运行抽取工具生成新版本本体部署到新版本目录通过注册表切换当前生效版本并触发 Agent 的本体缓存失效或重新加载。多几个步骤但换来的是本体和工程的一致性、版本管理的可靠性以及出问题时可以回滚。渐进式交付的心理账本渐进式交付不只是技术策略也是一个用户预期管理策略。在第一阶段用户知道这个系统目前只支持几类操作他们的预期是有限但可靠。第二阶段扩展之后用户感受到的是能力在增长而不是用了一段时间发现越来越多的功能不好用。这两种体验的心理账本是完全不同的。有限但可靠比全面但不稳定更容易建立信任这在消费者产品里是成熟的产品策略在企业 AI 工具的推进里同样成立。用户对 AI 工具的容错预期本来就比传统软件低。AI 说错了一件事他们不会完全惊讶但他们需要知道这个工具在它被允许做的范围内是经过验证、可追溯、可回滚的。白名单机制划出的是AI 被允许做、并且已经验证过的边界在这个边界内建立信任再逐步扩展边界。这个逻辑比一次性交付全部功能然后修 bug更符合 AI 工具推进的实际节奏也更尊重用户的时间和信任。