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, 事故响应, 工作流自动化, 自动化攻击, 运维工具