wiqilee/reflex
GitHub: wiqilee/reflex
基于 Mistral Large 3 的 AI 驱动事件响应手册生成器,从代码自动生成结构化 runbook 并模拟故障爆炸半径。
Stars: 0 | Forks: 0
# REFLEX ⚡
**输入:** 一个 50 行的 Python 支付服务,包含 SQL 注入、缺少超时和无连接池。
**输出(约 15 秒):**
```
┌─────────────────────────────────────────────────┐
│ 8 failure scenarios detected │
│ 3 critical · 2 high · 2 medium · 1 low │
│ │
│ FS-001 SQL Injection in process_payment │
│ Severity: CRITICAL │
│ Why: f-string SQL on line 37 with raw user_id │
│ │
│ Runbook Detection Step: │
│ $ grep -rn "f\".*SELECT\|f\".*INSERT" *.py │
│ Expected: Lines with string interpolation in SQL│
│ │
│ Fix Step: │
│ $ Replace f-strings with parameterized queries │
│ cursor.execute("INSERT INTO payments (user_id, │
│ amount) VALUES (?, ?)", (user_id, amount)) │
│ │
│ Blast Radius: 4 nodes, 100% system, 70k users │
└─────────────────────────────────────────────────┘
```
**修复并重新分析后:** Diff 视图显示 ↓38% 的风险降低,3 个严重问题 → 0。
## 问题所在
现在是凌晨 3 点。PagerDuty 警报响了。生产环境瘫痪。
值班工程师打开 runbook。它是六个月前为一个已经重构过两次的系统编写的。一半的命令都已失效。编写它的人在十月份已经离职了。
**每个工程团队都有这个问题。** Runbooks 至关重要,但普遍被忽视,因为编写好的 runbooks 需要数周时间,而且它们几天内就会过时。
## 解决方案
 *"REFLEX 正在分析一个 Rust 缓存服务:故障场景、严重性细分和交互式依赖图。"*
REFLEX 读取你的实际代码并自动生成可用于生产的 incident runbooks。
粘贴你的基础设施代码。REFLEX 识别你的系统可能产生的许多常见高影响故障模式,并生成结构化的、分步的 runbooks,包含要运行的确切命令、每个阶段的预期输出、回滚程序和预防措施。
**工作原理:** Mistral Large 3 (`mistral-large-latest`) 通过结构化 function calling 为故障分析提供动力——而非自由文本生成。每次分析都经过 3 次带有验证输出的类型化工具调用,外加针对严重/高严重性 runbooks 的第二轮验证。编译为 WebAssembly 的 Rust 直接在浏览器中处理依赖图模拟。
## 为什么不直接问 ChatGPT?
一个合理的问题。以下是 REFLEX 作为一个专用工具而非一个提示词存在的原因:
| 标准 | ChatGPT | REFLEX |
|---|---|---|
| **输入** | 一次一个问题,对话式 | 一次性分析整个代码库 |
| **输出** | 自由文本(你自己解析) | 带有类型化 Schema 的结构化 5 阶段 runbooks |
| **验证** | 单次通过,无自我审查 | 多轮:严重 runbooks 获得第二次 AI 审查 |
| **爆炸半径** | 无法模拟级联故障 | Rust WASM 模拟,亚毫秒级,客户端 |
| **依赖关系** | 无图可视化 | 带有故障模式的交互式依赖图 |
| **跟踪** | 无历史记录,每次重新开始 | Gallery 模式、分析 diff、风险评分比较 |
| **值班层级** | 不理解 L1/L2/L3 | 每步内置访问级别注释 |
| **翻译** | 每种语言手动重新提示 | 一键 18 种语言翻译 |
| **一致性** | 输出格式每次都变化 | 通过 Mistral function calling 强制执行结构 |
| **上下文** | 你必须每次解释你的技术栈 | Agent 分诊记住 runtime、DB、observability |
ChatGPT 是一个通用助手。REFLEX 是一个专用 pipeline,它理解检测步骤和回滚程序之间的区别,知道严重 runbooks 需要验证,并且可以模拟你的支付服务在凌晨 3 点瘫痪时会发生什么。
## 为什么这很重要
Incident response 依赖于行业中一些最糟糕的文档。根据 Gartner 的数据,IT 停机的平均成本为每分钟 5,600 美元。PagerDuty 的 2024 年报告发现,69% 的组织需要超过一个小时来解决 incident,通常是因为响应者缺乏清晰、可操作的指导。
REFLEX 的存在是因为 runbooks 应该从事实来源——代码本身——生成。
## 谁能受益
| 角色 | REFLEX 如何帮助 | 节省时间 |
|---|---|---|
| 🔧 **SRE / 平台工程师** | 从实际代码自动生成和维护 runbooks。每次代码更改都会即时生成更新的文档——不再有过时的 runbooks。 | 数周 → 数分钟 |
| 🌙 **值班工程师** | 凌晨 3 点的分步指导,包含确切命令、预期输出和清晰的升级路径。不再猜测或在 Slack 中滚动查找。 | 每个 incident 数小时 → 数分钟 |
| 📊 **工程经理** | 减少 MTTR,最小化爆炸半径,并确保整个团队(无论经验水平)的 incident response 一致。 | 可衡量的风险降低 |
| 🚀 **初创公司 & 快速扩张企业** | 无需专门的 SRE 团队即可获得企业级的 incident 文档。一名开发者获得与大型组织花费数月构建的相同质量。 | $0 vs $50k+ 咨询费 |
| 🎓 **学生 & 学习者** | 了解生产系统如何失败。分析 6 种语言的演示代码,并从生成的 runbooks 中学习基础设施模式。 | 加速学习 |
| 🌍 **全球团队** | 18 种语言的 runbook 翻译意味着每位值班工程师都能阅读其母语。技术术语保持原样。 | 零翻译开销 |
## 负责任地使用
REFLEX 旨在支持——而非替代——incident response 中的人工判断。
- **Runbooks 是起点。** 在生产环境中运行生成的命令之前,请务必审查它们。REFLEX 提供结构化指导,但每个环境都是独特的。
- **不存储敏感数据。** 你粘贴的代码被发送到 Mistral 的 API 进行分析,REFLEX 不会存储它。有关 API 级别的详细信息,请查看 Mistral 的数据政策。
- **不是安全扫描器。** REFLEX 识别故障模式和运营风险,而非 CVE 或漏洞数据库。请使用专门的安全工具进行渗透测试。
- **人在回路。** 关键决策——回滚、数据迁移、权限升级——应始终由合格工程师审查建议的步骤。
## 功能(21 项)
### 核心分析
1. **故障场景检测。** Mistral 分析你的代码并识别常见的高影响故障模式:网络分区、连接耗尽、竞态条件、资源泄漏、认证失败、级联超时等。每个场景都按严重性、可能性和受影响的代码位置进行分类。
2. **严重性推理。** 每个严重性分配都附带详细解释:“严重是因为:第 37 行的 f-string SQL,无输入验证,影响具有 3 个下游服务的支付数据库。”在仪表板卡片、runbook 标题和代码视图工具提示中可见。
3. **结构化 Runbook 生成。** 每个 runbook 遵循严格的 5 阶段结构:Detection → Diagnosis → Fix → Rollback → Prevention。可复制粘贴的终端命令,每一步都有预期输出。
4. **多轮 Runbook 验证。** 严重和高严重性 runbooks 经过第二次 Mistral 审查。一位“SRE 审查者”检查命令准确性,添加缺失步骤,更正访问级别,并标记危险操作。
5. **值班分级。** L1/L2/L3 访问级别,带有悬停工具提示解释每个级别的含义。凌晨 3 点的 L1 工程师不应猜测是否要唤醒更资深的人。
6. **6 种语言演示模式。** 内置 Python、Go、Rust、Java、TypeScript 和 YAML/Docker 代码示例。每一个都是具有故意故障点的真实 microservice。
### 代码智能
7. **代码行高亮。** 分析后,查看源代码,每个受影响的行都有严重性颜色的装订线标记。悬停查看带有场景详细信息的工具提示。点击直接跳转到相关 runbook。
8. **依赖图可视化。** 所有服务依赖关系和故障模式的交互式图表。悬停节点查看详情。点击节点在侧面板中查看相关 runbooks。
9. **图 → Runbook 链接。** 点击依赖图中的任何节点,查看与该服务相关的 runbooks。跨 affected_code、标题和描述的智能匹配。
10. **故障路径模拟。** Rust WASM 引擎通过依赖图模拟级联故障。选择一个节点,观察级联传播。还为上传的代码计算圈复杂度、嵌套深度、耦合度量和函数计数——在代码视图中显示为指标面板,完全在客户端以亚毫秒速度运行。
11. **爆炸半径计算器。** 量化影响:受影响的节点、级联深度、受影响的用户、系统百分比。优先确定首先审查哪些 runbooks。
### 开发者体验
12. **分析 Diff / 比较。** 并排比较两次分析:已修复的问题(删除线绿色)、新问题(红色)、持续存在但严重性变化的问题。带有加权公式的风险评分。
13. **多文件分析。** 上传多个文件。REFLEX 关联跨服务边界的故障场景。
14. **Markdown 导出。** 一键导出单个 runbooks 或完整报告为干净的 Markdown。
15. **18 种语言翻译。** 使用 Mistral 的多语言功能翻译 runbooks。技术术语和命令语法保持不变。
16. **Runbook 重新生成。** 更改了代码?重新生成特定的 runbooks,而无需重新运行完整分析。
17. **分析 Gallery & 历史记录。** 每次分析都带有时间戳自动保存。比较、重新加载或删除过去的分析。
18. **交互式 API 文档。** `/docs` 提供完整的 Swagger UI,包含 Schema 和试用功能。
19. **健康监控。** 用于部署验证的内置健康检查 endpoint。
20. **像素艺术仪表板。** 自定义动画像素艺术场景,8 帧,独特的视觉标识。
### Agent 技能
21. **Agent 分诊向导。** 分析前,可选的分诊面板询问运行时环境(Kubernetes/serverless/VM)、数据库、observability 技术栈、消息队列和 SLO 目标。此结构化上下文(JSON)输入到 function-calling pipeline,以便生成的 runbooks 包含特定环境的命令例如 Kubernetes 的 `kubectl describe pod`,Lambda 的 `aws logs tail`,容器的 `docker logs --tail 100`,而非通用占位符。
## 架构
```
Browser (Client) Server (FastAPI) Mistral AI
+-----------------+ +-------------------+ +------------------+
| | POST /analyze | | Function | |
| React Frontend |----------------->| Analysis Engine |----------->| mistral-large- |
| + Tailwind CSS | | | Calling | latest |
| |<-----------------| Code Parser |<-----------| (Mistral Large 3)|
| Dependency | JSON Response | Export Engine | | |
| Graph (D3) | | Multilingual Svc | | 3 Typed Tools: |
| | +-------------------+ | - report_failure |
| Rust WASM | | - generate_runbk |
| Engine | | - report_deps |
| - Failure Sim | +------------------+
| - Blast Radius |
+-----------------+
```
| 层 | 技术 | 角色 |
|---|---|---|
| **AI 引擎** | `mistral-large-latest` (Mistral Large 3) | 通过带有 3 个类型化工具 + 验证通过的 function calling 进行结构化故障分析 |
| **后端** | Python, FastAPI | 异步 API 编排、代码解析、导出、翻译 |
| **模拟** | Rust → WebAssembly | 亚毫秒级故障路径模拟、圈复杂度评分、嵌套分析——完全在客户端 |
| **前端** | React, TypeScript, Tailwind CSS, Zustand | 交互式仪表板、代码查看器、依赖图、爆炸半径 |
### 为什么选择 Mistral Function Calling?
大多数 AI 工具生成自由文本并希望输出结构足以解析。REFLEX 使用 Mistral 的 function calling 在模型层面强制执行结构:
1. **`report_failure_scenarios`**:带有推理的严重性、类别、可能性、受影响的代码引用
2. **`generate_runbook`**:带有类型化步骤对象(命令、预期输出、访问级别)的 5 阶段 runbook
3. **`report_dependencies`**:用于图可视化的类型化节点/边结构
输出保证机器可解析。没有脆弱的正则解析。
### 为什么选择 Rust WebAssembly?
- **交互式模拟或复杂度分析无需服务器往返**
- **级联故障图和代码度量的亚毫秒级性能**
- **客户端计算圈复杂度评分**:决策点、嵌套深度、耦合度量、热点检测
- **确定性执行**,无垃圾回收暂停
- **可移植**,支持所有现代浏览器
## 快速开始
### 前置条件
- Python 3.10+, Node.js 18+
- Mistral API key ([在此获取](https://console.mistral.ai/))
### 安装 & 运行
```
git clone https://github.com/wiqilee/reflex.git
cd reflex
pip install -r requirements.txt
cp .env.example .env # Add your MISTRAL_API_KEY
# 终端 1: Backend
uvicorn backend.main:app --reload --port 8000
# 终端 2: Frontend
cd frontend && npm install && npm run dev
```
### 快速测试
```
curl http://localhost:8000/api/v1/demo | python -m json.tool
```
### 运行测试
```
pip install pytest pytest-asyncio
pytest tests/ -v
```
## API 参考
| 方法 | Endpoint | 描述 |
|---|---|---|
| `GET` | `/` | 服务信息 |
| `GET` | `/health` | 健康检查 |
| `POST` | `/api/v1/analyze` | 分析单个文件 |
| `POST` | `/api/v1/analyze/multi` | 多文件分析 |
| `GET` | `/api/v1/demo` | 演示分析 |
| `POST` | `/api/v1/runbook/{id}` | 重新生成 runbook |
| `POST` | `/api/v1/export/markdown` | 导出为 Markdown |
| `POST` | `/api/v1/export/runbook/{idx}` | 导出单个 runbook |
| `GET` | `/api/v1/languages` | 列出 18 种翻译语言 |
| `POST` | `/api/v1/translate?lang=id` | 翻译报告 |
## 项目结构
```
reflex/
├── .github/
│ └── workflows/
│ └── ci.yml # Lint, test, and typecheck pipeline
├── backend/
│ ├── main.py # FastAPI app and routing
│ ├── models.py # Pydantic models (with severity_reasoning)
│ └── services/
│ ├── mistral_client.py # 3 function calling tools + validate_runbook
│ ├── analyzer.py # Pipeline: detect, generate, validate, graph
│ ├── exporter.py # Markdown export
│ └── multilingual.py # 18-language translation
├── engine/
│ ├── src/
│ │ └── lib.rs # Rust WASM: failure sim, blast radius, cyclomatic complexity
│ └── Cargo.toml
├── frontend/src/
│ ├── App.tsx # Router with 9 views + nav state
│ ├── components/
│ │ ├── Dashboard.tsx # Stats, severity breakdown, 6-lang demo
│ │ ├── CodeEditor.tsx # Code input + Agent Triage Wizard
│ │ ├── CodeAnalysisView.tsx # Line-by-line severity highlighting + complexity metrics
│ │ ├── RunbookViewer.tsx # 5-phase viewer with L1/L2/L3 tooltips + translation
│ │ ├── DependencyGraph.tsx # Interactive graph + related runbooks panel
│ │ ├── BlastRadiusView.tsx # Cascade sim + impact stats + animated SVG
│ │ ├── AnalysisDiff.tsx # Before/after comparison with pixel art
│ │ ├── Gallery.tsx # Saved analyses with gallery mode
│ │ ├── About.tsx # Built by + pixel art + feature showcase + ChatGPT comparison
│ │ └── LightningBg.tsx # Animated code rain background effect
│ ├── hooks/
│ │ ├── useStore.ts # Zustand (analyzedCode, gallery, diff, view nav)
│ │ └── useAnalysis.ts # API client + demo loader + triage context
│ ├── data/
│ │ ├── demo.ts # Offline fallback
│ │ └── demoSnippets.ts # 6-language demo samples
│ └── index.css # globals.css — Tailwind config + custom animations
├── tests/
│ └── test_reflex.py # Model, pipeline, and edge case tests
├── docs/
│ ├── screenshot.png # App screenshot for README
│ ├── pixel-scene.svg # Animated pixel art hero banner
│ ├── pixel-problem.svg # The Problem section art
│ ├── pixel-solution.svg # The Solution section art
│ ├── pixel-beforeafter.svg # Before/After proof section art
│ ├── pixel-chatgpt.svg # ChatGPT comparison section art
│ ├── pixel-matters.svg # Why This Matters section art
│ ├── pixel-who.svg # Who Benefits section art
│ ├── pixel-responsible.svg # Responsible Use section art
│ ├── pixel-features.svg # Features section art
│ ├── pixel-architecture.svg # Architecture section art
│ ├── pixel-quickstart.svg # Quick Start section art
│ ├── pixel-api.svg # API Reference section art
│ ├── pixel-structure.svg # Project Structure section art
│ ├── pixel-languages.svg # Supported Languages section art
│ ├── pixel-limitations.svg # Limitations section art
│ ├── pixel-future.svg # Future Work section art
│ ├── pixel-builtby.svg # Built By section art
│ └── pixel-contributing.svg # Contributing section art
└── README.md
```
## 支持的语言
**代码分析:** Python, Go, Rust, Java, TypeScript, YAML/Docker(每种都有内置演示示例)。
**Runbook 翻译:** 🇬🇧 英语, 🇫🇷 法语, 🇩🇪 德语, 🇪🇸 西班牙语, 🇧🇷 葡萄牙语, 🇮🇹 意大利语, 🇳🇱 荷兰语, 🇷🇺 俄语, 🇨🇳 中文(简体), 🇹🇼 中文(繁体), 🇯🇵 日语, 🇰🇷 韩语, 🇸🇦 阿拉伯语, 🇮🇳 印地语, 🇹🇷 土耳其语, 🇵🇱 波兰语, 🇮🇩 印尼语, 🇻🇳 越南语。
## 局限性
- **模型依赖。** 分析质量完全取决于 Mistral Large 3 对提交代码的理解。具有间接依赖关系的复杂多文件架构可能会产生不完整的场景覆盖。
- **单次通过代码解析。** 当前 pipeline 将代码作为原始文本发送。没有 AST 级别的解析,这意味着某些特定语言的模式(例如 Rust lifetimes,Go goroutine 泄漏)可能会被少报。
- **无持久存储。** Gallery 保存到 `localStorage`。清除浏览器数据将删除所有保存的分析。
- **速率限制。** 适用 Mistral API 速率限制。共享部署上来自多个用户的并发分析将排队。
- **翻译保真度。** Runbook 翻译保留命令语法,但偶尔可能会本地化应保留为英语的技术术语。
## 未来工作
- **CI/CD 集成。** GitHub Action,在合并到 main 时自动重新生成 runbooks,并与以前版本的 diff 作为 PR 评论提交。
- **AST 感知分析。** 集成 `tree-sitter` 进行特定语言解析。在发送给 Mistral 之前提取调用图、类型注解和依赖注入模式。
- **Terraform / Kubernetes。** 将故障检测扩展到 infrastructure-as-code:配置错误的健康检查、缺少资源限制、过于宽松的 RBAC。
- **PagerDuty / Opsgenie 导出。** 一键将生成的 runbooks 直接推送到 incident 管理平台。
- **VS Code 扩展。** 编辑器装订线中的内联故障注释,由相同的 Mistral 分析 pipeline 提供支持。
## 贡献
欢迎贡献。请先开 issue 讨论你建议的更改。对于主要功能,在 issue 线程中简短的设计说明有助于在实施前对齐方法。
## 许可证
MIT License。详见 [LICENSE](LICENSE)。
## 免责声明
REFLEX 是一个 AI 辅助工具,旨在支持而非替代人工判断。所有生成的 runbooks、故障分析和严重性评估可能包含 AI 系统固有的不准确之处。在生产环境中运行生成的命令之前,请务必审查,并就高风险 incident 咨询资深工程师。
### 🧑💻 由 [Wiqi Lee](https://x.com/wiqi_lee) 构建 | 平台 | 账号 | |---|---| | 🐦 X (Twitter) | [@wiqi_lee](https://x.com/wiqi_lee) | | 💻 GitHub | [wiqilee](https://github.com/wiqilee) | | 💬 Discord | [wiqi_lee](https://discord.com/users/209385020912173066) | ⭐ **如果你觉得有用,请给这个仓库一个 Star!** [](https://mistral.ai) [](https://mistral.ai) 🏆 **为 Mistral AI Worldwide Hackathon 2026 构建**
[](https://github.com/wiqilee/reflex)
[](https://mistral.ai)
[](https://mistral.ai)
[](https://fastapi.tiangolo.com)
[](https://rust-lang.org)
[](https://react.dev)
[](https://github.com/wiqilee/reflex/actions)
[](https://github.com/wiqilee/reflex/actions)
**你的代码已经知道它将如何失败。REFLEX 让它告诉你。**
### 🎬 视频演示 [](https://www.youtube.com/watch?v=icBRBr-_XTM) [](.) [](.) [](.) [](.) [](.) [](.) [](.)
## 致评委 - 快速演示(2 分钟)
1. **打开应用** - 带有像素艺术动画的仪表板
2. **点击 "Analyze Code"** - 粘贴代码或选择 **6 种语言演示** 之一(Python, Go, Rust, Java, TypeScript, YAML)
3. **🤖 Agent 分诊** - 可选向导询问 runtime, database, observability, SLO - 结构化上下文(JSON)输入到 function-calling pipeline,以生成特定环境的命令(针对 K8s 的 `kubectl describe pod`,针对 Lambda 的 `aws logs tail`,针对容器的 `docker logs`)
4. **等待约 15 秒** - Mistral Large 3 通过 function calling 进行分析(而非自由文本)
5. **仪表板** - 严重性细分、带有严重性推理的故障场景
6. **🔍 代码视图** - 带有逐行严重性高亮的源代码 - 点击任何红色行跳转到其 runbook
7. **📋 Runbooks** - 5 阶段结构,带有可复制粘贴的命令,L1/L2/L3 工具提示
8. **🕸️ 依赖关系** - 点击任何节点在侧面板中查看相关 runbooks
9. **💥 爆炸半径** - 级联故障模拟(Rust WASM,亚毫秒级,客户端)
10. **📊 Diff** - 比较两次分析:查看已修复的问题、新问题、风险评分变化
11. **导出/翻译** - Markdown 导出,18 种语言翻译
**关键差异点:** 带有 3 个类型化工具的 Mistral function calling · 多轮 runbook 验证 · Rust WASM 模拟 · 代码到 runbook 行映射 · 分析 diff 跟踪 · Agent 分诊上下文 · 共计 21 项功能。
## 前后对比 - 30 秒证明
### 🎬 视频演示 [](https://www.youtube.com/watch?v=icBRBr-_XTM) [](.) [](.) [](.) [](.) [](.) [](.) [](.)
 *"REFLEX 正在分析一个 Rust 缓存服务:故障场景、严重性细分和交互式依赖图。"*
### 🧑💻 由 [Wiqi Lee](https://x.com/wiqi_lee) 构建 | 平台 | 账号 | |---|---| | 🐦 X (Twitter) | [@wiqi_lee](https://x.com/wiqi_lee) | | 💻 GitHub | [wiqilee](https://github.com/wiqilee) | | 💬 Discord | [wiqi_lee](https://discord.com/users/209385020912173066) | ⭐ **如果你觉得有用,请给这个仓库一个 Star!** [](https://mistral.ai) [](https://mistral.ai) 🏆 **为 Mistral AI Worldwide Hackathon 2026 构建**
标签:AI工具, AV绕过, DevOps工具, DLL 劫持, FastAPI, Mistral AI Hackathon, Mistral Large 3, Python, React, Runbook生成, Rust, SRE, Syscalls, TypeScript, WASM, WebAssembly, 人工智能, 代码库分析, 依赖映射, 偏差过滤, 可视化界面, 大语言模型, 安全插件, 影响半径分析, 故障排除, 故障检测, 文档自动化, 无后门, 混沌工程, 生产就绪, 用户模式Hook绕过, 站点可靠性工程, 系统稳定性, 网络流量审计, 自动化攻击, 自动化攻击, 自动化运维, 逆向工具