chore: 添加项目启动脚本
新增 start-all.bat 和 start-all.sh 用于一键启动所有服务 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
90
start-all.bat
Normal file
90
start-all.bat
Normal file
@@ -0,0 +1,90 @@
|
||||
@echo off
|
||||
chcp 65001 >nul
|
||||
color 0a
|
||||
|
||||
echo ========================================
|
||||
echo X-Agents 一键启动
|
||||
echo ========================================
|
||||
echo.
|
||||
|
||||
REM 使用绝对路径
|
||||
set "PROJECT_ROOT=D:\Code\Project\X-Agents"
|
||||
set "AGENTS_DIR=%PROJECT_ROOT%\core\agents"
|
||||
set "VENV_DIR=%AGENTS_DIR%\venv"
|
||||
|
||||
echo 项目根目录: %PROJECT_ROOT%
|
||||
echo.
|
||||
|
||||
REM ========================================
|
||||
REM 第一步:杀死所有占用端口的进程
|
||||
REM ========================================
|
||||
echo.
|
||||
echo [0/4] 清理占用端口的进程...
|
||||
|
||||
REM 查找并杀死占用 8082 端口的进程 (Go)
|
||||
for /f "tokens=5" %%a in ('netstat -ano ^| findstr ":8082.*LISTENING"') do (
|
||||
echo 杀死进程 %%a (端口 8082)
|
||||
taskkill //F //PID %%a >nul 2>&1
|
||||
)
|
||||
|
||||
REM 查找并杀死占用 8001 端口的进程 (Python)
|
||||
for /f "tokens=5" %%a in ('netstat -ano ^| findstr ":8001.*LISTENING"') do (
|
||||
echo 杀死进程 %%a (端口 8001)
|
||||
taskkill //F //PID %%a >nul 2>&1
|
||||
)
|
||||
|
||||
REM 查找并杀死占用 5173 端口的进程 (Web)
|
||||
for /f "tokens=5" %%a in ('netstat -ano ^| findstr ":5173.*LISTENING"') do (
|
||||
echo 杀死进程 %%a (端口 5173)
|
||||
taskkill //F //PID %%a >nul 2>&1
|
||||
)
|
||||
|
||||
echo 端口清理完成
|
||||
echo.
|
||||
|
||||
REM 等待端口释放
|
||||
timeout /t 2 /nobreak >nul
|
||||
|
||||
REM 检查并创建虚拟环境
|
||||
echo [1/4] 检查虚拟环境...
|
||||
if not exist "%VENV_DIR%\Scripts\python.exe" (
|
||||
echo 创建虚拟环境...
|
||||
python -m venv "%VENV_DIR%"
|
||||
echo 安装依赖...
|
||||
"%VENV_DIR%\Scripts\pip.exe" install --upgrade pip
|
||||
"%VENV_DIR%\Scripts\pip.exe" install -r "%AGENTS_DIR%\requirements.txt"
|
||||
) else (
|
||||
echo 虚拟环境已存在,跳过创建
|
||||
)
|
||||
|
||||
REM 启动 Go 后端
|
||||
echo [2/4] 启动 Go 后端服务...
|
||||
start "Go Backend" cmd /k "cd /d "%PROJECT_ROOT%\server\cmd\api" && go run main.go"
|
||||
|
||||
REM 等待
|
||||
timeout /t 3 /nobreak >nul
|
||||
|
||||
REM 启动 Python Agent (使用虚拟环境)
|
||||
echo [3/4] 启动 Python Agent 服务...
|
||||
start "Python Agent" cmd /k "cd /d "%PROJECT_ROOT%\core" && set "PYTHONPATH=%PROJECT_ROOT%\core" && "%VENV_DIR%\Scripts\python.exe" -m agents.main"
|
||||
|
||||
REM 等待
|
||||
timeout /t 3 /nobreak >nul
|
||||
|
||||
REM 启动 Web 前端
|
||||
echo [4/4] 启动 Web 前端...
|
||||
start "Web Frontend" cmd /k "cd /d "%PROJECT_ROOT%\web" && npm run dev"
|
||||
|
||||
echo.
|
||||
echo ========================================
|
||||
echo 所有服务已启动!
|
||||
echo ========================================
|
||||
echo.
|
||||
echo 请检查各终端窗口是否正常启动
|
||||
echo.
|
||||
echo Web 前端: http://localhost:5173
|
||||
echo Go 后端: http://localhost:8082
|
||||
echo Python: http://localhost:8001
|
||||
echo.
|
||||
echo 按任意键退出(服务继续在后台运行)...
|
||||
pause >nul
|
||||
104
start-all.sh
Normal file
104
start-all.sh
Normal file
@@ -0,0 +1,104 @@
|
||||
#!/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
|
||||
Reference in New Issue
Block a user