Uthmannabeel/blackbox
GitHub: Uthmannabeel/blackbox
BlackBox 是一个基于 CockroachDB 多区域分布式记忆的 SRE 事件响应 Agent,在区域级故障下仍能保持记忆连续性和推理能力。
Stars: 0 | Forks: 0
# 🛩️ BlackBox
**记忆能在崩溃中幸存的 incident-response agent。**
BlackBox 是一个 SRE copilot,用于对生产事件进行分诊、诊断和协助缓解。就像飞机的黑匣子一样,它的记忆专为抵御它正在帮你对抗的故障而构建:它在 CockroachDB 之上保持**全局可用、强一致性和区域固定** —— 因此,当整个云区域在事件处理中途宕机时,agent 依然能保持记忆和持续推理。
## 为什么选择 CockroachDB(而不仅仅是 vector store)
大多数 agent memory 演示使用的数据库都可以被随意替换。BlackBox 的设计核心围绕着**只有 CockroachDB** 才能做好的事情:
| 功能 | BlackBox 如何使用它 | 为什么重要 |
|---|---|---|
| **`REGIONAL BY ROW`** | 每条记忆(incident、runbook、thought)都通过 `crdb_region` 固定到其源区域。 | 低延迟的本地召回 + **按行控制数据驻留** —— EU 事件的记忆永远不会离开 EU。 |
| **`SURVIVE REGION FAILURE`** | 记忆数据库可以容忍整个区域的丢失而不会丢失数据。 | agent 的记忆比它正在诊断的故障更持久。这是现场演示的最精彩之处。 |
| **Distributed Vector Indexing (C-SPANN)** | 带有区域前缀 vector index 的 `VECTOR(1024)` 列,用于语义召回。 | 在数百万个 vector 中询问“我们以前见过类似的事件吗?”,并按区域协同定位。 |
| **Strong consistency** | 实时的 `incident_state`(阶段、假设、操作)是事务性的。 | agent 在危机期间永远不会根据过期或脑裂状态采取行动。 |
一个系统既是**记录系统**又是**agent memory 层** —— 无需将 vector DB、状态存储和缓存拼接在一起。
**我们证明了这一点,而不是口头声称:** 本仓库提供了一个本地的 9 节点、3 区域混沌测试环境([`infra/chaos/`](./infra/chaos/README.md))。我们在加载了 10,000+ 条记忆的情况下,杀死了数据库主区域的所有节点 —— 召回依然在约 140ms 内响应(包括源区域已死亡的记忆),并且源区域已死亡的写入依然持续提交。
## 超越召回:不断复利的记忆,以及能对自身大脑进行分诊的 agent
- **Learning loop** —— 当 agent 解决了一个事件后,该解决方案会自动提炼为新的*学习到的 runbook*(程序性记忆)。下一个类似的事件会召回 agent 刚刚学到的修复方法。
- **Self-diagnosis** —— agent 的记忆*就是*一个 CockroachDB 集群,而它的 `diagnose_memory` 工具会观察各区域的节点存活情况和生存目标,因此在中途发生故障时,它可以解释:“一个区域宕机了;但我所有的记忆仍然可读并可写。”
## 所使用的必需工具
**CockroachDB(使用了 3 个必需工具;要求 ≥2 个):**
- ✅ **Distributed Vector Indexing** —— 针对 incident、runbook 和 agent thought 流的语义记忆(`db/schema.sql`)。
- ✅ **Cloud Managed MCP Server** —— agent 在推理过程中将其实时操作的集群(schema、健康状态、运行中的查询)作为一种工具进行内省。
- ✅ **`ccloud` CLI** —— 用于配置多区域集群并启用区域生存能力(`infra/`)。
**AWS(使用了 3 个;要求 ≥1 个):**
- ✅ **Amazon Bedrock** —— 使用 Claude 进行推理,并使用 Titan Text Embeddings v2 (1024-dim) 生成记忆 embedding。
- ✅ **AWS Lambda** —— 托管 agent 循环。
- ✅ **Amazon S3** —— 存储 incident 产出物和事后分析报告。
## 记忆模型
BlackBox 实现了 agent 所需的三种经典记忆类型,每种都由一个 CockroachDB 表提供支持(参见 `db/schema.sql`):
- **Episodic** —— `incidents`:发生了什么、何时发生以及是如何解决的。
- **Semantic / procedural** —— `runbooks`:如何修复特定类别的问题。
- **Working + long-term stream** —— `agent_memory`: agent 的观察、操作和反思,并根据重要性进行权重分配以便召回。
- **Structured live state** —— `incident_state`:正在处理中的 incident 的事务性真实数据源。
每个表都是 `REGIONAL BY ROW` 并带有区域前缀的 vector index。
## 架构
```
┌─────────────────────────────┐
Operator (browser) ── │ web/ Next.js dashboard │
│ chat · timeline · CHAOS btn │
└──────────────┬──────────────┘
│
┌──────────────▼──────────────┐
│ packages/agent (AWS Lambda) │
│ reason ↔ recall ↔ act loop │
│ Bedrock: Claude + Titan │
└───────┬───────────────┬──────┘
memory tools │ │ introspection
┌───────▼──────┐ ┌─────▼─────────────┐
│ packages/ │ │ CockroachDB Cloud │
│ memory (pg) │──│ Managed MCP Server│
└───────┬──────┘ └───────────────────┘
│
┌──────────────────▼───────────────────────┐
│ CockroachDB Cloud — multi-region │
│ us-east-1 · eu-west-1 · ap-south-1 │
│ REGIONAL BY ROW · SURVIVE REGION FAILURE │
│ distributed VECTOR indexes (C-SPANN) │
└───────────────────────────────────────────┘
```
详情请参阅 [`ARCHITECTURE.md`](./ARCHITECTURE.md)。
## 仓库结构
```
cockroach-ai/
├── db/ CockroachDB schema + seed (the memory layer's heart)
├── packages/
│ ├── memory/ TypeScript memory service over pg + Bedrock embeddings
│ └── agent/ Agentic reason/recall/act loop on Bedrock
├── web/ Next.js demo dashboard (incident chat + chaos button)
└── infra/ ccloud + AWS provisioning
```
## 快速开始
### 30秒离线体验(无需云服务,无需密钥)
```
npm install
npm run dev:mock # open http://localhost:3000
```
Mock 模式会替换为确定性的 embedding、由样本 incident 种子化的内存存储,以及一个脚本化的 agent —— 因此整个 UI(召回、incident 时间线、混沌/生存能力面板)都可以在零凭证的情况下运行。非常适合作为初次体验和演示的备用方案。
### 对接真实的 CockroachDB + AWS Bedrock 运行
```
npm install
cp .env.example .env # fill in CockroachDB + AWS credentials
npm run db:schema # apply db/schema.sql to your cluster
npm run db:seed # load sample fleet + historical incidents (embeds via Bedrock)
npm run agent:dev # talk to the agent from the CLI
npm run dev # or use the web dashboard at http://localhost:3000
```
有关配置多区域集群、启用 Managed MCP Server 以及申请 Bedrock 模型访问权限的信息,请参阅 [`infra/README.md`](./infra/README.md)。
## 测试
```
npm test # vitest — runs the full suite in offline mock mode
```
涵盖了 embedding 的确定性和相似度排序、基于种子化记忆的语义召回、agent 的推理/召回/执行循环,以及 API 速率限制。
## 生产环境加固
- 通过 MCP 进行只读、受语句保护的集群内省
- 全面使用参数化 SQL;通过 TLS `verify-full` 连接到集群
- 在 agent endpoint 上实施速率限制 + 输入验证
- 配置 CSP + `Strict-Transport-Security`/`X-Frame-Options`/`X-Content-Type-Options` 标头
- 错误仅在服务器端记录;永远不会泄露给客户端
## 许可证
Apache-2.0 —— 参见 [`LICENSE`](./LICENSE)。
标签:AIOps, AWS Bedrock, CockroachDB, RAG, 自动化攻击, 运维