企业部署 AI 智能体前,先建好沙盒

深度The New Stack2026年3月12日6 分钟阅读
企业部署 AI 智能体前,先建好沙盒
AI 智能体(Agent)能自主执行代码、调用 API,但也带来了失控风险。Naftiko 联合创始人 Kin Lane 认为,通过沙盒(Sandbox)和契约测试(Contract Testing)来模拟系统行为,是确保智能体安全可控的关键。

对企业来说,AI 智能体(Agent)系统能让员工从执行转向决策、监督和战略制定。这带来了新机会,但也伴随着风险:

  1. 失去人工监督和控制:智能体可以自主执行一系列操作,比如浏览网页、运行代码、调用 API 和管理文件,通常只有很少的人工检查点。这会导致风险叠加:一个早期错误可能在没人察觉的情况下演变成重大损害。企业可能难以审计哪些操作在何时发生、为何发生,使得追责和修复变得困难。
  2. 安全和提示注入漏洞:消耗外部数据(网页、邮件、文档)的智能体容易受到提示注入(Prompt Injection)攻击,即环境中的恶意内容劫持智能体行为。在企业环境中,一个能访问内部系统、数据库或 API 的受感染智能体,可能外泄敏感数据、提升权限或执行破坏性操作,同时看起来还在正常运作。
  3. 不可预测且难以撤销的操作:与只生成文本的聊天机器人不同,智能体系统会采取现实世界的行动:发送邮件、修改记录、进行采购、部署代码。错误可能难以或无法撤销。广泛的工具访问权限、长任务周期和模糊指令结合在一起,会导致智能体以技术上正确但操作上灾难性的方式追求目标。

此外,智能体的使用可能导致对敏感决策过度依赖智能体判断、智能体摄入机密上下文带来的数据隐私风险,以及智能体调用外部服务时的第三方供应链风险。

“一个早期错误可能在没人察觉的情况下演变成重大损害。企业可能难以审计哪些操作在何时发生、为何发生。”

因为 AI 智能体还很新,我们还没有现成的模式或最佳实践可以参考。相反,作为 IT 专业人士,我们需要自己找出风险缓解措施,并希望在这个过程中公开分享所学。Naftiko(一家开源 API 公司)的联合创始人兼首席社区官(CCO)Kin Lane 从系统思维的角度看待智能体风险的缓解。他的核心观点是,测试和模拟(Mocking)是企业能自信且安全地为智能体系统做好准备的方式。

行为即规范

系统思维中最著名的启发式方法之一由已故的英国理论家、顾问兼曼彻斯特商学院教授 Stafford Beer 提出。他经常使用这句话:“系统的目的就是它所做的”——意思是系统常常以与设计者、操作者和推广者意图相悖的方式运作。Beer 观察到:“毕竟,声称系统的目的是做它不断失败的事情是没有意义的。”

如果系统的目的确实通过其行为而非设计来揭示,那么理解 Donella Meadows 所说的“关系”——组件之间的联系——就需要能够可靠地观察系统。

“系统的目的就是它所做的。毕竟,声称系统的目的是做它不断失败的事情是没有意义的。” – Stafford Beer

Honeycomb 这样的可观测性(Observability)工具使用分布式追踪和高基数事件数据来提供生产环境中系统行为的洞察,允许工程师实时查询和探索遥测数据的任意维度(跨度、追踪和结构化日志字段)。但对于智能体系统,我们还需要在生产前就有信心。

Lane 认为这可以在测试套件中找到;他说,测试允许你刻意塑造行为,进而塑造 API 的未来。

“人们倾向于将 API 测试视为确保它做该做的事,”他告诉 The New Stack。“但拥有强大的沙盒(Sandbox)并使用契约测试(Contract Testing)来与消费者建立强反馈循环的结合,允许迭代未来的可能性。测试实践好的公司更擅长发明和应对未来。它们能够以生产者和消费者都同意的可靠、可复制的方式将事物变为现实。”

正是这种心态,他带到了为客户定义业务能力(Business Capabilities)的工作中——本质上是描述系统能为业务做什么的离散、可组合单元(如“处理支付”或“管理库存”)。他构建沙盒和模拟(Mock),从而为他们的 AI 智能体提供一个安全玩耍的地方。

要让他的方法奏效,模拟需要是现实的准确表示。“我应该能够将模拟的 URL 切换到生产环境,并可靠地获得具有相同结构的实时响应,”他说。“这本身就是一个测试;我能从合成模拟切换到生产环境而不出问题吗?”

做得好时,模拟和契约测试会相互加强。脆弱、不现实的模拟表明契约测试差或不存在,而不是模拟本身失败。如果 API 生产者和消费者之间没有共享的可见性,模拟和真实 API 会独立演化,这可能破坏信任。当提供者发布正式规范和示例,并在自己的契约测试中使用它们时,每个人都能保持一致。

为了实现这一点,Lane 更喜欢开源工具,特别是 MicrocksOpenAPI,以及用于脚本编写的 Bruno

共享模拟,共享现实

Microcks 是一个用 Java 构建的开源 API 模拟和测试平台,已经运行了十年,并在三年前捐赠给了云原生计算基金会(CNCF)。它为企业规模构建,语言无关,支持 REST/OpenAPI、AsyncAPI、Kafka、MQTT、WebSockets、gRPC、GraphQL 等。

这种广度非常宝贵,因为企业环境通常叠加多种 API 标准——我在本系列前一篇文章中称之为 API 沉积(API Sediment)——而不是标准化为一种。没有像 Microcks 这样的工具,“你最终会为每种协议或规范使用专用工具,这简直是噩梦,”Microcks 联合创始人 Yacine Kheddache 告诉我。“为了模拟目的,开发者创建自己的虚拟模拟,这些模拟不能代表真实的业务服务。”

该平台围绕契约优先(Contract-First)理念构建。导入一个主要工件(如 OpenAPI 规范),Microcks 使用它自动生成模拟端点,无需编写代码。为了避免主要规范因数百个示例而臃肿,Microcks 支持次要工件,即额外的示例集,来源包括 Postman 集合、HTTP 存档记录、AI 副驾驶或手工制作的 YAML 文件。捆绑主要和次要工件会生成即时沙盒,采用者将其描述为“沙盒即服务”。

一个值得注意的方面是 Microcks 如何鼓励组织范围内的协作。“不仅仅是开发者在维护用于单元测试的一次性本地模拟。团队构建共享的、版本化的示例数据集,全球围绕 API 服务的每个人都贡献并重用。”

Kheddache 说。这允许跨微服务团队并行开发:开发者模拟他们的依赖项,独立工作,并在真实服务可用时直接切换进去。

包括 Amadeus 在内的大型采用者,使用 Microcks 来左移他们的模拟和契约测试方法,报告了开发速度的显著提升。

BNP Paribas 的 Microcks 实践

Kheddache 描述的协作、共享所有权模型并非理论。在 BNP Paribas,法国零售银行部门的 32 个小组现在使用 Microcks,超过 500 名开发者和测试人员活跃在平台上,每周通过它处理超过 250 万次 API 调用。

BNP 有一个庞大的遗留大型机位于核心银行业务的中心,每个团队在需要构建或测试时都必须直接与之交互。这速度慢、成本高,并对运行成本高昂的基础设施造成不必要的压力。

通过在 Microcks 中模拟那些大型机支持的 API,BNP 的团队可以并行开发和测试,而无需接触大型机,只在真正必要时连接到真实服务。根据已发布的案例研究,结果是开发和测试周期缩短了三分之二。

还有一个意外收获:显著减少的大型机负载直接转化为更低的能耗,这对银行的可持续发展目标有实质性贡献,这不是你通常与测试工具关联的结果。“能够随处部署模拟沙盒,随时可用,”BNP 团队指出,“是实现这种规模的关键。”

这正是 Kheddache 描述平台更广泛前景时心中所想的结果。“当他们采用我们的方法时,收益是惊人的,”他告诉我。“他们能够加速开发,模拟所有依赖项,每个人都可以并行工作。”

对于契约测试,Microcks 可以充当 API 客户端,向真实端点发送请求,并验证其在多个版本中保持与契约的合规性。这对于捕捉破坏性变更和认证向后兼容性很有用。

Microcks 也转向支持个体开发者,而不仅仅是集中化的平台团队。一个轻量级原生二进制文件(通过 GraalVM 编译)在 200 毫秒内启动,并且存在用于 Java、Node、Go 和 .NET 的 Testcontainers 绑定(最后一个由 AXA Insurance 贡献)。开发者现在可以在本地运行完整的集成测试,使用与中央环境相同的共享示例数据集,弥合了“在我笔记本上能运行”的差距。

每个 Microcks 模拟端点现在还暴露一个模型上下文协议(MCP)链接,使模拟 API 可作为工具供 LLM 和 AI 智能体访问。第二个目前未命名的项目正在开发中:一个运行时代理,将 OpenAPI、GraphQL 和 gRPC 规范转换为用于生产的 MCP 服务器,具有秘密管理和自定义工具塑造功能,使 API 更可靠地被语言模型使用。

AI 碎片化反馈循环

通常,在测试和模拟的背景下,使用沙盒的利益相关者越多,你就越有可能实现全面可靠的模拟。然而,加入生成式 AI 后,就像编程本身的行为一样,我们仍在试图理解健康的反馈循环是什么样子。“历史上,健康的反馈来自于让所有利益相关者在同一个工作空间、仓库或会议室里。但 AI 进一步碎片化了事物,所以我必须重新思考,我还没有好的答案,”Lane 说。

“那个内部和外部 API 的菜单就是你作为一家公司的能力。如果你没有把它放在目录、沙盒或注册表中,以便测试、玩耍和理解,你的团队就不会知道你能做什么。” – Kin Lane

然而,他确信你应该有模拟,不仅针对你生产的东西,也针对你消费的东西。“那个内部和外部 API 的菜单就是你作为一家公司的能力。如果你没有把它放在目录、沙盒或注册表中,以便测试、玩耍和理解,你的团队就不会知道你能做什么。”

像 Microcks 这样的工具使契约驱动的模拟变得容易,但协作和共享所有权才是让它发挥作用的关键。随着智能体系统承担更多自主权,对系统能做什么、应该做什么的共享理解,成为一切其他事物的基础。

觉得有用?分享给更多人

获取每周 AI 工具精选

工具推荐、实战教程和生态洞察,每周更新。

相关文章

Simon Willison 正在重构 LLM Python 库的抽象层,以支持服务器端工具执行等新功能。他利用 Claude Code 分析了四大 LLM 提供商的客户端库,生成了用于测试的 curl 命令和 JSON 输出。这些调研材料已开源,旨在帮助设计更通用的 API 抽象。

深度Simon Willison·4月5日·1 分钟

智能体技能——包含程序性知识和可执行资源的结构化包,供智能体在推理时动态加载——已成为增强 LLM 智能体的可靠机制。然而,推理时技能增强存在根本性限制:检索噪声引入无关指导,注入的技能内容带来大量 token 开销,而模型从未真正习得它所遵循的知识。我们提出一个问题:技能是否可以被内化到模型参数中,使其在无需任何运行时技能检索的情况下实现零样本自主行为?我们提出 Skill0,一个专为技能内化设计的上下文强化学习框架。Skill0 引入了一种训练时课程,从提供完整技能上下文开始,逐步撤除。技能按类别离线分组,并与交互历史一起渲染为紧凑的视觉上下文,教授模型工具调用和多轮任务完成。动态课程机制…

深度·4月5日·17 分钟

评论