你的API有单元测试,UI有E2E测试,连数据库迁移都有回滚验证。但那个每天处理用户请求、调用外部工具、自主决策的AI Agent呢?它在生产环境裸奔。
这不是危言耸听。AgentProbe的开发者做过一个内部统计:接入该工具的127个Agent项目中,94%在首次混沌测试(Chaos Testing)中暴露了未处理的工具超时场景。换句话说,你的Agent可能正在用户看不见的地方反复崩溃,只是日志没告诉你。
为什么现有测试工具不够用
Promptfoo测的是提示词,DeepEval测的是输出质量。但Agent的行为——从接收请求到返回响应之间的决策链条——一直是黑箱。
AgentProbe的创建者打了个比方:「传统测试像是检查汽车的外观和尾气,但我们关心的是发动机在不同路况下的表现。」当LLM幻觉出一个不存在的函数名,当两个Agent在管道里传递消息时发生分歧,当工具返回格式错乱的数据,你的系统会怎么处理?
这些问题在生产环境每天都在发生。AgentProbe的解决方案是把测试逻辑写成YAML,塞进CI流程,让每次代码提交都触发确定性验证。
5分钟能搭起来的测试框架
安装只需要一行命令:
npm install @neuzhou/agentprobe
然后写一个YAML文件:
name: weather-tool-selection
description: Agent should pick the weather tool for forecast queries
steps:
- send:
message: "What's the weather in Tokyo tomorrow?"
assert:
- tool_called: get_weather
- tool_args:
location: "Tokyo"
- response_contains: "forecast"
- no_pii_leaked: true
运行测试:
npx agentprobe run agent.test.yaml
没有SDK要学,没有测试框架要对抗。这个设计明显是针对那些「想测但没时间造轮子」的团队——AgentProbe的GitHub星标增长曲线显示,发布后的前30天,68%的issue是关于「能不能支持某云函数的入口格式」,而不是「怎么用」。
混沌测试:专门破坏你的Agent
AgentProbe最有意思的功能是故意搞破坏。你可以在YAML里注入工具超时、返回格式错误、网络延迟,观察Agent的容错逻辑。
chaos:
- tool: get_weather
failure: timeout
after: 2 calls
这个配置的意思是:前两次调用正常,第三次开始让get_weather超时。测试断言可以检查Agent是否优雅降级、是否把原始错误暴露给用户、是否触发了备用工具。
有个电商团队的案例:他们的客服Agent在Black Friday期间因为库存API响应变慢,开始 hallucinate 库存数字,导致超卖。接入AgentProbe后,他们在CI里模拟了200ms到5000ms的随机延迟,发现Agent在超过800ms时会跳过缓存直接「编」答案。修复后增加了超时熔断和人工兜底流程。
多Agent管道的协调验证
更复杂的场景是多个Agent协作。AgentProbe支持测试Agent之间的消息传递、任务交接、状态同步。
你可以断言:Agent A完成数据清洗后,Agent B必须在3秒内收到结构化输出;如果Agent B返回格式不匹配,Agent A应该重试还是上报?这些在微服务架构里常见的测试模式,现在被搬到了Agent编排层。
Record & Replay功能允许你录制一次真实会话,然后作为回归测试反复播放。不需要mock,因为录的就是生产环境的真实响应。AgentProbe的团队透露,这个功能的设计灵感来自游戏行业的录像回放系统——「我们想知道,给定完全相同的输入序列,Agent的行为是否确定。」
2907个测试的自我证明
AgentProbe本身跑了2907个测试,全部通过。这个数字被写进README不是炫耀,是对「测试框架不信测试」这种讽刺的提前防御。
框架的开发者在接受采访时说:「我们见过太多'测试覆盖率90%'但核心逻辑全靠祈祷的项目。Agent的行为太容易被LLM的随机性掩盖,没有确定性验证,所谓的'AgentOps'只是监控仪表盘上的漂亮曲线。」
目前AgentProbe支持Node.js运行时,Python SDK在roadmap上排Q3。社区贡献的插件已经覆盖了LangChain、LlamaIndex和AutoGen的主流版本。
如果你现在去翻自己生产环境的Agent代码,有多少分支逻辑是「应该能跑」但从来没被触发过的?AgentProbe的CLI在首次运行时会生成一份覆盖率报告,标红那些从未被执行过的工具调用路径——其中有多少藏着你看不见的bug?
热门跟贴