tarunspandit/mastra-incident-triage

GitHub: tarunspandit/mastra-incident-triage

一个基于 Mastra 框架的只读故障分诊工作流,将生产环境证据转化为结构化的、保守的故障响应方案。

Stars: 0 | Forks: 0

# Mastra 生产环境故障分诊 一个小型 Mastra 项目,旨在将嘈杂的生产环境证据转化为保守、结构化的故障响应方案。 本项目作为一个紧凑的产品工程练习而构建:包含一个实用的工作流、明确的安全边界,以及足以使行为可审查的测试。 ## 为什么开发此项目 故障响应是测试 agent 的绝佳场景,因为仅仅生成流畅的文本是不够的。一个生产环境安全的助手必须能够区分证据与推断,尽可能使用确定性逻辑,明确指出不确定性,并避免执行不可逆的操作。 本项目包含: - 一个强类型的 `extract-incident-signals` 工具,用于对日志进行标准化处理并计算严重性基准。 - 一个 Mastra agent,在建议采取遏制或回滚措施之前必须先使用该工具。 - 一个确定性工作流,无需模型或 API key 即可运行。 - 针对当前状况、证据、紧急行动、验证、沟通说明以及不确定性的结构化输出。 - 针对大规模宕机、预发环境故障以及生产环境服务降级的单元测试。 该 agent 在设计上被严格限制为只读模式。它可以建议进行回滚,但不能执行部署、写入数据库或联系客户。 ## 本地运行 要求 Node.js 22.13 或更高版本。 ``` npm install cp .env.example .env # 仅在你的本地 .env 中添加 provider key。 npm run dev ``` Mastra Studio 将在 `http://localhost:4111` 打开。 ## 验证 ``` npm run check npm test npm run build ``` 确定性测试不需要 LLM provider key。 ## 架构 ``` incident evidence | v typed Zod input -> deterministic signal tool -> Mastra workflow | v read-only triage agent | v structured report ``` ## 示例故障 ``` { "service": "checkout-api", "environment": "production", "summary": "Checkout requests fail after the latest deployment", "logs": [ "ERROR request 9af41f0e timed out after 5000ms", "ERROR request 8bc12a4d timed out after 4800ms" ], "errorRatePercent": 31, "p95LatencyMs": 5200, "affectedUsersPercent": 48, "recentDeployMinutesAgo": 12 } ``` ## 设计选择 - **确定性优先:** 严重性和重复错误模式在模型推理之前进行计算。 - **重证据轻主观:** 近期的部署被视为一种相关性信号,而非断言的根本原因。 - **最小权限:** 该 agent 无法对生产系统进行任何修改。 - **Provider 可移植性:** `MASTRA_MODEL` 可选择 Mastra 模型路由器支持的任何模型。 - **审查范围精简:** 本项目结构紧凑,刻意设计为适合在单次阅读中完全理解。 ## 安全边界 该 agent 可以分析证据并建议回滚,但它没有任何可用于部署代码、修改生产数据、呼叫响应人员或联系客户的工具。人类始终对每一个关键操作负责。
标签:GNU通用公共许可证, MITM代理, Node.js, 事故响应, 工作流自动化, 自动化攻击, 运维工具