Rachit-2216/recallops
GitHub: Rachit-2216/recallops
RecallOps 是一款为工程团队提供有据可查的运维事件记忆管理工具,将事故时间线、部署记录、runbook 和事后总结转化为受控的、可溯源的知识库。
Stars: 0 | Forks: 0
## 标题: RecallOps
emoji: 🧠
colorFrom: green
colorTo: gray
sdk: docker
app_port: 7860
pinned: false
# RecallOps
**为工程团队提供有据可查的事件记忆。**
[在线产品](https://rachitr-recallops.hf.space/app?demo=cloudflare) ·
[Hugging Face Space](https://huggingface.co/spaces/rachitr/recallops) ·
[架构](docs/architecture.md)
RecallOps 将事件时间线、部署记录、runbook、日志和事后总结转化为受控的运维记忆。响应人员可以恢复查看以往故障是如何诊断的,检查每个答案背后的证据,并仅将经人工验证的解决方案提升用于未来事件。
## 问题所在
运维知识通常分散在不同的工具和文档中。在事件发生期间,团队会反复重建相同的上下文:
- 故障发生前有什么变更?
- 以前是否出现过这种症状?
- 哪种缓解措施有效,为什么?
- 当前的 runbook 还可靠吗?
搜索可以定位文档,但它无法保留事件上下文、因果关系、来源或已更正知识的生命周期。
## 产品介绍
RecallOps 提供了一个单一的工作流,用于构建可靠的事件记忆:
1. **观察(Observe)** — 在临时会话记忆中捕获带有时间戳的事件事实。
2. **回忆(Recall)** — 检索相关事件和运维指南,并附带来源引用。
3. **调查(Investigate)** — 检查每个结果背后的证据图谱、因果路径和检索追踪。
4. **解决(Resolve)** — 仅在明确的人工确认后才提升解决方案。
在整个工作流中,永久性证据和临时性事件观察始终保持区分。可以在不丢弃周围事件历史记录的情况下删除过时的指南。
## 为什么选择 Cognee
[Cognee](https://www.cognee.ai/) 提供了用于组织和检索运维知识的记忆层:
- `remember` 存储持久证据和会话范围内的观察结果。
- `recall` 返回带有证据引用的上下文。
- `improve` 提升经过验证的事件经验。
- `forget` 移除过时的记忆项。
RecallOps 在该记忆层之上添加了运维控制:来源追溯、稳定的证据标识、人工批准关卡、审计记录、受保护的用量限制以及明确的降级状态。
## 架构
```
flowchart LR
A[Incident evidence] --> B[FastAPI ingestion and policy layer]
C[Session observations] --> B
B --> D[(Cognee memory)]
B --> E[(SQL audit state)]
D --> F[Referenced recall]
E --> F
F --> G{Human verified?}
G -->|No| H[Remain session-scoped]
G -->|Yes| I[Promote resolution]
```
该应用程序以单个 Docker 容器形式提供:
- React 19 和 TypeScript 前端
- FastAPI 应用程序和 API
- Cognee Cloud 记忆适配器
- SQLAlchemy 和 Alembic 审计状态
- 用于公共部署的 SQLite
- React Three Fiber 和 React Flow 可视化
有关完整的数据流,请参阅 [docs/architecture.md](docs/architecture.md);
有关记忆生命周期语义,请参阅 [docs/cognee-lifecycle.md](docs/cognee-lifecycle.md)。
## 本地运行
环境要求:
- Python 3.13
- [uv](https://docs.astral.sh/uv/)
- Node.js 22 和 npm 10+
```
uv sync --frozen --group dev
npm ci --prefix frontend
npm --prefix frontend run build
uv run alembic -c backend/alembic.ini upgrade head
uv run uvicorn recallops.main:app --app-dir backend/src --port 7860
```
打开 [http://127.0.0.1:7860/app](http://127.0.0.1:7860/app)。
也支持使用 Docker:
```
docker compose up --build
```
## 配置
将 `.env.example` 复制到 `.env`。请将凭据保存在本地或平台密钥存储中;切勿提交它们。
| 变量 | 用途 |
| --- | --- |
| `APP_ENV` | 运行时环境 |
| `APP_DATABASE_URL` | 异步 SQLAlchemy 数据库 URL |
| `APP_PUBLIC_ORIGIN` | 允许的浏览器源 |
| `APP_COGNEE_MODE` | `fake` 用于离线开发,或 `live` 用于 Cognee Cloud |
| `APP_COGNEE_DATASET` | 永久证据数据集 |
| `COGNEE_BASE_URL` | Cognee Cloud API 基础 URL |
| `COGNEE_API_KEY` | Cognee Cloud API 密钥 |
浏览器绝不会接收 Cognee 凭据。
## 质量与安全
```
uv run ruff check backend scripts
uv run mypy
uv run pytest -m "not integration"
npm --prefix frontend run lint
npm --prefix frontend run test
npm --prefix frontend run build
uv run python scripts/preflight.py
```
RecallOps 包含严格的请求验证、凭据脱敏、源控制、URL 摄入保护、故障关闭记忆状态,以及一个会拒绝已提交密钥的仓库预检。
## 公共案例研究
在线产品通过重构 Cloudflare 2025 年 12 月 5 日的宕机事件及其与 2025 年 11 月 18 日宕机事件的关联,展示了 RecallOps 的能力。
来源:
- [Cloudflare 2025 年 12 月 5 日宕机事件](https://blog.cloudflare.com/5-december-2025-outage/)
- [Cloudflare 2025 年 11 月 18 日宕机事件](https://blog.cloudflare.com/18-november-2025-outage/)
- [Code Orange: Fail Small](https://blog.cloudflare.com/fail-small-resilience-plan-uk-ua/)
其中包含的时间线和事件记录均源自这些公开资料。它们不是私有的 Cloudflare 日志或内部 runbook。RecallOps 不隶属于 Cloudflare,也未获得其认可。
标签:Docker, Ruby, 事故响应, 安全防御评估, 工程效能, 知识库, 请求拦截, 运维管理, 逆向工具