hamidmatiny/aegis
GitHub: hamidmatiny/aegis
面向 LLM 应用和 Agent 系统的 AI 原生纵深防御网关,拦截 prompt 注入、数据窃取和工具滥用等安全威胁。
Stars: 0 | Forks: 0
# AEGIS
面向 LLM 应用和 agentic 系统的**AI 原生防御平台**。
AEGIS 部署在你的应用程序与任何 LLM 提供商之间,针对 prompt 注入、越狱、数据窃取、工具/MCP 滥用以及供应链篡改执行深度防御——并提供完整的防篡改审计追踪。
## 架构
```
Application → [SDK / Reverse Proxy] → Gateway (Go)
├── Input Defense (Python)
├── Policy Engine (Go + CEL)
├── Model Router (Go)
├── Output Defense (Python)
├── Agent Gate (Go)
└── Audit (Go + Postgres)
```
完整系统设计请参见 [ARCHITECTURE.md](./ARCHITECTURE.md)。
## Monorepo 布局
| 路径 | 语言 | 用途 | 阶段 |
|------|----------|---------|-------|
| `shared/` | Protobuf + JSON Schema | 跨服务 schema 与代码生成 | 0 |
| `gateway/` | Go | gRPC + REST 编排(脚手架) | 0 |
| `input-defense/` | Python | 输入端检测器 + 融合 | 2 |
| `policy-engine/` | Go | CEL 策略评估 | 3 |
| `model-router/` | Go | 与提供商无关的 LLM 路由 | 4 |
| `output-defense/` | Python | 输出端检测器 + LLM judge | 5 |
| `agent-gate/` | Go | 工具/MCP 权限控制 + 污点追踪 | 6 |
| `redteam/` | Python | 持续对抗性测试 | 7 |
| `audit/` | Go | Ed25519 签名审计回执 | 8 |
| `dashboard/` | React + TS | 运维 UI | 9 |
| `sdk/` | Python + TS | 即插即用 SDK 封装 | 10 |
| `examples/` | 混合 | 参考集成 | 11 |
| `deploy/` | Helm + SQL | 生产环境部署 | 0 |
## 快速开始
```
# 1. 复制环境模板(推荐的 secrets 模式)
cp .env.example .env
# 编辑 .env — 设置 API keys、ports 等
# 2. 安装 dev dependencies 并生成 protobuf 代码
chmod +x scripts/*.sh
./scripts/dev-setup.sh
# 3. 启动完整的本地 stack
docker compose up -d --build
# 4. 运行 smoke tests
make test-integration
```
如果你的 shell 不会自动加载 `.env`,请使用 `docker compose --env-file .env up -d`。
## 服务端点
| 服务 | 端口 | 健康检查 | 文档 |
|---------|------|--------|------|
| Gateway | 8080 | `/health` | 脚手架 |
| Policy Engine | 8081 | `/health` | [policy-engine/README.md](./policy-engine/README.md) |
| Model Router | 8082 | `/health` | [model-router/README.md](./model-router/README.md) |
| Agent Gate | 8083 | `/health` | [agent-gate/README.md](./agent-gate/README.md) |
| Audit | 8084 | `/health` | [audit/README.md](./audit/README.md) |
| Input Defense | 8090 | `/health` | [input-defense/README.md](./input-defense/README.md) |
| Output Defense | 8091 | `/health` | [output-defense/README.md](./output-defense/README.md) |
| Red Team | 8092 | `/health` | [redteam/README.md](./redteam/README.md) |
| Dashboard | 3000 | `/` (UI) | [dashboard/README.md](./dashboard/README.md) |
| SDK 代理 (gateway) | 8080 | `/v1/chat/completions` | [sdk/README.md](./sdk/README.md) |
## 开发
```
make proto # Lint + generate from shared/proto
make lint # Go + Python linters
make test # Unit tests (Go + Python)
make test-integration # Docker smoke tests
make bench # Benchmark harness placeholder
```
### 在未安装本地 Go 的情况下运行测试
```
docker run --rm -v "$(pwd)/model-router:/app" -w /app golang:1.22-alpine go test ./...
docker run --rm -v "$(pwd)/policy-engine:/app" -w /app golang:1.22-alpine go test ./...
```
### 运行 Python 服务测试
```
cd input-defense && pip install -e '.[dev]' && pytest
cd output-defense && pip install -e '.[dev]' && pytest
```
## 构建顺序
| 阶段 | 组件 | 状态 |
|-------|-----------|--------|
| 0 | 脚手架、共享 schema、CI、docker-compose | 已完成 |
| 2 | 输入防御 | 已完成 |
| 3 | 策略引擎 | 已完成 |
| 4 | 模型路由 | 已完成 |
| 5 | 输出防御 | 已完成 |
| 6 | Agent gate | 已完成 |
| 7 | 红队引擎 | 已完成 |
| 8 | 审计服务 | 已完成 |
| 9 | Dashboard | 已完成 |
| 10 | SDK | 已完成 |
| 11 | 示例应用 | 已完成 |
## 环境变量
完整列表请参见 [.env.example](./.env.example)。各服务的关键变量:
| 变量 | 服务 | 用途 |
|----------|---------|---------|
| `XAI_API_KEY` | model-router | xAI Grok API 密钥(非 `GROK_API_KEY`) |
| `OPENAI_API_KEY`, `ANTHROPIC_API_KEY`, `GOOGLE_API_KEY` | model-router | 云端 LLM 提供商 |
| `AEGIS_MODEL_ROUTER_CONFIG` | model-router | `providers.yaml` 路径 |
| `AEGIS_POLICY_DIR` | policy-engine | YAML 策略包目录 |
| `AEGIS_INPUT_DEFENSE_PORT` | input-defense | HTTP 端口(默认 8090) |
| `AEGIS_OUTPUT_DEFENSE_PORT` | output-defense | HTTP 端口(默认 8091) |
| `AEGIS_POLICY_ENGINE_URL` | agent-gate | Policy-engine 基础 URL |
| `AEGIS_APPROVAL_TTL_HOURS` | agent-gate | 待处理审批的 TTL |
| `AEGIS_REDTEAM_INPUT_DEFENSE_URL` | redteam | 活动使用的输入防御基础 URL |
| `AEGIS_REDTEAM_OUTPUT_DEFENSE_URL` | redteam | 活动使用的输出防御基础 URL |
| `AEGIS_AUDIT_SIGNING_KEY` | audit | Ed25519 签名密钥(PEM 或 base64 seed) |
| `AEGIS_AUDIT_SIGNING_KEY_ID` | audit | 回执上的签名者密钥标识符 |
| `AEGIS_INPUT_DEFENSE_URL` | sdk-proxy / gateway | SDK pipeline 的输入防御 URL |
| `AEGIS_MODEL_ROUTER_URL` | sdk-proxy / gateway | SDK pipeline 的模型路由 URL |
| `OPENAI_BASE_URL` | 你的应用 | 在反向代理模式下设置为 `http://localhost:8080/v1` |
| `DATABASE_URL` | redteam, audit | Postgres 连接 |
## 许可证
Apache 2.0 — 请参见 [LICENSE](./LICENSE)。
标签:API网关, Go, LLM应用防火墙, Python, Ruby工具, XSS注入, 大语言模型安全, 审计日志, 提示词注入防护, 无后门, 日志审计, 机密管理, 测试用例, 请求拦截, 逆向工具