外观
故障定位:从状态到证据
先定位故障属于输入、检索、模型契约、业务质量、流程状态、外部副作用还是交付文件。不要看到“失败”就清数据库重新生成。
| 现象 | 先看什么 | 区分与处理 |
|---|---|---|
| init失败 | init日志、数据库health | DB权限/扩展与Embedding配置分开排查;真实模式缺Embedding密钥会导入失败 |
| 一直queued | worker日志、heartbeat、ready任务 | worker未启动、任务未到available_at或依赖不成功 |
| 一直human且没教材 | retrieved.problem | 等级/语言/地区/namespace不匹配;导入对应资料或规则后退回 |
| 模型返回看似JSON仍失败 | schema_repair | 语法错误/字段类型/未知字段是结构层;不能靠忽略校验解决 |
| 内容合法但练习错 | reviewed.issues | 业务规则与模型判断;修订应只动定位块 |
| 修订了仍有问题 | revision、block_id、上限 | 保留报告转人工;不增加无上限循环 |
| 工具请求失败 | role、tool_denied、参数 | Prompt写“可调用”不授予服务端权限;不要给reviewer素材权限来掩盖错误 |
| worker死后没恢复 | lease_until、task.status、checkpoint | 还没过租约;已达重试上限;真实外部任务进入unknown |
| 同一任务反复执行 | node_key、dedup_key、lease_token | 模型请求可能重发但版本不应多写;核对外部副作用窗口 |
| 视频不运行 | image/audio任务与dependencies | 依赖失败会阻塞视频;先恢复根任务,不强行把video标成功 |
| 视频无字幕 | ffprobe subtitle轨、播放器设置 | 当前是可选字幕轨,需要开启;不是烧录字幕 |
| 图片服务成功但本地失败 | response协议、b64_json、receipt | URL-only接口不兼容;外部可能已计费,先核对 |
| 修改课文后不能下载 | current_version、approved、tasks.version | 新版本审核和素材未完成,旧版本交付不能冒充最新版本 |
| 文件存在却交付失败 | sha256/ffprobe/完整任务集合 | 文件被改/截断;不能仅按文件名判断成功 |
一次有质量的排障回答
“我先确定当前版本和失败任务,再看错误类别及最后持久化边界。若模型结果未通过Schema,修的是契约;若媒体请求结果不明,先核对回执与外部请求,不直接重发。恢复后检查版本、hash和交付完整性,最后补回归用例。”
这段是方法说明。面试中需要配一个自己实际执行过的复现实验,或有证据的历史故障,而非虚构一次线上事故。