#!/bin/bash # ============================================================================= # AI Agent 启动与管理脚本 - 简化版 # 用法: ./scripts/start.sh [check|backend|frontend|both] # ============================================================================= set -e # 颜色定义 GREEN='\033[0;32m' BLUE='\033[0;34m' RED='\033[0;31m' YELLOW='\033[1;33m' NC='\033[0m' # No Color # 项目根目录 PROJECT_DIR="/root/projects/ailine" echo -e "${BLUE}========================================${NC}" echo -e "${BLUE} AI Agent - 个人生活助手${NC}" echo -e "${BLUE}========================================${NC}" echo "" # ============================================================================= # 启动 Python 服务 # ============================================================================= start_backend() { echo -e "\n${BLUE}🚀 启动后端服务 (端口 10079)...${NC}" cd "$PROJECT_DIR" # 加载 .env 文件中的环境变量 set -a source .env 2>/dev/null || true set +a export PYTHONPATH="$PROJECT_DIR/backend" export BACKEND_PORT=10079 python -m app.backend & BACKEND_PID=$! echo -e "${GREEN}✓ 后端服务已启动 (PID: $BACKEND_PID)${NC}" sleep 2 } start_frontend() { echo -e "\n${BLUE}🎨 启动前端界面 (端口 10501)...${NC}" cd "$PROJECT_DIR" # 加载 .env 文件中的环境变量 set -a source .env 2>/dev/null || true set +a export PYTHONPATH="$PROJECT_DIR/frontend/src" export API_URL="http://127.0.0.1:10079/chat" streamlit run frontend/src/frontend_main.py --server.port 10501 --server.address 0.0.0.0 & FRONTEND_PID=$! echo -e "${GREEN}✓ 前端服务已启动 (PID: $FRONTEND_PID)${NC}" echo -e "${GREEN}✓ 访问地址:${NC}" echo -e " 本地开发: http://127.0.0.1:10501" } # ============================================================================= # 清理函数 # ============================================================================= cleanup() { echo -e "\n${RED}🛑 正在停止 Python 服务...${NC}" if [ ! -z "$BACKEND_PID" ]; then kill $BACKEND_PID 2>/dev/null || true echo -e "${GREEN}✓ 后端服务已停止${NC}" fi if [ ! -z "$FRONTEND_PID" ]; then kill $FRONTEND_PID 2>/dev/null || true echo -e "${GREEN}✓ 前端服务已停止${NC}" fi exit 0 } # 捕获 Ctrl+C trap cleanup SIGINT SIGTERM # ============================================================================= # 主逻辑 # ============================================================================= case "${1:-help}" in backend) start_backend echo -e "\n${GREEN}后端服务正在运行,按 Ctrl+C 停止${NC}" wait $BACKEND_PID ;; frontend) start_frontend echo -e "\n${GREEN}前端服务正在运行,按 Ctrl+C 停止${NC}" wait $FRONTEND_PID ;; both) start_backend sleep 3 start_frontend echo -e "\n${GREEN}所有服务正在运行,按 Ctrl+C 停止${NC}" wait ;; help|*) echo -e "${BLUE}用法:${NC} $0 [command]" echo "" echo -e "${BLUE}命令:${NC}" echo " backend 仅启动后端服务" echo " frontend 仅启动前端服务" echo " both 启动前后端服务(默认)" echo " help 显示此帮助信息" echo "" echo -e "${BLUE}示例:${NC}" echo " $0 both # 启动本地开发环境" ;; esac