CodeReview/docs/AGENT_DEPLOYMENT_CHECKLIST.md

230 lines
4.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# DeepAudit Agent 审计功能部署清单
## 📋 生产部署前必须完成的检查
### 1. 环境依赖 ✅
```bash
# 后端依赖
cd backend
uv pip install chromadb litellm langchain langgraph
# 外部安全工具(可选但推荐)
pip install semgrep bandit safety
# 或者使用系统包管理器
brew install semgrep # macOS
apt install semgrep # Ubuntu
```
### 2. LLM 配置 ✅
`.env` 文件中配置:
```env
# LLM 配置(必须)
LLM_PROVIDER=openai # 或 azure, anthropic, ollama 等
LLM_MODEL=gpt-4o-mini # 推荐使用 gpt-4 系列
LLM_API_KEY=sk-xxx # 你的 API Key
LLM_BASE_URL= # 可选,自定义端点
# 嵌入模型配置RAG 需要)
EMBEDDING_PROVIDER=openai
EMBEDDING_MODEL=text-embedding-3-small
```
### 3. 数据库迁移 ✅
```bash
cd backend
alembic upgrade head
```
确保以下表已创建:
- `agent_tasks`
- `agent_events`
- `agent_findings`
### 4. 向量数据库 ✅
```bash
# 创建向量数据库目录
mkdir -p /var/data/deepaudit/vector_db
# 在 .env 中配置
VECTOR_DB_PATH=/var/data/deepaudit/vector_db
```
### 5. Docker 沙箱(可选)
如果需要漏洞验证功能:
```bash
# 拉取沙箱镜像
docker pull python:3.11-slim
# 配置沙箱参数
SANDBOX_IMAGE=python:3.11-slim
SANDBOX_MEMORY_LIMIT=256m
SANDBOX_CPU_LIMIT=0.5
```
---
## 🔬 功能测试检查
### 测试 1: 基础流程
```bash
cd backend
PYTHONPATH=. uv run pytest tests/agent/ -v
```
预期结果43 个测试全部通过
### 测试 2: LLM 连接
```bash
cd backend
PYTHONPATH=. uv run python -c "
import asyncio
from app.services.agent.graph.runner import LLMService
async def test():
llm = LLMService()
result = await llm.analyze_code('print(\"hello\")', 'python')
print('LLM 连接成功:', 'issues' in result)
asyncio.run(test())
"
```
### 测试 3: 外部工具
```bash
# 测试 Semgrep
semgrep --version
# 测试 Bandit
bandit --version
```
### 测试 4: 端到端测试
1. 启动后端:`cd backend && uv run uvicorn app.main:app --reload`
2. 启动前端:`cd frontend && npm run dev`
3. 创建一个项目并上传代码
4. 选择 "Agent 审计模式" 创建任务
5. 观察执行日志和发现
---
## ⚠️ 已知限制
| 限制 | 影响 | 解决方案 |
|------|------|---------|
| **LLM 成本** | 每次审计消耗 Token | 使用 gpt-4o-mini 降低成本 |
| **扫描时间** | 大项目需要较长时间 | 设置合理的超时时间 |
| **误报率** | AI 可能产生误报 | 启用验证阶段过滤 |
| **外部工具依赖** | 需要手动安装 | 提供 Docker 镜像 |
---
## 🚀 生产环境建议
### 1. 资源配置
```yaml
# Kubernetes 部署示例
resources:
limits:
memory: "2Gi"
cpu: "2"
requests:
memory: "1Gi"
cpu: "1"
```
### 2. 并发控制
```env
# 限制同时运行的任务数
MAX_CONCURRENT_AGENT_TASKS=3
AGENT_TASK_TIMEOUT=1800 # 30 分钟
```
### 3. 日志监控
```python
# 配置日志级别
LOG_LEVEL=INFO
# 启用 SQLAlchemy 日志(调试用)
SQLALCHEMY_ECHO=false
```
### 4. 安全考虑
- [ ] 限制上传文件大小
- [ ] 限制扫描目录范围
- [ ] 启用沙箱隔离
- [ ] 配置 API 速率限制
---
## ✅ 部署状态检查
运行以下命令验证部署状态:
```bash
cd backend
PYTHONPATH=. uv run python -c "
print('检查部署状态...')
# 1. 检查数据库连接
try:
from app.db.session import async_session_factory
print('✅ 数据库配置正确')
except Exception as e:
print(f'❌ 数据库错误: {e}')
# 2. 检查 LLM 配置
from app.core.config import settings
if settings.LLM_API_KEY:
print('✅ LLM API Key 已配置')
else:
print('⚠️ LLM API Key 未配置')
# 3. 检查向量数据库
import os
if os.path.exists(settings.VECTOR_DB_PATH or '/tmp'):
print('✅ 向量数据库路径存在')
else:
print('⚠️ 向量数据库路径不存在')
# 4. 检查外部工具
import shutil
tools = ['semgrep', 'bandit']
for tool in tools:
if shutil.which(tool):
print(f'✅ {tool} 已安装')
else:
print(f'⚠️ {tool} 未安装(可选)')
print()
print('部署检查完成!')
"
```
---
## 📝 结论
Agent 审计功能已经具备**基本的生产能力**,但建议:
1. **先在测试环境验证** - 用一个小项目测试完整流程
2. **监控 LLM 成本** - 观察 Token 消耗情况
3. **逐步开放** - 先给少数用户使用,收集反馈
4. **持续优化** - 根据实际效果调整 prompt 和阈值
如有问题,请查看日志或联系开发团队。