跳到主要内容

脚本使用指南

概述​

MGAgent 在 scripts/ 目录下提供了一系列工具脚本,用于简化部署、开发和运维流程。

脚本列表​

脚本用途适用场景
init.sh一键初始化项目首次安装
start-all.sh启动本地开发服务本地开发
stop-all.sh停止本地开发服务本地开发
status.sh检查服务状态运维监控
deploy.sh一键生产部署生产环境部署
docker-services.sh基础设施服务管理本地调试
download_local_models.py下载本地 Embedding 模型部署阶段下载 AI 模型

init.sh - 项目初始化​

首次安装时使用,自动完成所有依赖安装和目录创建。

使用方法​

# 添加执行权限
chmod +x scripts/init.sh

# 运行初始化
./scripts/init.sh

执行内容​

  1. 安装 mgagent-backend Python 依赖
  2. 安装 mgagent-admin-backend Python 依赖
  3. 安装 mgagent-frontend Node.js 依赖
  4. 安装 mgagent-admin-frontend Node.js 依赖
  5. 创建必要的数据目录
  6. 设置所有脚本执行权限

输出示例​

=========================================
MGAgent 初始化脚本
=========================================

[1/6] 安装 mgagent-backend 依赖
-----------------------------------------
正在安装 Python 依赖...
Python 依赖安装完成

...

=========================================
初始化完成!
=========================================

使用说明:
启动服务: ./scripts/start-all.sh
停止服务: ./scripts/stop-all.sh
检查服务状态: ./scripts/status.sh

start-all.sh - 启动本地服务​

一键启动所有本地开发服务(4 个进程)。启动前需先通过 docker-services.sh 启动 MySQL + Milvus + MinIO 基础设施。

使用方法​

chmod +x scripts/start-all.sh

# 先启动 Docker 基础设施
./scripts/docker-services.sh start

# 启动应用
./scripts/start-all.sh

启动的服务​

服务端口日志文件
mgagent-backend8000mgagent-backend/backend.log
mgagent-admin-backend8001mgagent-admin-backend/admin-backend.log
mgagent-frontend5173mgagent-frontend/frontend.log
mgagent-admin-frontend5174mgagent-admin-frontend/admin-frontend.log

特点​

  • 自动停止已运行的服务
  • 使用 nohup 后台运行
  • 记录 PID 到 .pids/ 目录
  • 启动后验证端口监听状态
  • 显示访问地址

输出示例​

=========================================
MGAgent 一键启动脚本
=========================================

[0/4] 停止已运行的服务...
完成

[1/4] 启动 mgagent-backend (端口: 8000)
后端服务已启动 (PIDs: 12345)
日志文件: .../mgagent-backend/backend.log

...

=========================================
所有服务启动完成!
=========================================

服务地址:
- 核心前端: http://localhost:5173
- 核心后端: http://localhost:8000
- 管理台前端: http://localhost:5174
- 管理台后端: http://localhost:8001

stop-all.sh - 停止本地服务​

安全停止所有本地开发服务,支持优雅关闭和强制终止。

使用方法​

./scripts/stop-all.sh

停止策略​

脚本采用三步停止策略:

  1. 优雅停止:发送 SIGTERM 信号,等待 3 秒
  2. 强制终止:检查残留进程,发送 SIGKILL
  3. 清理验证:最终验证所有端口已释放

进程查找方式​

脚本通过多种方式查找需要终止的进程:

  • 从 PID 文件读取
  • 通过端口号查找
  • 通过命令名查找(vite / uvicorn)

输出示例​

[1/4] 停止 mgagent-backend
从PID文件找到进程: 12345
[步骤1] 优雅停止进程组: 12345
✓ mgagent-backend 已停止

...

验证服务状态:
✓ 端口 8000 已释放
✓ 端口 8001 已释放
✓ 端口 5173 已释放
✓ 端口 5174 已释放
所有端口已成功释放!

status.sh - 服务状态检查​

实时检查所有服务的运行状态和健康情况。

使用方法​

./scripts/status.sh

检查内容​

  • 进程状态:端口监听、PID 文件有效性
  • HTTP 访问:测试 API 健康检查端点
  • 磁盘使用:显示项目所在磁盘空间

输出示例​

--- 进程状态 ---

mgagent-backend:
✓ 端口 8000 正在监听
进程PID: 12345
- PID 12345: python3 -m uvicorn app.main:app

mgagent-admin-backend:
✓ 端口 8001 正在监听
...

--- 服务访问测试 ---

mgagent-backend:
✓ 可访问 (HTTP: 200)
URL: http://localhost:8000/api/health

--- 磁盘使用情况 ---
/dev/disk1s1 500Gi 200Gi 300Gi 40% /Users/xmg/...

deploy.sh - 生产部署​

一键 Docker 生产部署脚本,使用 docker-compose.prod.yml 编排所有服务(基础设施 + 应用层)。

使用方法​

# 添加执行权限
chmod +x scripts/deploy.sh

# 首次部署前,复制配置模板
cp .env.production.example .env.production
# 修改生产环境配置(密码、端口等)
vim .env.production

# 启动所有服务(自动构建镜像)
./scripts/deploy.sh up

# 停止所有服务
./scripts/deploy.sh down

# 重启所有服务
./scripts/deploy.sh restart

# 查看服务状态
./scripts/deploy.sh status

# 查看日志
./scripts/deploy.sh logs # 所有服务
./scripts/deploy.sh logs backend # 指定服务

# 重新构建镜像(不使用缓存)
./scripts/deploy.sh build

# 清理所有容器和数据卷(谨慎使用)
./scripts/deploy.sh cleanup

部署流程​

管理的服务​

服务端口说明
mgagent-frontend3000Chat 前端(Nginx)
mgagent-admin-frontend3001Admin 前端(Nginx)
mgagent-backend8000Chat API
mgagent-admin-backend8001Admin API
MySQL3306关系数据库
Milvus19530向量数据库
Attu8003Milvus 管理界面

特点​

  • 彩色输出,清晰易懂
  • 自动检查 Docker 环境和配置文件
  • 健康检查验证每个服务
  • 支持数据卷持久化
  • 一键清理所有资源(需确认)

输出示例​

=========================================
MGAgent 生产环境部署
=========================================

[1/5] 检查环境...
✓ Docker 环境正常
✓ 环境变量检查通过

[2/5] 启动 Docker Compose 服务...
[3/5] 等待服务就绪...
[4/5] 健康检查验证...
[5/5] 显示访问信息...

=========================================
所有服务已启动
=========================================

访问地址:
Chat 前端: http://localhost:3000
Admin 前端: http://localhost:3001
Chat API: http://localhost:8000/docs
Admin API: http://localhost:8001/docs
Attu UI: http://localhost:8003

docker-services.sh - 基础设施管理​

专门管理 MySQL + Milvus + MinIO 基础设施服务的脚本。

使用方法​

# 启动基础设施
./scripts/docker-services.sh start

# 停止基础设施
./scripts/docker-services.sh stop

# 重启基础设施
./scripts/docker-services.sh restart

# 查看状态
./scripts/docker-services.sh status

# 查看日志
./scripts/docker-services.sh logs

# 预热所有镜像
./scripts/docker-services.sh preload

# 配置国内镜像源
./scripts/docker-services.sh setup-mirror

# 检查镜像源配置
./scripts/docker-services.sh check-mirror

管理的服务​

服务说明
MySQL关系数据库
Milvus向量数据库
etcdMilvus 元数据存储
MinIOMilvus 对象存储
AttuMilvus 管理界面

镜像预热​

preload 命令会预热所有必要的 Docker 镜像:

./scripts/docker-services.sh preload

# 预热 MySQL + Milvus 相关镜像:
# mysql:8.0
# milvusdb/milvus:v2.4.12
# quay.io/coreos/etcd:v3.5.5
# minio/minio:RELEASE.2023-03-20T20-16-18Z
# zilliz/attu:v2.4

download_local_models.py - 本地 Embedding 模型下载​

用于在部署阶段预下载本地 Embedding 模型,避免在产品使用时下载导致卡顿。

使用方法​

cd mgagent-admin-backend

# 列出所有可用模型
python scripts/download_local_models.py --list

# 下载指定模型
python scripts/download_local_models.py --model bge-small-zh

# 下载多个模型(逗号分隔)
python scripts/download_local_models.py --models bge-small-zh,bge-large-zh

# 下载所有推荐模型
python scripts/download_local_models.py --all

# 指定缓存目录
python scripts/download_local_models.py --model bge-small-zh --cache-dir /opt/models/hf

# 以 JSON 格式输出模型列表
python scripts/download_local_models.py --list --json

支持的参数​

参数说明
--list列出所有可用模型
--model <ID>下载单个模型
--models <IDs>下载多个模型(逗号分隔)
--all下载所有推荐模型
--cache-dir <path>指定缓存目录(默认:~/.cache/huggingface)
--json以 JSON 格式输出列表

可用模型列表​

模型 ID模型名称维度大小说明
bge-small-zhBAAI/bge-small-zh-v1.5512~100MB轻量级,适合调试
bge-base-zhBAAI/bge-base-zh-v1.5768~400MB效果均衡
bge-large-zhBAAI/bge-large-zh-v1.51024~1.3GB最佳效果
bge-m3BAAI/bge-m31024~2.3GB中英双语
m3e-basemoka-ai/m3e-base768~400MB开源社区常用
m3e-largemoka-ai/m3e-large1024~1.3GB中文大模型
gte-base-zhthenlper/gte-base-zh768~400MB阿里达摩院
gte-large-zhthenlper/gte-large-zh1024~1.3GB阿里达摩院大模型
jina-embeddings-v2-base-zhjinaai/jina-embeddings-v2-base-zh768~400MBJina 出品
paraphrase-multilingualparaphrase-multilingual-MiniLM-L12-v2384~120MB多语言,体积最小

推荐选择​

场景推荐模型
调试开发bge-small-zh
小规模知识库 (<10万文档)bge-base-zh
生产环境 (10万+文档)bge-large-zh
中英文混合bge-m3
资源受限paraphrase-multilingual

输出示例​

======================================================================
可用的本地 Embedding 模型列表
======================================================================
ID 模型名称 维度 大小 语言
----------------------------------------------------------------------
bge-small-zh BAAI/bge-small-zh-v1.5 512 100 zh
bge-base-zh BAAI/bge-base-zh-v1.5 768 400 zh
...
----------------------------------------------------------------------

正在下载模型: BGE Small (中文轻量)
模型名称: BAAI/bge-small-zh-v1.5
向量维度: 512
模型大小: ~100MB

✅ 模型下载成功!
实际维度: 512

注意事项​

国内网络

国内网络环境下,脚本会自动使用 https://hf-mirror.com 镜像源加速下载。如需手动配置:

export HF_ENDPOINT=https://hf-mirror.com
依赖安装

首次使用前需安装 sentence-transformers 库:

pip install sentence-transformers
磁盘空间

下载模型需要预留足够磁盘空间,单个模型大小从 100MB 到 2.3GB 不等。

更多模型信息请参考 模型配置文档。

快速参考卡片​

# 首次使用
./scripts/init.sh

# 本地开发(需 Docker 基础设施)
./scripts/docker-services.sh start # 启动基础设施
./scripts/start-all.sh # 启动应用
./scripts/status.sh # 检查
./scripts/stop-all.sh # 停止应用
./scripts/docker-services.sh stop # 停止基础设施

# 生产环境部署
cp .env.production.example .env.production # 首次配置
./scripts/deploy.sh up # 启动所有服务
./scripts/deploy.sh down # 停止所有服务
./scripts/deploy.sh status # 查看状态
./scripts/deploy.sh logs # 查看日志
./scripts/deploy.sh restart # 重启

# 下载本地 Embedding 模型(部署时使用)
cd mgagent-admin-backend
python scripts/download_local_models.py --list # 列出可用模型
python scripts/download_local_models.py --model bge-small-zh # 下载指定模型

注意事项​

脚本权限

首次使用脚本前,需要添加执行权限:

chmod +x scripts/*.sh
路径自适配

所有脚本内部路径已实现自适配,无论在哪个目录执行都能正确定位项目根目录。

macOS 兼容性

docker-services.sh 已兼容 macOS 环境下 timeout 命令不可用的问题,使用 perl 作为替代方案。

相关文档​