zeal175/incident-response-agent
GitHub: zeal175/incident-response-agent
一个利用团队事件记忆加速诊断与修复的 AI 响应代理。
Stars: 1 | Forks: 0
# Prometheus
一个 AI 代理,能够记住你的团队解决过的每一个事件,并利用这些记忆在数秒内诊断新事件。
## 它做什么
粘贴错误日志或告警。代理会:
1. 使用 **Hindsight** 搜索你的事件历史中相似的过去案例
2. 生成具体的诊断结果与精确修复命令
3. 从你保存的每个已解决事件中学习并存入记忆
随着时间推移,代理会显著变得更强大。你的团队之前见过的错误将在数分钟内解决。重复性问题会被立即标记并提供永久修复方案。
## 架构
```
flowchart LR
subgraph client [Browser]
UI[Chat UI]
end
subgraph next [Next.js server]
R["/api/respond"]
T["/api/retain"]
end
subgraph memory [Hindsight Cloud]
recall[recall]
retain[retain]
end
LLM[Groq LLM]
UI --> R
UI --> T
R --> recall
R --> LLM
T --> retain
```
ASCII 等效表示:
```
User paste → POST /api/respond → Hindsight recall (top 5) → Groq diagnosis → JSON
User save → POST /api/retain → Hindsight retain (structured incident text)
```
## Hindsight 内存的使用方式
本项目使用 [Hindsight](https://github.com/vectorize-io/hindsight) 作为持久化内存层,由 Vectorize 提供支持。
- **`recall()`** — 在每次 LLM 响应前调用。语义层面搜索过去事件;结果被注入到 Groq 系统提示词中。
- **`retain()`** — 当工程师保存解决方案时调用。存储错误、根因、修复方法和解决时间。
没有 Hindsight:每次查询都得到通用的 LLM 建议。
使用 Hindsight:具体的根因、精确的命令、时间预估——全部来自你团队的实际历史记录。
请参阅 [Hindsight 文档](https://hindsight.vectorize.io/) 和 [代理内存概览](https://vectorize.io/what-is-agent-memory)。
## 技术栈
- Next.js 14(App Router)+ TypeScript
- [Hindsight Cloud](https://hindsight.vectorize.io/) — `@vectorize-io/hindsight-client`
- Groq(`qwen/qwen3-32b`)
- Tailwind CSS + Framer Motion(UI)
- Vercel(部署)
## 本地运行
1. 克隆仓库
2. `npm install`
3. 复制 `.env.local.example` 到 `.env.local`,并添加你的 API 密钥
4. `npm run seed` — 生成 20 个合成事件(仅运行一次)
5. `npm run dev` — http://localhost:3000
### 在全新的 Hindsight 实例上重新运行种子(或者修复重复项)
种子脚本 **始终保留** `scripts/seed.ts` 中的每一行数据——它不会先清空数据库。再次运行 `npm run seed` 会在 **相同的** 数据库上 **追加** 约 20 条记忆,因此召回结果可能看起来嘈杂。
**选项 A — 全新空数据库(推荐用于干净起点):**
在 `.env.local` 中设置一个 **新的** 数据库 ID,例如 `HINDSIGHT_BANK_ID=incident-response-fresh`,保持相同的 API 密钥,然后运行:
```
npm run seed
```
`ensureIncidentBank()` 会在数据库不存在时创建它,随后种子脚本只填充一次。
**选项 B — 全新的 Hindsight 项目:**
在 [Hindsight Cloud](https://ui.hindsight.vectorize.io) 中创建一个新的 API 密钥 / 工作区,将其放入 `HINDSIGHT_API_KEY`,可选地设置一个新的 `HINDSIGHT_BANK_ID`,然后运行 `npm run seed`。
**选项 C — 删除重复项:**
打开 [Hindsight 控制台](https://ui.hindsight.vectorize.io),选择你的数据库,并手动删除重复或测试条目,而不是在旧数据上重新种子。
## 环境变量
| 变量 | 是否必需 | 描述 |
|------|----------|------|
| `HINDSIGHT_API_KEY` | 是 | 来自 [Hindsight Cloud](https://ui.hindsight.vectorize.io) |
| `GROQ_API_KEY` | 是 | 来自 [Groq 控制台](https://console.groq.com) |
| `HINDSIGHT_BASE_URL` | 否 | 默认:`https://api.hindsight.vectorize.io` |
| `HINDSIGHT_BANK_ID` | 否 | 默认:`incident-response` |
| `DISABLE_RECALL` | 否 | 设为 `true` 以跳过 Hindsight 召回(无记忆的演示模式——仅通用 LLM) |
促销码 `MEMHACK409` → $50 Hindsight Cloud 积分(黑客马拉松)。
### 演示模式:启用/禁用记忆
**不要**在实时演示过程中编辑路由代码。在 `.env.local` 或 Vercel 中设置:
```
DISABLE_RECALL=true
```
重启开发服务器(或重新部署)。提交相同的错误两次:第一次运行是通用回答;设置 `DISABLE_RECALL=false`(或移除它),重启后再次提交以展示召回与具体诊断。
当 `DISABLE_RECALL` 启用时,UI 会显示 **“演示:召回已禁用”** 横幅。
## 视频检查清单(2–5 分钟)
1. **无记忆:** 设置 `DISABLE_RECALL=true`,粘贴一个真实的错误(例如 Redis OOM 在结账时)——展示通用回答和横幅。
2. **有记忆:** 关闭 `DISABLE_RECALL`,粘贴相同的错误——展示“已召回事件”和引用记忆的具体诊断。
3. **保存:** 勾选“保存到记忆”并确认成功。
4. **学习:** 再次询问类似问题(可选)——召回应能提取新事件。
## 安全
- 使用 **`.env.local`** 存储密钥。该仓库会忽略 `.env` 和 `.env*.local` 文件——不要提交 API 密钥。
## 许可证
如果仓库中包含,请参考 [LICENSE](LICENSE)。
标签:AI智能体, API服务, API集成, Hindsight Cloud, LLM, SEO: AI 运维, SEO: 智能事件响应, SEO: 自动化故障处理, SRE, TypeScript, Unmanaged PE, Vectorize, 事件诊断, 云端内存, 保留与回忆, 偏差过滤, 历史回溯, 可观测性, 告警处理, 固定修复, 安全插件, 工程效率, 持久化内存, 搜索召回, 日志解析, 时间预估, 根因分析, 模块化设计, 端到端诊断, 系统提示词注入, 结构化存储, 聊天界面, 自动化修复, 自动化攻击, 记忆代理, 证书伪造, 语义搜索, 重复问题标记, 错误日志