距离Elasticsearch Agent Builder黑客马拉松截止只剩两天,我决定推翻重来。

最初的项目叫Rehearse:让智能体在沙盒里预演动作,确认安全后再执行。思路没问题,但致命缺陷也很明显——环境会变。预演时收件箱长这样,真执行时可能已完全不同。模拟与现实脱节,整个逻辑崩塌。

打开网易新闻 查看精彩图片

但有一类问题不受此困扰:对抗性模糊测试。如果智能体在模拟中失败,现实中同样会失败。Gauntlet由此诞生——截止前48小时,借用同一核心洞察(用搜索构建记忆、保持创造力),指向一个随机性无关紧要的问题。

大多数人对OpenClaw有印象,那款爆红的个人AI助手。围绕这类拥有广泛工具权限的智能体,安全讨论从未停过:它们会忘记不该做什么,或根本不知道。原因很简单:我们只测" happy path "。确认它能完成该做的事,却很少验证有人试图让它做不该做的事时会发生什么。

对抗性测试沙盒并非不存在,但搭建痛苦。手动设计攻击向量,人工植入对抗数据,为每个场景配置测试基础设施。慢、难扩展、且只能找到你已想到的问题。

我想要另一种东西:环境本身自动具备对抗性,且随时间变得更聪明。

Gauntlet的方案是用另一个智能体来"扮演"沙盒。当主智能体调用search_emails时,模拟智能体拦截结果,决定如何搞破坏——往邮件正文注入提示注入攻击、返回轻微错误的数据、投喂虚假信息,观察主智能体能否识别。主智能体全程不知自己身处模拟。

接口只有两个装饰器:@gauntlet.query用于读操作,@gauntlet.mutation用于写。集成表面仅此而已。运行结束后,evaluate()复盘全程,存储确认的问题。

用起来简单,底下藏着两个难题。

第一,模拟智能体需要维持一致的系统模型。它不能今天让数据库返回"用户不存在",明天又让同一用户成功登录。破坏需要逻辑自洽,否则测试无意义。

第二,搜索空间爆炸。单个工具调用可能有数十种变异方式,多步交互的组合更是天文数字。暴力遍历不可行,需要智能地探索最可能暴露漏洞的路径。

这让它本质上成为一个搜索问题——如何在无限可能的对抗策略中,高效找到真正能击穿主智能体防线的那一种。