Files
aiagent/docs/deployment-guide.md
renjianbo ab1589921a fix: 修复35个安全与功能缺陷,补全知识进化/数字孪生/行为采集模块
## 安全修复 (12项)
- Webhook接口添加全局Token认证,过滤敏感请求头
- 修复JWT Base64 padding公式,防止签名验证绕过
- 数据库密码/飞书Token从源码移除,改为环境变量
- 工作流引擎添加路径遍历防护 (_resolve_safe_path)
- eval()添加模板长度上限检查
- 审批API添加认证依赖
- 前端v-html增强XSS转义,console.log仅开发模式输出
- 500错误不再暴露内部异常详情

## Agent运行时修复 (7项)
- 删除_inject_knowledge_context中未定义db变量的finally块
- 工具执行添加try/except保护,异常不崩溃Agent
- LLM重试计入budget计数器
- self_review异常时passed=False
- max_iterations截断标记success=False
- 工具参数JSON解析失败时记录警告日志
- run()开始时重置_llm_invocations计数器

## 配置与基础设施
- DEBUG默认False,SQL_ECHO独立配置项
- init_db()补全13个缺失模型导入
- 新增WEBHOOK_AUTH_TOKEN/SQL_ECHO配置项
- 新增.env.example模板文件

## 前端修复 (12项)
- 登录改用URLSearchParams替代FormData
- 401拦截器通过Pinia store统一清理状态
- SSE流超时从60s延长至300s
- final/error事件时清除streamTimeout
- localStorage聊天记录添加24h TTL
- safeParseArgCount替代模板中裸JSON.parse
- fetchUser 401时同时清除user对象

## 新增模块
- 知识进化: knowledge_extractor/retriever/tasks
- 数字孪生: shadow_executor/comparison模型
- 行为采集: behavior_middleware/collector/fingerprint_engine
- 代码审查: code_review_agent/document_review_agent
- 反馈学习: feedback_learner
- 瓶颈检测/优化引擎/成本估算/需求估算
- 速率限制器 (rate_limiter)
- Alembic迁移 015-020

## 文档
- 商业化落地计划
- 8篇docs文档 (架构/API/部署/开发/贡献等)
- Docker Compose生产配置

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-10 19:50:20 +08:00

238 lines
7.0 KiB
Markdown
Raw 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.
# 🚀 部署与运维指南
> **Deployment & Operations Guide**
本文档面向运维人员,提供天工智能体平台的生产环境部署方案与日常运维指导。
---
## 一、环境要求
### 服务器最低配置
| 环境 | CPU | 内存 | 磁盘 | 网络 |
|:----|:----|:-----|:-----|:-----|
| 开发 | 2 核 | 4 GB | 20 GB SSD | 内网 |
| 预发布 | 4 核 | 8 GB | 50 GB SSD | 内网 |
| 生产 | 8 核 | 16 GB | 100 GB SSD | 公网 |
### 依赖软件
| 组件 | 版本 | 安装方式 |
|:----|:-----|:---------|
| Docker | 24+ | `apt install docker.io` 或官方脚本 |
| Docker Compose | 2.20+ | `apt install docker-compose-plugin` |
| Nginx | 1.24+ | `apt install nginx` |
| MySQL | 8.0+ | **腾讯云数据库**(推荐)或自建 |
| Redis | 7+ | Docker 运行 |
---
## 二、部署架构
```
┌──────────────┐
│ 用户浏览器 │
└──────┬───────┘
│ HTTPS (443)
┌──────▼───────┐
│ Nginx │
│ SSL 终止 │
│ 反向代理 │
└──┬───────┬───┘
│ │
┌──────────▼─┐ ┌──▼──────────┐
│ 前端静态资源 │ │ 后端 API │
│ :8038 │ │ :8037 │
│ (Vue SPA) │ │ (FastAPI) │
└────────────┘ └──┬──────┬───┘
│ │
┌────────▼─┐ ┌──▼────────┐
│ MySQL │ │ Redis │
│ (腾讯云) │ │ (Docker) │
└──────────┘ └───────────┘
┌──────▼──────┐
│ Celery Worker│
│ 异步任务处理 │
└─────────────┘
```
---
## 三、部署步骤
### Step 1克隆代码
```bash
git clone <repository-url> /opt/aiagent
cd /opt/aiagent
```
### Step 2配置环境变量
```bash
cd backend
# 复制环境变量模板
cp env.example .env
# ⚠️ 编辑 .env 文件
vim .env
```
#### 关键配置项
| 变量 | 说明 | 示例 |
|:-----|:-----|:------|
| `DATABASE_URL` | MySQL 连接字符串 | `mysql+asyncmy://user:pass@host:3306/aiagent?charset=utf8mb4` |
| `REDIS_URL` | Redis 连接地址 | `redis://localhost:6379/0` |
| `SECRET_KEY` | JWT 密钥(需随机生成) | `openssl rand -hex 32` |
| `ACCESS_TOKEN_EXPIRE_MINUTES` | Access Token 有效期 | `30` |
| `REFRESH_TOKEN_EXPIRE_DAYS` | Refresh Token 有效期 | `7` |
| `CORS_ORIGINS` | 允许的前端域名 | `["http://localhost:8038", "https://your-domain.com"]` |
> ⚠️ **安全警告**`SECRET_KEY` 必须使用强随机字符串,切勿硬编码在代码中。
### Step 3使用 Docker Compose 部署
```bash
# 构建并启动所有服务
docker-compose -f docker-compose.dev.yml up -d --build
# 确认所有容器正常运行
docker-compose ps
```
### Step 4配置 Nginx生产环境
参考 `nginx.conf`,关键配置如下:
```nginx
server {
listen 80;
server_name your-domain.com;
return 301 https://$server_name$request_uri; # HTTP 重定向到 HTTPS
}
server {
listen 443 ssl http2;
server_name your-domain.com;
# SSL 证书配置
ssl_certificate /etc/nginx/ssl/cert.pem;
ssl_certificate_key /etc/nginx/ssl/key.pem;
# 前端静态资源
location / {
proxy_pass http://localhost:8038;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
# 后端 API
location /api/ {
proxy_pass http://localhost:8037;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
# SSE 支持
proxy_set_header Connection '';
proxy_buffering off;
proxy_cache off;
chunked_transfer_encoding on;
}
}
```
### Step 5数据库迁移
```bash
docker exec -it aiagent-backend-1 alembic upgrade head
```
---
## 四、日常运维
### 服务管理
```bash
# 查看所有服务状态
docker-compose ps
# 查看日志(实时)
docker-compose logs -f
# 查看特定服务日志
docker-compose logs -f backend
# 重启服务
docker-compose restart backend
# 滚动更新
docker-compose pull
docker-compose up -d --build
```
### 数据库维护
```bash
# 备份数据库(使用腾讯云自动备份功能更佳)
mysqldump -h <host> -u <user> -p aiagent > backup_$(date +%Y%m%d).sql
# 执行数据库迁移
docker exec -it aiagent-backend-1 alembic upgrade head
# 查看迁移历史
docker exec -it aiagent-backend-1 alembic history
```
### 监控与告警
| 指标 | 说明 | 建议阈值 |
|:-----|:------|:---------|
| CPU 使用率 | 服务器 CPU | < 80% |
| 内存使用率 | 服务器内存 | < 85% |
| 磁盘使用率 | 数据盘 | < 80% |
| API 响应时间 | 接口平均延迟 | < 500ms |
| 错误率 | 5xx 错误占比 | < 1% |
---
## 五、常见运维问题
| 问题 | 排查步骤 |
|:-----|:---------|
| ❌ 服务无法启动 | `docker-compose logs` 查看错误日志 |
| 🔌 数据库连接失败 | 检查 `.env``DATABASE_URL` 和网络连通性 |
| ⏰ API 响应缓慢 | 检查慢查询、Redis 缓存命中率、LLM API 延迟 |
| 🚫 502 Bad Gateway | Nginx 无法连接后端,检查后端服务是否正常运行 |
| 💾 磁盘空间不足 | `docker system prune -a` 清理无用镜像和容器 |
| 🔄 证书过期 | 使用 acme.sh 或 certbot 自动续签 SSL 证书 |
---
## 六、备份策略
| 数据 | 备份频率 | 保留期限 | 方式 |
|:----|:---------|:---------|:-----|
| MySQL 数据库 | 每日 | 30 天 | 腾讯云自动备份或 mysqldump |
| 用户上传文件 | 实时同步 | — | 对象存储(如腾讯云 COS |
| 配置文件 (.env) | 变更时 | — | Git 私有仓库 + 加密 |
| Docker 镜像 | 发布时 | 最近 5 个版本 | 镜像仓库 |
---
## 七、安全加固
-**关闭不必要的端口**:仅开放 80/443
-**使用 HTTPS**Let's Encrypt 免费证书
-**限制数据库访问**:仅允许应用服务器 IP 连接
-**定期更新依赖**`docker-compose pull` 拉取最新镜像
-**日志审计**:使用 ELK 或腾讯云 CLS 聚合分析
-**WAF 防护**:建议使用腾讯云 Web 应用防火墙
---
> 📎 **相关文档**[快速开始指南](./quickstart.md) | [架构设计文档](./architecture.md)