上周面完字节AI测试岗,出来给朋友发了条消息:“凉了。”
朋友问:“问什么了?你答不上来?”
我说:“问的我都‘听过’,但我答的,都是‘用过’层面的东西。”
他问:“什么意思?”
我说:“面试官问我,Agent调用工具失败怎么兜底。我答了重试、降级、返回默认值。他听完,问了一句:‘那如果Agent选错了工具,参数传错了,模型返回了格式不对的结果,你的重试机制,能兜住哪一个?’”
我卡住了。
那一刻我才明白,面试官不是在考我“用没用过AI工具”。他在考我:当AI组件一层一层挂掉的时候,我知不知道每一层挂在哪、怎么兜。
一、“用过AI工具”和“知道怎么兜”,中间隔着什么?
先看两种回答的区别。
“用过”层面的回答:
“我用过Claude Code生成用例,用过Playwright MCP跑UI测试,用过DeepSeek分析日志。Agent调用失败的话,可以加重试机制,或者切备用模型。”
这个回答没错,但它只回答了一层——调用层。它假设“失败”就是“网络超时”,重试就能解决。
“知道怎么兜”层面的回答:
“Agent调用工具失败,要分四层看。调用层是网络超时、限流被拒,用重试、熔断、降级兜。推理层是Agent选错工具、参数构造错误、陷入循环调用,用工具白名单、参数校验、循环检测兜。模型层是大模型超时、格式异常、幻觉,用格式校验、fallback模型兜。消费层是结果越权、违反业务规则,用二次校验和人工确认兜。”
区别在哪? 前者把Agent当成一个“黑盒”,挂了就重试。后者把Agent拆成了一个“分层系统”,每一层的失败原因不同,兜底方式也不同。
面试官要的,是第二种。因为AI系统真正的风险,不在“它会挂”,在“你不知道它挂在哪一层”。
二、为什么校招生最容易卡在“推理层”?
我复盘了一下自己为什么卡住。答案很简单:我准备的所有东西,都是“怎么用AI”,没有一样是“AI怎么坏”。
我准备的内容:
怎么用Claude Code生成用例
怎么用Playwright MCP做UI自动化
怎么用RAG搭知识库问答
怎么用Agent跑测试流程
这些全是“正常路径”。面试官问的是“异常路径”。
更具体地说,我卡在了推理层。调用层的失败(网络超时、限流)我还能用传统分布式系统的知识兜住。但推理层的失败——Agent选错工具、参数传错、陷入循环——这些是AI系统独有的,传统测试里根本没有对应概念。
Agent选错工具:用户问“查一下我的订单”,Agent调了“查询用户信息”的接口,而不是“查询订单”的接口。接口返回200,但结果是错的。重试一百次,还是错的。
参数构造错误:用户说“帮我退掉昨天的订单”,Agent把“昨天的订单”理解成了“昨天创建的订单”,而不是“昨天支付的订单”。参数传错了,接口调用成功了,但退错了单。
循环调用:Agent调工具A失败,决定调工具B;工具B也失败,又回去调工具A。两个工具来回调了十几次,Token烧完了,任务没完成。
这三种失败,重试机制一个都兜不住。 因为它们不是“调用失败”,是“调用成功了,但调用错了”。
三、四层兜底框架:面试时可以直接用
我后来把这道题的答案整理成了一个四层框架。每一层说清楚“失败模式”和“兜底策略”。
第一层:调用层——网络和基础设施的问题
失败模式:网络超时、连接拒绝、限流被拒、服务不可用。
兜底策略:重试(带退避)、熔断(连续失败N次后停止调用)、降级(切备用工具或返回缓存结果)。
这一层是传统分布式系统就有的问题,大多数人都能答上来。 但只答这一层,不够。
第二层:推理层——Agent决策的问题
失败模式:选错工具、参数构造错误、循环调用、跳过必要步骤。
兜底策略:
工具白名单:只允许Agent调用注册过的工具,防止它幻觉调用不存在的接口。
参数校验:在工具执行前校验参数类型、必填项、取值范围。不合法直接拦截,返回结构化错误,让Agent重新构造。
循环检测:监控Agent的工具调用序列。同一个工具连续调用超过N次,或者A-B-A-B来回切换,强制中断并触发反思。
反思机制:工具调用失败时,让Agent分析“刚才哪里做错了,要不要换一个工具或换一种参数构造方式”。
这一层是Agent特有的,也是校招生最容易卡住的地方。 因为传统测试里没有“Agent选错工具”这个概念。
第三层:模型层——大模型本身的问题
失败模式:超时、返回非结构化内容、格式不符合预期、幻觉。
兜底策略:
格式校验:强制要求模型返回JSON,解析失败时触发重试或fallback。
fallback模型:主模型超时或不可用时,自动切到备用模型。
幻觉检测:对模型输出做交叉验证,比如让另一个模型判断结果是否合理。
这一层考的是你对“模型不可靠”这件事有没有预案。 很多人假设“模型一定会返回正确格式”,但实际生产中,模型返回乱码、返回半截JSON、返回一段解释而不是结构化数据,都是常态。
第四层:消费层——结果被误用的问题
失败模式:工具返回了结果,但结果越权、不安全、违反业务规则。
兜底策略:
结果二次校验:对Agent返回的结果做权限校验、合规校验、业务规则校验。
人工确认:高风险操作(支付、退款、改价)必须人工确认后才能执行。
审计日志:记录每一次工具调用的输入输出,便于事后追溯。
这一层最容易被忽略,但后果最严重。 Agent调用成功了、结果格式也对,但结果本身是错的——比如把A用户的数据返回给了B用户。这种问题,前三层的兜底机制一个都发现不了。
四、一个能加分的实战案例
框架讲完,面试官可能还会追问:“你实际做过类似的兜底设计吗?”
这时候,你需要一个具体的案例。不需要是生产级项目,课程设计、个人项目、甚至你分析过的开源项目都行。
我后来补了一个案例:
“我做过一个RAG知识库问答的小项目。用户问问题,系统先检索文档,再让模型基于文档回答。我遇到过一个典型问题:检索到的文档里没有答案,但模型还是编了一个回答。这就是模型层的幻觉。
我的兜底方案是:在Prompt里强制要求‘如果文档中没有答案,回答“知识库中未找到相关信息”’;同时在消费层加了一个校验——如果模型回答的内容和检索到的文档相似度低于阈值,就标记为‘疑似幻觉’,转人工复核。
后来我又发现,有些问题检索阶段就召回了错误的文档。这是推理层的问题,不是模型层的。所以我加了检索结果的置信度过滤,低于阈值的文档不送给模型。”
这个案例的关键不是“项目多复杂”,是你能说清楚“问题出在哪一层、你用什么策略兜住、兜住之后怎么验证” 。
五、避坑指南
坑一:只答“重试”。 重试只能兜住调用层,兜不住推理层和模型层。面试官听到“加重试”,就知道你只想过一层。
坑二:背四层框架,但说不清每层为什么这么兜。 面试官会追问“为什么推理层要用白名单”,你答不上来,说明你只是背了概念。
坑三:觉得自己没做过Agent项目就答不了。 这道题考的是分层思维,不是项目经验。你做过任何“表面成功但实际失败”的排查——选课系统、支付回调、缓存不一致——都能迁移过来。
坑四:把“兜底”理解成“出错后的补救”。 好的兜底是“出错前就拦住”。工具白名单、参数校验、权限校验,都是提前拦截。
坑五:忽略可观测性。 面试官如果追问“你怎么知道兜底生效了”,你要能答上来:记录每一次工具调用的输入输出、熔断和降级的次数、反思机制触发的频率。没有监控的兜底,等于没兜。
六、这道题真正在考什么
面试官问“AI组件挂了怎么兜”,不是在考你会不会写try-catch。
他在考:当系统里多了一个会犯错、会幻觉、会自作主张的“大脑”时,你还能不能保证整个系统的行为是可控的。
传统系统里,组件挂了就是挂了,报错是确定的。AI系统里,组件“挂了”可能是超时,可能是选错了工具,可能是返回了格式对但内容错的结果。失败模式变多了,兜底策略就必须分层。
能把这四层说清楚的人,面试官会认为:这个人不是“用过AI工具”,是“理解AI系统的失效模式”。 这是两种完全不同的能力层级。
最后
面完字节那天,我在备忘录里写了一句话:
“我准备的是‘怎么用AI’,面试官问的是‘AI怎么坏’。这是两套完全不同的知识。”
如果你现在也在准备AI测试岗的面试,别只准备“我用过什么工具”。花一个下午,把“Agent会在哪一层挂、每一层怎么兜”画一遍。
面试官不关心你用过多少工具。他关心的是,当工具不管用的时候,你还有没有第二套方案。
本文部分内容参考了霍格沃兹测试开发学社整理的相关技术资料,主要涉及软件测试、自动化测试、测试开发及 AI 测试等内容,侧重测试实践、工具应用与工程经验整理。