AI 岗位预备 · 熟练
面试官今年新问的那三块,半年前还不存在
Harness · Skill 管理 · 上下文工程
Agent 岗的面试题在今年换了一套题面。前年问的是「什么是 Agent」「ReAct 怎么实现」;今年一开口就是 —— Harness 怎么设计、上百个 Skill 怎么管理、越权调用怎么监控。这三块是 2026 年新长出来的,题目还没沉淀成固定问法,所以背标准答案这条路在今年是走不通的。这一页把这道变化拆成一条可回答的骨架:先看清「新长出来的三块」分别要答什么(Harness = 运行时工程:权限 · 超时 · 断连 · 观测)· Skill = 注册与可信度(来源 · 准入 · 版本)· 上下文工程 = 记忆的分层与递送;再用同一套两层结构回答每一次追问:先说结论,再分「行业通用做法」和「我们项目里的增量」。面试官要的从来不是定义,是那句「你们项目里具体怎么做的」。
追问现场 · 面试真题
面试真题“你做过 Agent 系统,那你们线上是怎么防止 Agent 失控的?说个具体的设计。”
大多数人的第一反应:答「我们加了重试和日志」——这是把「失控」当成「调用失败」处理,面试官一听就知道没做过生产。
先分层:失控分四类(越权 / 死循环 / 断连 / 谎报成功),每一类的处置手段完全不同;真正有分量的答法是先说清你有几道闸、每道闸拦的是什么
先说结论
Agent 的「可控」不是一个开关,是四道闸 —— 分别管权限、管循环、管连接、管结论。答的时候按这四类讲,比讲任何单个技术点都更像做过事的人。
基础层 · 行业方案
① 权限闸。行业做法是给工具调用加显式授权:危险动作(写文件 / 发消息 / 支付 / 改配置)先过策略判断,默认拒绝、白名单放行;部分平台的托管策略还会把「会执行本地命令的条目」直接跳过。修法:默认拒绝 + 显式放行 + 托管条目不落本地。
② 循环闸。行业做法是给每次任务设最大调用轮次与单次超时,到阈值强制终止;再配一层结果校验 —— 判断当前结果是否满足任务目标,达标就停。修法:轮次上限 + 超时 + 结果校验三件一起上。
③ 连接闸。行业做法是外部依赖(MCP 服务 / 工具端点)断连要能被察觉:把「自动重连已放弃」这类状态显式报给使用者,而不是静默降级。修法:断连要显式提示 + 指向可自查的入口。
④ 结论闸。行业做法是让 agent 的产出可溯源:关键结论绑定检索来源,缺资料直接提示「缺」而不是补全。修法:输出绑来源 + 禁止无依据补全。
执行层 · 我们的增量
⑤ 我们的增量:把四道闸做成一张表,标出每道闸的「拦下后往哪走」。权限闸拦下 → 转人工审批;循环闸拦下 → 落异常日志并复盘规划逻辑;连接闸拦下 → 暂停任务并提示使用者;结论闸拦下 → 输出「缺什么」而不是猜。这张表的价值在于 —— 它让「拦下」不等于「失败」,而是每类问题各有去向。
⑥ 再加上一条运行期的观测:让请求头/日志能回答「这一次请求到底是什么」。带上请求类别、发起方类型、前一步工具耗时、上下文是否被压缩过这类标记,事后复盘才分得清是模型问题、工具问题还是上下文问题。
真实事故(事后回看):上线初期把四类问题都当成「调用失败」处理 —— 只加重试。结果权限类问题重试三次仍然失败、循环类问题重试反而更失控、连接类问题重试把超时叠满、结论类问题重试给出第二版同样编造的答案。链条是:一类问题 → 一种处置 → 四类问题共用一种处置 → 每一类都错过它真正需要的动作。
事后补的防御(避免重演)
现在先归类、再处置:拿到一次异常,第一件事是问「它属于权限 / 循环 / 连接 / 结论里的哪一类」,再选该类的动作。核心原则:先分类,再处置 —— 不分类型的重试,等于把四类问题都往坏的方向推。
面试官想听什么
能主动把「失控」拆成几类,而不是笼统说「加了兜底」
每一类都说到「拦下之后往哪走」,而不只是「拦得住」
提到观测与复盘(能回答「这一次请求到底是什么」),说明跑过生产
加分项:主动补一句「这四类里最容易被忽略的是结论闸 —— 因为前三种会报错,第四种不会报错、只会悄悄地给你一个看着很合理的错答案」。差异化就在这里:别人讲怎么拦,你讲哪一类拦不住。
可复制 · 救急段
面试官问「你们线上怎么防止 Agent 失控」,别答「加重试和日志」——四类失控(越权 / 死循环 / 断连 / 谎报成功)的处置完全不同:权限闸=默认拒绝+显式放行;循环闸=轮次上限+超时+结果校验;连接闸=断连显式提示;结论闸=输出绑来源+禁止无依据补全。加分项:指出「结论闸最难,因为前三类会报错,它不会报错,只会悄悄给一个看着合理的错答案」。