面试知识库

BP15 · 评测分数回注与 RT 告警#

定位:面试官追问可观测性与告警设计时的拷问预备。


核心口述(30 秒)#

“补齐两处缺口:Rubric 分数回注 Langfuse trace(三条 score + 失败维度 comment),支持按低分筛 bad case trace。工具 RT 告警用 P95 滑动时间窗 + 三态状态机(breached/cleared/滞回)防抖 + hard_ms 兜底低 QPS。refdocs 示例代码四处真错全部更正。“


拷问链#

Q: trace_id 为什么不用 ContextVar 传?#

run_agent 跑在 create_task 里——子 task 的 ContextVar.set 不回传父上下文。trace_id 永远是 None。改成返回值显式带。

Q: 三态状态机为什么比两态好?#

两态边界抖动频繁翻转(800→799→801)。三态加滞回带——breached 后须降到 threshold × 0.8 才 cleared,消除毛刺。

Q: 熔断 OPEN 时快速失败 ~0ms 为什么不计入 RT 窗口?#

计入会在故障最重时报”已恢复”——快速失败的 0ms 拉低 P95。只有 status=ok 的正常响应进窗口。

Q: hard_ms 有什么用?#

低 QPS 工具(如 web_search 一天可能只调几次),P95 分位数无统计意义。hard_ms 是绝对阈值兜底。

Q: refdocs 四处真错具体是什么?#

① window_minutes 死字段 ② min_samples=10+P99=max值告警 ③ check_alerts 无调用者(死代码)④ 无 webhook 直接 return(告警消失)

Q: 为什么不用 Langfuse Dataset/Experiment?#

“score 挂 trace” 更轻——不需创建 Dataset/Run。按 rubric_total 降序排就能找所有 bad case trace。


压力题#

Q: 告警在进程内存,多 worker 怎么办?#

各算各的 P95,同一次抖动推 N 条。升级路径:挪 Redis 或退回 Prometheus+Alertmanager(/metrics 已就绪)。当前单进程够用。