面试知识库

M10 · 单步断言与漂移检测#

简历 Bullet Point: 三类单步断言(Schema / Sequencing / Semantic)逐步校验工具调用正确性,Silent Drift 漂移检测识别目标遗忘/探索发散/偏好丢失/成本失控四类信号,两段式检测(确定性预检 + LLM 推断)分级纠正


开场钩子#

Agent 每一步单独看都合理,但连起来看偏了——用户说”旅行包预算 300”,Agent 搜完旅行包后突然去查”旅行充电宝”,再查”旅行枕头”。每一步的工具调用参数都合法(品类相关),但整体偏离了用户原始意图。

这种 Silent Drift 不会触发任何单步错误检测——工具返回值格式正确、参数合法、没有循环。需要一个跨步骤的漂移检测器


一、模块运作流程#

1.1 三类单步断言#

类型Hook 点检查什么示例
Schemapost_tool_call工具返回值结构item_search 返回必须有 candidates 列表
Sequencingpre_tool_call调用时序合法性没调 planner 就调 item_search
Semanticpost_tool_call语义合理性(轻量 LLM,默认关)候选商品与 query 相关度

1.2 Silent Drift 四类信号#

信号含义检测方式
目标遗忘Agent 偏离原始意图query 关键词在最近工具调用中消失
探索发散不断换方向不收敛连续 N 步品类/平台完全不同
偏好丢失忘记用户约束硬约束关键词未出现在工具参数
成本失控token 消耗异常快当前速率 vs 历史基线

1.3 两段式检测#

确定性预检(关键词匹配、计数统计)→ 预检不决才调 lite LLM(成本可控)。

1.4 分级纠正#

  • 轻微:注入提醒消息(“请回到原始需求”)
  • 严重:强纠正 + 预算检查
  • 连续严重:强制收尾(授权阶段机到 CONCLUDING)

二、踩坑与设计决策#

为什么 Semantic 断言默认关?#

每次调 LLM 做语义检查成本高(一次断言 ~100 token)。10 轮对话每轮 2-3 次工具调用 = 20-30 次额外 LLM 调用。确定性预检能覆盖 80% 的漂移场景,只在预检不决时才需要 LLM。

四类检测和 LoopDetector / Rubric 的关系#

LoopDetector 检测行为模式(同工具刷屏),漂移检测检测语义偏离(方向跑偏),Rubric 评测检测结果质量(最终输出好不好)。三者正交互补。


三、面试问答#

Q1: 漂移检测为什么不每一步都做?#

每 3 轮做一次。太频繁成本高且误判多(1-2 步的探索可能是正常的策略调整),太稀疏又检测不到。3 轮是平衡点。

Q2: 强制收尾会不会导致”还没搜完就结束”?#

会。但连续严重漂移意味着 Agent 已经跑偏——继续跑只会更偏。不如用已有候选做一个诚实的部分推荐,而不是一直跑下去烧完 token 拿到一个完全不相关的结果。


四、诚实边界#

维度做了没做
Schema 断言结构校验完整字段语义校验
Semantic 断言预留(默认关)大规模开启(成本)
漂移检测4 类信号 + 分级纠正基于 embedding 的轨迹相似度