error-monitoring-agent
基于语义理解的多级错误聚类 + Airweave 上下文增强,将 20 条原始告警压缩为 4 个可操
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
基于语义理解的多级错误聚类 + Airweave 上下文增强,将 20 条原始告警压缩为 4 个可操
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下这个场景:凌晨三点,你的生产环境突然涌入了 20 条错误告警——HTTP 429、数据库连接超时、认证失败……告警列表刷满了整个屏幕,但你真正需要回答的问题其实只有三个:哪些错误是同一根源?相关代码在哪里?是否已经有人在处理了?
传统错误监控工具(Sentry、Datadog 等)只负责告诉你"出错了",但无法回答上述问题。airweave-ai/error-monitoring-agent 正是为解决这个痛点而生的:它不只是一个错误收集器,更是一个能够理解错误语义、关联上下文、智能去重的 AI Agent。
核心理念:错误监控工具给你告警,你真正需要的是上下文。

图1:Airweave 错误监控 Agent 架构全览
这个项目并非概念验证(POC),而是 Airweave 团队实际在生产环境中运行的 Agent **"Donke"**的代码开源版。Donke 每月处理约 40,000 次 Airweave 查询,服务于 Airweave 自家的错误监控需求。
Airweave 本身是一个上下文搜索平台,支持连接 GitHub(代码)、Linear(工单)、Notion/Confluence(文档)等数据源,提供语义级检索能力。Error Monitoring Agent 正是将这一能力垂直应用于错误分析场景的典型案例——当错误发生时,Agent 自动从代码库和工单系统中拉取相关上下文,帮助工程师快速定位根因。
该仓库于 2024 年中开源,迅速获得了 366 Stars 和 51 Forks,在 error-monitoring、agent、ai、llm、observability 等 20 个 GitHub Topics 下均有收录。
项目实现了一套完整的 错误处理管道(Pipeline),分为五个阶段:
这是整个管道最关键的一步。Agent 采用三层聚类策略,将相似的错误合并分组,显著减少告警噪音:
输入:20 条原始错误
↓
Stage 1:严格匹配(exact module + function + line)
→ 快速正则匹配,无需 LLM 调用
↓
Stage 2:正则规则聚类(按 error_type + module + function)
→ 捕获"同类型错误,不同表述"的情况
↓
Stage 3:LLM 语义聚类(处理剩余模糊情况)
→ 使用 Claude/GPT-4 进行语义相似度判断
↓
输出:4 个可操作的错误集群(而非 20 条散乱告警)
实际效果:20 条原始错误 → 4 个告警,告警量减少 80%。
聚类后的集群包含 ClusterGroup(分组结果 + 推理说明)和 ClusterSummary(LLM 生成的自然语言摘要,包含 50-150 字符的签名描述)。
通过 Airweave 平台为每个错误集群注入真实上下文:
最后使用 LLM 综合以上信息生成综合摘要,让工程师无需手动搜索即可了解错误背景。
Agent 使用 LLM 对每个错误集群进行深度分析,输出:
| 字段 | 说明 |
|---|---|
| Severity | S1(严重)/ S2(高)/ S3(中)/ S4(低) |
| Title | 可操作的简短标题(如"Google Drive 速率限制超出") |
| Root Cause | 可能的根因说明 |
| Status | NEW(首次出现)/ REGRESSION(复现)/ ONGOING(持续) |
| Suppression Logic | 判断是否应触发告警(避免重复告警) |
状态判定的关键在于回归检测:如果错误在某个 Linear 工单关闭后再次出现,Agent 自动标记为 REGRESSION 并提高优先级。
超越简单的字符串匹配,使用 LLM 判断当前错误是否:
这一层级的语义理解能力,使得 Agent 在复杂生产环境中依然能准确去重,而非机械地按关键词匹配。
根据分析结果自动执行操作:
行动执行完全可选——也可以只预览(Preview Mode)不实际发送,便于在接入真实系统前测试效果。
backend/
├── main.py # FastAPI 应用入口,WebSocket 支持
├── config.py # 配置管理(dataclass 模式,支持 feature flags)
├── state.py # 状态管理器(基于文件锁)
├── schemas.py # Pydantic 数据模型
├── requirements.txt # 依赖清单
├── pipeline/ # ★ 核心处理管道
│ ├── clustering.py # 多级错误聚类(23KB,核心逻辑最重)
│ ├── enrichment.py # Airweave 上下文增强(12KB)
│ ├── analysis.py # 严重度/状态分析(20KB)
│ ├── semantic_matcher.py # 语义匹配(10KB)
│ └── actions.py # Linear/Slack 行动执行(13KB)
├── sources/ # 数据源抽象层(支持 Sentry/Azure/Datadog)
└── clients/ # 外部 API 客户端(Airweave/Linear/Slack)
依赖亮点:
langchain>=0.1.9):统一 LLM 调用接口,同时支持 Anthropic Claude 和 OpenAI GPT-4fastapi>=0.109.0):异步 API,支持 WebSocket 实时推送pydantic>=2.0.0):强类型数据验证airweave>=0.1.0):上下文搜索客户端架构特点:每个管道组件(Clusterer、Enricher、Analyzer 等)均为独立类,支持依赖注入和独立测试。配置管理使用 Python dataclass 配合 functools.lru_cache,实现了"零配置启动"——不设置任何环境变量时,系统自动使用示例数据运行。
frontend/
├── src/
│ ├── App.tsx # 主应用逻辑
│ ├── components/ # UI 组件
│ ├── hooks/ # React 自定义 Hooks
│ └── lib/ # 工具函数
├── package.json # React 18 + Vite + Tailwind CSS
├── vite.config.ts # Vite 构建配置
└── tailwind.config.js # Tailwind 主题配置
前端通过 WebSocket 与 FastAPI 后端通信,实时展示管道执行过程(每一步的状态、耗时、中间结果)。使用 Radix UI 组件库和 Lucide 图标,确保 UI 质量。
最大亮点:项目设计了一个巧妙的"零摩擦"启动模式——不配置任何 API Key 时,系统自动使用预置的 20 条真实感示例数据(来自一个 SaaS 数据同步平台的错误日志),完整演示整个管道流程。
这意味着:
完整启动步骤:
# 后端
cd backend
python -m venv venv && source venv/bin/activate
pip install -r requirements.txt
uvicorn main:app --reload --port 8000
# 前端(新终端)
cd frontend
npm install && npm run dev
# 访问 http://localhost:3000,点击 "Run Demo"
生产环境配置(需要以下最小配置):
AIRWEAVE_API_KEY + AIRWEAVE_COLLECTION_ID(必须)ANTHROPIC_API_KEY 或 OPENAI_API_KEY(二选一)部署局限:项目不提供 Dockerfile 或 docker-compose,需要自行容器化。对于已在使用容器化部署的团队(Kubernetes/Docker Compose),需要额外编写 Dockerfile 并处理好环境变量挂载。
| 维度 | 评价 |
|---|---|
| 示例数据体验 | ⭐⭐⭐⭐⭐ 零摩擦,克隆即跑 |
| 接入真实数据 | ⭐⭐⭐ 需要配置至少 3 个 API Key |
| 接入 Linear/Slack | ⭐⭐⭐ 需要额外配置,有一定学习成本 |
| 容器化部署 | ⭐⭐ 无现成 Docker 支持 |
| 文档完整性 | ⭐⭐⭐⭐ ARCHITECTURE.md + CONFIGURATION.md 覆盖到位 |
error-monitoring-agent 代表了 LLM 赋能可观测性(LLM-Driven Observability) 的一个重要方向。传统 APM 工具依赖规则和阈值告警,而 AI Agent 能够:
这一方向正在被越来越多的团队探索,如配合 GPT-4/Claude 进行日志分析的项目(如 Gizmo、loglens)也在近期快速增长。Airweave Error Monitoring Agent 的开源,为这一领域提供了一个工程化程度较高的参考实现。
适合场景:
不适合场景:
分析时间:2026-06-27 | Stars: 366★ | Forks: 51 | Language: Python + TypeScript