← 返回案例
发布:整理:元定义科技(YuanASI)故障复盘SRE并行取证根因分析open-multi-agent

故障复盘:三路并行取证到根因报告

开源示例 · 官方 recipe

这是 open-multi-agent 官方 cookbook 示例,由元定义维护。五个 Agent 组成一张任务图:日志模式、发布关联、影响面三路取证从零时刻同时开跑,结果收敛给根因分析,再由写手合成一份结构固定的复盘文档并落盘。

场景

典型场景:线上出现 5xx 突增,值班同学要同时做三件互不依赖的事:把日志里的错误簇和第一次回归时间点扒出来、把最近几次发布按时间和改动路径对上、估算受影响的接口和请求量。这三件事人手不够时只能串行做,等做完再拼因果,复盘文档往往拖到第二天。

示例演示的是把这三路取证写成三个根任务,让它们从同一时刻并行开始,再把结果作为显式依赖交给下游的根因假设与文档合成。

方案

角色任务 DAG工具模型部署形态
log-pattern-extractorextract-log-patterns(根任务,无依赖)未声明claude-sonnet-4-6 / anthropicnpx tsx 单次运行的本地脚本
deploy-correlatorcorrelate-deploys(根任务,无依赖)未声明claude-sonnet-4-6 / anthropic同上
blast-radius-analystanalyze-blast-radius(根任务,无依赖)未声明claude-sonnet-4-6 / anthropic同上
root-cause-hypothesizerhypothesize-cause,依赖前两个根任务未声明claude-sonnet-4-6 / anthropic同上
postmortem-writerwrite-postmortem,依赖全部四个上游任务未声明claude-sonnet-4-6 / anthropic同上

表中模型为示例仓库的默认配置;实际选型在方案阶段按场景确定。

三个取证 Agent 的系统提示各自规定了一份 JSON 输出结构:错误簇与首次回归时间戳、按时间与改动路径排序的发布候选及排除项、受影响接口与错误率区间。下游两个 Agent 输出 Markdown,写手的文档章节固定为 Summary / Timeline / Impact / Contributing Factors / Action Items。

重试只配在下游:hypothesize-cause 和 write-postmortem 两个任务各设 maxRetries: 2、retryDelayMs: 500、retryBackoff: 2。五个 Agent 都未声明 tools 或 toolPreset,按 OMA 默认拒绝的授权规则解析为零个内置工具——日志和发布记录是作为文本直接嵌进任务描述的,来自仓库 examples/fixtures/ 下的两份示例数据:206 行的 incident-logs.txt 和含 5 条发布记录的 incident-deploys.json。

结果

可运行产物与验证方式:

默认需要 API key。脚本头部写明前置条件是 ANTHROPIC_API_KEY;运行命令 npx tsx packages/core/examples/cookbook/incident-postmortem-dag.ts。

有一个本地验证开关。设 EXAMPLE_PROVIDER=openrouter 会把五个 Agent 与编排层默认值一起切到 OpenAI 兼容适配器上的 openrouter/free,改读 OPENAI_API_KEY 与 OPENAI_BASE_URL;源码里提交的 Agent 配置仍是 anthropic / claude-sonnet-4-6,启动时会打印当前生效的 provider 与 model。

并行由脚本断言。跑完后 verifyParallelism() 取三个根任务 task_start 时间戳的极差,小于 500 毫秒才打印 Parallel execution (< 500ms): YES,否则打印 ASSERTION FAILED 并以退出码 1 结束。

产物会落盘。成功时把 postmortem-writer 的 Markdown 写入系统临时目录下的 incident-postmortem.md,并在控制台打印完整路径;失败时改为逐条列出状态为 failed 的任务。

成本是可见的。运行结束打印 input / output token 总量,并按脚本内写死的单价换算出一个估算值——这是示例自带的换算。

可核实

来源链接核实日期
packages/core/examples/cookbook/incident-postmortem-dag.ts(commit 36e99fe)https://github.com/open-multi-agent/open-multi-agent/blob/36e99fe/packages/core/examples/cookbook/incident-postmortem-dag.ts
packages/core/examples/fixtures/incident-logs.txt(commit 36e99fe)https://github.com/open-multi-agent/open-multi-agent/blob/36e99fe/packages/core/examples/fixtures/incident-logs.txt
packages/core/examples/fixtures/incident-deploys.json(commit 36e99fe)https://github.com/open-multi-agent/open-multi-agent/blob/36e99fe/packages/core/examples/fixtures/incident-deploys.json
packages/core/examples/README.md cookbook 条目(commit 36e99fe)https://github.com/open-multi-agent/open-multi-agent/blob/36e99fe/packages/core/examples/README.md
packages/core/src/orchestrator/task-execution.ts(依赖上下文注入,commit 36e99fe)https://github.com/open-multi-agent/open-multi-agent/blob/36e99fe/packages/core/src/orchestrator/task-execution.ts

与元定义的关系

本页素材是 open-multi-agent 官方仓库里的 cookbook 示例,由元定义维护;脚本读取的日志与发布记录是仓库自带的示例数据。

如果你要把这条链路接到自己的日志平台、发布系统和值班工具上——取证并行、结论可追溯到具体日志簇与提交、复盘文档按公司模板输出——元定义对应的服务是 多智能体系统集成

最后更新

想知道类似的流程在你这边怎么落地?