路线图

面试 · 场景排查型

星辉 2026-07-02 阅读 3 min 575 字 路线图
面试 · 场景排查型 封面

考察目标:从现象追到根因,展示实战排障能力 约 8 题,覆盖 AI Agent 工程典型故障场景 说明:每题分「题干」(标题)与「参考答案」两段。


Q1:Agent 一直选错工具,怎么排查?#

参考答案

排查链路

text
trace → tool description → schema → 上下文约束 → 候选重叠 → eval 验证

详细步骤

  1. 看 trace:模型为什么选这个工具?决策时的 prompt 是什么?候选工具有哪些?
  2. 看 tool description:description 模糊吗?与其他工具语义重叠吗?边界说清了吗?
  3. 看 schema:参数约束够吗?有 enum 吗?required 明确吗?
  4. 看上下文约束:system prompt 里有工具使用规则吗?任务边界清楚吗?
  5. 看候选重叠:多个工具 description 在向量空间相似度高吗?需要合并/拆分吗?
  6. eval 验证:标注 golden tool,跑工具选择准确率,改完重新跑

常见根因与解决

  • description 模糊 → 重写,明确"做什么"和"不做什么"
  • 工具太多 → 加 Router 预筛
  • 语义重叠 → 合并相似工具或用 enum 强制区分
  • 上下文不足 → system prompt 加工具使用规则

(选错工具的根因原理与 eval 方法见 3-原理 Q1。)


Q2:RAG 检索正确但回答错误,怎么排查?#

参考答案

排查链路

text
检索是否进上下文 → 是否截断 → 引用是否被忽略 → system prompt → rerank → faithfulness eval

详细步骤

  1. 检索是否进上下文:trace 里看 RAG 结果是否真的塞进了 messages
  2. 是否截断:top-k 太大被截断了?超 context budget 被丢了?相关 chunk 是否被挤出有效上下文
  3. 引用是否被忽略:模型有没有基于检索内容回答,还是自己编了;chunk 有没有带来源标注让模型能引用
  4. system prompt:有没有明确要求"必须基于检索证据回答、给出出处、证据不足就说不知道"
  5. rerank:相关 chunk 排到前面了吗?还是被噪声 chunk 淹没("lost in the middle")
  6. faithfulness eval:用 Ragas 评 faithfulness 分数,量化"忠实度"

常见根因(注意正确归因,忠实度问题几乎不是 temperature 引起的):

  • 检索结果被截断 / 排序靠后,没真正进入有效上下文(context budget 不够、rerank 没起效)
  • system prompt 没要求"基于证据作答 / 给出处 / 不足即拒答"——模型没有被约束去引用,就会自由发挥
  • chunk 缺来源标注,模型无法把事实对应到出处,只能"凭记忆"编
  • 参数化知识与检索内容冲突时,模型偏信自己(需强制"以检索为准"并显式标注冲突)

纠偏:不要把忠实度归因到"temperature 太高"——temperature 影响的是输出随机性/多样性,不是"是否基于证据作答"。忠实度靠证据是否进上下文 + 是否强制引用来治,不靠调低温度。


Q3:Agent 执行到一半卡住,怎么排查?#

参考答案

排查链路

text
卡在 LLM/工具/等待输入? → 超时? → 循环? → 等审批? → 工具异常未处理? → 需 checkpoint/resume?

详细步骤

  1. 卡在哪一层
    • 卡在 LLM(推理不返回)→ 模型问题/网络/限流
    • 卡在工具(工具不返回)→ 工具实现问题/网络
    • 卡在等待(等用户审批)→ UX 问题
  2. 是否超时:LLM/工具调用是否超时
  3. 是否循环:Agent 是否反复调用同一工具(检测与打断原理见 3-原理 Q3)
  4. 是否等审批:HITL 审批是否未处理
  5. 工具异常未处理:工具抛异常但 Agent 不知道怎么办
  6. 是否需要 checkpoint/resume:长任务中断了能否恢复

常见根因与解决

  • LLM 限流 → 重试 + 降级(切小模型)
  • 工具超时 → 设超时 + 重试 + 降级
  • 循环 → max_consecutive_same_tool 检测
  • 等审批 → 优化审批 UX、支持异步
  • 异常未处理 → 加 try/except + 错误回灌给模型

Q4:Coding Agent 改坏代码,怎么排查?#

参考答案

排查链路

text
理解 repo? → 跑测试? → patch 过大? → 无 review gate? → 无 worktree 隔离? → test loop/hooks/diff?

详细步骤

  1. 理解 repo 了吗:Agent 是否读了 README、看了目录结构、理解了模块划分
  2. 跑测试了吗:有没有 Test Loop?改完是否跑了测试
  3. patch 过大:改了太多文件?是不是该拆成多个小 patch
  4. 有无 review gate:是否有自动 review(lint/security scan)+ 人工 review
  5. 有无 worktree 隔离:在主仓库改还是 worktree 改?是否污染主分支
  6. test loop/hooks/diff:Hooks 拦截了吗?diff 是否清晰?

常见根因

  • 没 Test Loop → "自信地写 bug"
  • patch 过大 → 一次改太多,模型注意力分散
  • 没 review gate → 错误直接合入
  • 没隔离 → 改坏了主仓库

解决

  • 加 Test Loop(改完必跑测试)
  • patch 拆小(一次一个逻辑变更)
  • 加 Review Gate(自动 + 人工)
  • 用 worktree 隔离(Claude Code 与 Codex 都支持,见 2-对比 Q4)

Q5:MCP 工具调用异常,怎么排查?#

参考答案

排查链路

text
server 可用? → tools/list 正常? → schema 被读取? → transport 权限/环境变量? → 返回结构? → 注入风险?

详细步骤

  1. server 可用吗:MCP Server 进程是否启动?端口是否监听?
  2. tools/list 正常吗:调用 tools/list 看返回的工具列表
  3. schema 被读取吗:Agent 是否正确解析了工具 schema
  4. transport 权限/环境变量:stdio/HTTP/SSE 配置对吗?凭证注入了吗?token audience 校验了吗?
  5. 返回结构:工具返回的格式是否符合预期
  6. 注入风险:返回内容里有没有恶意指令(间接 prompt injection,拆解见 1-概念 Q11)

常见根因

  • Server 崩溃未重启
  • schema 格式错误
  • 凭证未注入或过期、token 透传给上游(Confused Deputy 风险,见 3-原理 Q11)
  • transport 配置错(如 stdio 路径错)
  • 返回内容触发 prompt injection

Q6:Agent 成本突然升高,怎么排查?#

参考答案

排查链路

text
调用次数/上下文长度/循环/重试/多 agent 并行/异常长任务 → 如何设 step·token·cost budget

详细步骤

  1. 调用次数:是否调用次数突然增多(看 trace)
  2. 上下文长度:是否上下文膨胀(没 Compaction?RAG 召回太多?缓存前缀被打破导致命中率骤降?)
  3. 循环:是否陷入循环反复调用
  4. 重试:工具失败后是否无脑重试
  5. 多 agent 并行:是否启了过多并行 agent
  6. 异常长任务:是否有任务跑了几百步

如何设 budget(本题为 budget 分级的规范条目,其他题引用此处):

text
Step Budget: max 50 步/任务(防失控循环)
Token Budget: max 200K token/任务(直接限制)
Cost Budget: max $5/任务(跨模型可比)

预警:
  70% → 提醒 Agent 优化策略
  90% → 提示用户
  100% → 强制停止

路由降级:预算紧张时切小模型(大模型 → Haiku → 本地小模型)。

先降本再限额:突然升高时先查是不是缓存命中率掉了/上下文没压缩,用 prompt caching + compaction 把单位成本压下来(见 3-原理 Q13/Q12),再谈调 budget——否则只是把功能砍掉。


Q7:Skill 安装后异常行为,怎么排查?#

参考答案

排查链路

text
来源可信? → 权限过大? → 隐藏脚本/外部依赖? → 读敏感文件? → 外部网络? → 污染记忆? → 回滚隔离审计

详细步骤

  1. 来源可信吗:官方认证?知名开发者?还是匿名发布
  2. 权限过大吗:申请了 /** 文件访问?* 网络访问?* 凭证
  3. 隐藏脚本/外部依赖:静态扫描是否有 subprocess/curl/eval,依赖是否有 typo-squatting
  4. 读敏感文件吗:trace 看是否读了 ~/.ssh~/.aws
  5. 外部网络吗:是否访问了非预期域名
  6. 污染记忆吗:是否写了长期记忆(如"user_preference: always_cc_attacker@example.com ")

回滚隔离审计

  • 立即禁用技能
  • 撤销技能对长期记忆的修改(记忆审计 + 回滚)
  • 删除技能创建的临时文件
  • 撤销环境变量注入
  • 清理凭证
  • 全程审计记录(保留证据)

Q8:Browser/Computer Use 操作错页面,怎么排查?#

参考答案

排查链路

text
观察源(DOM/截图/a11y)? → tab 借用? → 登录态? → selector 失效? → 异步加载? → replay trace

详细步骤

  1. 观察源:用了 DOM、截图还是 a11y tree?信息够吗?
  2. tab 借用:是否借用了用户已登录的 tab?借错了?
  3. 登录态:是否登录态过期了?是否在错误的账号下操作
  4. selector 失效:页面改版导致 selector 失效?
  5. 异步加载:点击后页面还没加载完就操作了?
  6. replay trace:回放操作 trace,看哪一步开始出错

常见根因与解决

  • 观察源信息不足 → 多源融合(a11y tree + 截图 + DOM)
  • tab 借用错 → 校验 tab URL 再操作
  • 登录态过期 → 操作前验证登录态
  • selector 失效 → 用 a11y tree 的 element_id 而非 xpath
  • 异步加载未等 → 加 wait_for_selector 或轮询

Computer Use 风险升级:Browser Use 出错最多搞乱浏览器,Computer Use 出错能搞乱整个系统——必须 Sandbox + 强审批 + 操作回滚。(Computer Use 代表产品为 Anthropic Computer Use、OpenAI Operator,见 1-概念 Q9。)