低置信度核实 Skill
整理时间:2026-09。浓缩
alert-verify/alert-verify-probe的判断规则。观点见 低置信度核实;进程与队列见 核实 Worker。
Skill 只产出结构化核实工件。触发、底层调度、回写 API 都在 skill 边界之外。
一、Skill 边界与增量能力
相对第一轮调查,核实 skill 多出三项增量:
- 读业务代码
- 采样原始日志
- 更宽松的时间窗与工具轮次
双 Agent 分工:
| 角色 | 负责 | 不负责 |
|---|---|---|
| 核实编排代理 | 审计 → 拆问 → 调度 → 是否升级 → 合成 | 自己扫数据源找题 |
| 定向取证代理 | 执行一条已定义断言,返回三态 | 整案根因、再规划、写最终产物 |
主代理决定查什么;取证代理只负责跑。
二、状态机
MATERIALIZE
↓
AUDIT
↓
QUESTIONIZE
↓
DISPATCH
↓
COLLECT
↓
UPGRADE? ── 否 ──→ SYNTHESIZE
│
是
↓
INDEPENDENT_RECHECK
↓
SYNTHESIZE
↓
ARTIFACT
每个阶段完成后再进入下一阶段。无人值守宿主把同一会话拆成两轮:前一轮覆盖取材到取证(含条件升级),后一轮只做合成与落盘。
三、审计压缩
阶段 0 若 case 与审计简报已齐,直接进入审计。第一动作是读压缩简报,而不是整读完整结论或 HTML 轨迹。
简报提供最小审计视图:告警锚点 → 原断言 → 证据 / 派发 → 置信度 / 降级 → 缺失 / 薄弱 / 孤儿断言 → 路由提示。目标不是重新调查,而是回答:原调查中哪些具体断言值得验证?
仅当简报明确标出薄弱、孤儿或工具缺口,且需要定位某次工具调用时,再定点回查原轨迹。路由优先用简报里的提示,不靠模型探索文件系统。
四、疑问分类与拆分
每条疑问必须满足:一个断言 + 一个对象 + 一个时间窗 + 一个可验证数据需求。阶段 1 产出 {疑问, 所需数据, 路由}。
| 类型 | 典型信号 | 策略 |
|---|---|---|
| 证据单薄 | 置信度约 0.4–0.6、单层信号、样本不足、窗过窄 | 沿原方向扩窗、补第二层独立证据 |
| 工具缺口 | 自认缺数据、handoff 未跟、无原始日志 / 代码、缺服务端视角 | 直接补缺失维度 |
| 方向可疑 | 引用的锚点不存在、支撑被标成背景、结论落不到任何子结论、事实与结论冲突 | 进入独立重查候选 |
| 兜底降级 | 部分完成、置信度硬降级、派发中断、计划维度没做完 | 从证据快照恢复中断点,只补缺失维度 |
一路一问。反例:「client 构成 + server QPS + 是否自愈」揉成一问。正例拆成:爆发是否发生、server QPS 是否同步下跌、异常后是否自愈。只有后一问的查询参数依赖前一问结果时,才合并或串行。
五、Probe 契约
主代理派发时写死疑问、所需数据、路由、站点、对象、时间窗和完整可执行命令。取证代理不负责发现问题。
取证只走最短闭环:一条断言 → 一条主要证据路径 → 一个结论。优先用聚合入口,不手写多段查询。结果已足够判断就立即结束,不为「更多数据」继续堆查询。
固定返回三字段:状态(确认 / 反驳 / 仍未知)、证据(来源 + 可复跑查询 + 关键摘要)、缺失数据(仅仍未知时填写)。收到结果后立刻写入处置底稿。底稿是跨 fork / resume 的事实边界,建议每得到一条就更新,而不是全部结束后才首次落盘。
失败处理:每问只派一次。达到轮次上限、部分结果或执行失败,先回收已有输出——能支撑则确认,能反驳则反驳,无法闭环则标未知。完全没有工具输出,也标未知并写明空产出。不要把原调查轨迹当作新的确认 / 反驳证据。
六、调度
| 条件 | 策略 |
|---|---|
| 独立疑问 1–2 个 | 主代理串行 |
| 独立疑问不少于 3 个 | 同一回合并发,单轮最多 6 路,超过则分批 |
| 后问参数依赖前问 | A → B 串行,不为形式上的并行破坏依赖 |
| 单个取证代理 | 只负责一个疑问,约 15 个工具回合,能收束就提前结束 |
派发说明若实际包含多个独立子问,取证代理只跑主路径,其余写入缺失数据后收束,不自行扩查。
七、升级独立重查
只允许两种触发:
- 审计阶段判定为方向可疑
- 处置结果反驳了原结论的关键支撑证据
证据不足、工具缺口、部分完成,优先补当前疑问,不自动升级。不要因为「可能还有更好根因」主动升级。
升级后:原调查只当线索,原结论只当待验证。从原始告警输入重建(告警原文、规范化输入、站点、对象、时间窗、级别、原始锚点),再选数据源独立调查。新问题仍一路一问,无依赖则同轮派完。独立重查完成后,再与原结论比较。
八、合成与分档
合成阶段不再调查、不再派取证、不再重新 fork。只读处置底稿,判断关系,写出结构化结论。
| 关系 | 条件 |
|---|---|
| 维持 | 原方向成立,关键证据未被推翻,新证据主要是补强;对象、机制、时间线、分类均无实质变化 |
| 修正 | 方向大体成立,但对象 / 机制 / 时间线 / 分类被补全或改变 |
| 推翻 | 原方向或根因被独立证据推翻;通常对应独立重查,或关键证据被反驳 |
分类相同不代表维持。 根因机制被补全或修正,就是修正。
Confidence 分档:
- 两层独立证据一致 → 约 0.7
- 单层证据 → 约 0.4–0.6
- 关键缺口就地封顶
- 只复述已有数字不能提升置信度
- 外部来源未完成时,不虚高到 0.8 及以上
特殊判定:
- 昨比 / 同比:今日绝对量处于基线,对照日异常,ratio 下跌 → 修正为误报,解释对照日,而不是声称今日业务真实下降。今日绝对量也明显低于基线,才继续考虑真实下降。
- 接入层:空查询不能直接证明服务下线、配置漂移或不可观测。服务名解析失败 → 标未知,不要直接修正。只有解析后的服务在错误、接入、变更三条路上都没有信号时,才进入观测缺口判断。
- 无故障表述:结论若表达「无实际故障 / 无需响应 / 误触发」,分类应落在误报、业务预期或未知,而不是应用 / 依赖 / 组件 / 基础设施。
结构化结论的关键字段:
| 字段 | 要求 |
|---|---|
| 与原结论关系 | 维持 / 修正 / 推翻 |
| 状态 | 完成 / 上下文不足 |
| 摘要 | 一句话 |
| 结论 | 不超过 200 字:根因 → 影响 → 建议,不写流水账 |
| 推理 | A → B → C,并写明维持,或修正了哪一环,或推翻哪一点 |
| 置信度 | 0–1,只由证据推动 |
| 证据 | 1–5 条可追溯事实 |
| 疑问处置 | 至少 1 条;仍未知必须写明缺什么 |
终态以通过校验的核实产物为准。人读报告由宿主渲染。
九、硬约束
对外收束为下面几条。它们保护的是架构正确性,不是提示词风格。
- 一路一问;取证代理一问只派一次,不因轮次不足重派同一疑问
- 派发时带齐参数,禁止空跑探索;不扫文件系统寻找 skill 或脚本
- 取证代理只返回三态与证据,不写最终产物,不决定整案关系
- 只有方向可疑或关键证据被反驳,才独立重查
- 取证轮不写最终产物;合成轮不再取证
- 不用原调查结果替代新证据
- 最终产物只在收束阶段生成,并作为唯一事实来源
除此之外,具体工具选择由当前阶段和数据地图决定。
十、数据路由原则
概况类问题优先走现成聚合入口,不手工拼多段查询。存在组合入口且返回「足够判断」时,收束该疑问,不再堆叠其它概览查询。
站点差异用通路类型表达,不在此罗列内部脚本名:
| 问题类型 | 首选通路 |
|---|---|
| RPC 客户端爆发 / 超时 | 聚合核对:客户端突发与是否自愈 |
| 下游健康 / 重启 | 聚合核对:下游存活与重启 |
| 单节点 vs 组件 | 聚合核对:主机集中还是组件整体 |
| 接入层 upstream | 聚合核对:接入到后端解析 |
| 业务量昨比同比 | 聚合核对:绝对量基线与对照日 |
| 错误形态 / 原始日志 | 日志检索或错误概览 |
| 发布与变更 | 变更事件,时间范围覆盖告警前数小时 |
| 依赖与影响面 | 依赖图 |
| 代码实现 | 仓库定位后阅读 |
字段不存在时:推荐名 → 数据地图中的一个备选 → 标未知。最多一次备选抽查,不继续试错。
相关阅读:低置信度核实(博客) · 核实 Worker