内容
# Aegis
**用于 AI 代理的安全中间层 — 通过 MCP 保护免受工具中毒和提示注入的攻击。**
> 正在进行中 — 仅为脚手架。核心实现将在后续迭代中完成。
---
使用 Next.js 14(应用路由器)、TypeScript、Tailwind CSS 和 Shadcn UI 构建。
## 功能
- **实时威胁检测**:扫描 MCP 工具响应中的 34+ 种威胁模式,涵盖 6 类威胁
- **风险评分引擎**:具有递减回报的加权风险计算
- **内容净化**:在保留功能的同时中和检测到的威胁
- **GitHub 仓库扫描**:扫描公共仓库中最多 30 个基于文本的文件
- **自动 CI 安全门控**:GitHub Actions 集成阻止高风险代码合并
- **审计日志**:使用 SQLite/Postgres 存储以进行合规性和威胁分析
- **分析仪表盘**:可视化威胁趋势和检测模式
## CI 安全门控
Aegis 包含一个自动化的 GitHub Actions 工作流,用于扫描每次推送和拉取请求中的安全威胁。配置完成后,它将自动运行,无需手动干预。
### 设置(一次性配置)
1. **部署 Aegis** 到 Vercel 或 Render(参见下面的[部署选项](#部署选项))
2. **生成 CI token**:
```bash
openssl rand -hex 32
```
3. **配置已部署的应用**:
- 添加 `AEGIS_CI_TOKEN` 作为环境变量,值为生成的 token
- 重新部署以应用更改
4. **配置 GitHub 仓库密钥**:
- 进入仓库的 **设置 > 密钥和变量 > Actions**
- 添加两个密钥:
- `AEGIS_API_URL`:已部署的 Aegis URL(例如,`https://aegis.vercel.app`)
- `AEGIS_CI_TOKEN`:步骤 2 中的相同 token
### 工作原理
配置完成后,每次推送和拉取请求将自动:
1. 检测更改的基于文本的文件(.md, .js, .ts, .json, .py 等)
2. 将文件内容发送到已部署的 Aegis 实例进行扫描
3. 在 PR 上发布包含每个文件风险评分的评论
4. **阻止合并** 如果任何文件具有中等或关键风险级别
5. 如果所有文件都是安全的或低风险的,则允许合并
工作流在几秒钟内运行,初始设置后无需手动步骤。
## 部署选项
Aegis 是一个全栈 Next.js 应用程序,可以通过多种方式部署:
### Docker 部署(本地/自托管)
在容器中运行 Aegis 和 PostgreSQL:
1. **前提条件**:
- 已安装 [Docker](https://docs.docker.com/get-docker/) 和 [Docker Compose](https://docs.docker.com/compose/install/)
- 克隆仓库
2. **设置环境变量**:
```bash
cp .env.example .env
# 编辑 .env 并添加您的 API 密钥(可选但推荐):
# GITHUB_TOKEN, GROQ_API_KEY, AEGIS_CI_TOKEN
```
3. **构建和启动容器**:
```bash
docker-compose up --build
```
这将:
- 在多阶段 Docker 构建中构建 Next.js 应用
- 在容器中启动 PostgreSQL 16
- 在端口 3000 上启动 Aegis 应用
4. **运行数据库迁移**(仅第一次):
```bash
docker-compose exec app npx prisma migrate deploy
```
5. **访问应用程序**:
- 在浏览器中打开 http://localhost:3000
- 应用程序现在正在运行,带有容器化的 PostgreSQL 数据库
**停止容器**:
```bash
docker-compose down
```
**停止并删除数据**:
```bash
docker-compose down -v
```
### 云部署
- **Vercel**:可以无缝托管整个应用程序。UI 在边缘全局部署,而 `/api` 路由自动部署为无服务器函数。
- **Render**:可以将整个应用程序作为单个 Node.js Web 服务托管(通过附带的 `render.yaml` 配置)。
有关详细的手动部署说明,请参见 [DEPLOYMENT.md](DEPLOYMENT.md)。