105 lines
2.5 KiB
Bash
105 lines
2.5 KiB
Bash
|
|
#!/bin/bash
|
||
|
|
|
||
|
|
# X-Agents 一键启动脚本
|
||
|
|
# 启动 Web、Go 后端、Python Agent 三个服务
|
||
|
|
|
||
|
|
set -e
|
||
|
|
|
||
|
|
# 颜色定义
|
||
|
|
RED='\033[0;31m'
|
||
|
|
GREEN='\033[0;32m'
|
||
|
|
YELLOW='\033[1;33m'
|
||
|
|
NC='\033[0m' # No Color
|
||
|
|
|
||
|
|
# 项目根目录
|
||
|
|
PROJECT_ROOT="$(cd "$(dirname "$0")" && pwd)"
|
||
|
|
cd "$PROJECT_ROOT"
|
||
|
|
|
||
|
|
echo -e "${GREEN}========================================${NC}"
|
||
|
|
echo -e "${GREEN} X-Agents 一键启动${NC}"
|
||
|
|
echo -e "${GREEN}========================================${NC}"
|
||
|
|
|
||
|
|
# 检查命令是否存在
|
||
|
|
check_command() {
|
||
|
|
if ! command -v $1 &> /dev/null; then
|
||
|
|
echo -e "${RED}错误: $1 未安装${NC}"
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
}
|
||
|
|
|
||
|
|
# 检查必要命令
|
||
|
|
check_command node
|
||
|
|
check_command go
|
||
|
|
check_command python3
|
||
|
|
|
||
|
|
# 启动 Go 后端
|
||
|
|
start_go_backend() {
|
||
|
|
echo -e "${YELLOW}[1/3] 启动 Go 后端服务...${NC}"
|
||
|
|
cd "$PROJECT_ROOT/../server/cmd/api"
|
||
|
|
go run main.go &
|
||
|
|
GO_PID=$!
|
||
|
|
echo -e "${GREEN}Go 后端已启动 (PID: $GO_PID)${NC}"
|
||
|
|
sleep 2
|
||
|
|
}
|
||
|
|
|
||
|
|
# 启动 Python Agent
|
||
|
|
start_python_agent() {
|
||
|
|
echo -e "${YELLOW}[2/3] 启动 Python Agent 服务...${NC}"
|
||
|
|
cd "$PROJECT_ROOT/core/agents"
|
||
|
|
if [ -d "venv" ]; then
|
||
|
|
source venv/bin/activate
|
||
|
|
fi
|
||
|
|
python main.py &
|
||
|
|
PYTHON_PID=$!
|
||
|
|
echo -e "${GREEN}Python Agent 已启动 (PID: $PYTHON_PID)${NC}"
|
||
|
|
sleep 2
|
||
|
|
}
|
||
|
|
|
||
|
|
# 启动 Web 前端
|
||
|
|
start_web_frontend() {
|
||
|
|
echo -e "${YELLOW}[3/3] 启动 Web 前端...${NC}"
|
||
|
|
cd "$PROJECT_ROOT/../web"
|
||
|
|
npm run dev &
|
||
|
|
WEB_PID=$!
|
||
|
|
echo -e "${GREEN}Web 前端已启动 (PID: $WEB_PID)${NC}"
|
||
|
|
sleep 3
|
||
|
|
}
|
||
|
|
|
||
|
|
# 打印访问地址
|
||
|
|
print_info() {
|
||
|
|
echo -e ""
|
||
|
|
echo -e "${GREEN}========================================${NC}"
|
||
|
|
echo -e "${GREEN} 所有服务已启动!${NC}"
|
||
|
|
echo -e "${GREEN}========================================${NC}"
|
||
|
|
echo -e " Web 前端: ${GREEN}http://localhost:5173${NC}"
|
||
|
|
echo -e " Go 后端: ${GREEN}http://localhost:8080${NC}"
|
||
|
|
echo -e " Python: ${GREEN}http://localhost:8001${NC}"
|
||
|
|
echo -e ""
|
||
|
|
echo -e "按 ${RED}Ctrl+C${NC} 停止所有服务"
|
||
|
|
echo -e ""
|
||
|
|
}
|
||
|
|
|
||
|
|
# 清理函数
|
||
|
|
cleanup() {
|
||
|
|
echo -e "\n${YELLOW}正在停止所有服务...${NC}"
|
||
|
|
if [ ! -z "$GO_PID" ]; then kill $GO_PID 2>/dev/null || true; fi
|
||
|
|
if [ ! -z "$PYTHON_PID" ]; then kill $PYTHON_PID 2>/dev/null || true; fi
|
||
|
|
if [ ! -z "$WEB_PID" ]; then kill $WEB_PID 2>/dev/null || true; fi
|
||
|
|
echo -e "${GREEN}所有服务已停止${NC}"
|
||
|
|
exit 0
|
||
|
|
}
|
||
|
|
|
||
|
|
# 捕获 Ctrl+C
|
||
|
|
trap cleanup SIGINT
|
||
|
|
|
||
|
|
# 启动服务
|
||
|
|
start_go_backend
|
||
|
|
start_python_agent
|
||
|
|
start_web_frontend
|
||
|
|
|
||
|
|
# 打印信息
|
||
|
|
print_info
|
||
|
|
|
||
|
|
# 等待
|
||
|
|
wait
|