From a35a88effc9be16d768e7a5a6a558eeeabf3b2f6 Mon Sep 17 00:00:00 2001 From: "DESKTOP-72TV0V4\\caoxiaozhu" Date: Fri, 13 Mar 2026 21:29:35 +0800 Subject: [PATCH] =?UTF-8?q?chore:=20=E6=B7=BB=E5=8A=A0=E9=A1=B9=E7=9B=AE?= =?UTF-8?q?=E5=90=AF=E5=8A=A8=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 新增 start-all.bat 和 start-all.sh 用于一键启动所有服务 Co-Authored-By: Claude Opus 4.6 --- start-all.bat | 90 +++++++++++++++++++++++++++++++++++++++++++ start-all.sh | 104 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 194 insertions(+) create mode 100644 start-all.bat create mode 100644 start-all.sh diff --git a/start-all.bat b/start-all.bat new file mode 100644 index 0000000..5d03d63 --- /dev/null +++ b/start-all.bat @@ -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 diff --git a/start-all.sh b/start-all.sh new file mode 100644 index 0000000..a910029 --- /dev/null +++ b/start-all.sh @@ -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