# 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 和阈值 如有问题,请查看日志或联系开发团队。