Files
ailine/scripts/start.sh

118 lines
3.5 KiB
Bash
Raw Normal View History

2026-04-13 19:49:18 +08:00
#!/bin/bash
2026-04-14 17:34:12 +08:00
# =============================================================================
# AI Agent 启动与管理脚本 - 简化版
# 用法: ./scripts/start.sh [check|backend|frontend|both]
2026-04-14 17:34:12 +08:00
# =============================================================================
2026-04-13 19:49:18 +08:00
set -e
# 颜色定义
GREEN='\033[0;32m'
BLUE='\033[0;34m'
RED='\033[0;31m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
2026-04-14 17:34:12 +08:00
# 项目根目录
PROJECT_DIR="/root/projects/ailine"
2026-04-14 17:34:12 +08:00
2026-04-13 19:49:18 +08:00
echo -e "${BLUE}========================================${NC}"
2026-04-14 17:34:12 +08:00
echo -e "${BLUE} AI Agent - 个人生活助手${NC}"
2026-04-13 19:49:18 +08:00
echo -e "${BLUE}========================================${NC}"
echo ""
2026-04-14 17:34:12 +08:00
# =============================================================================
# 启动 Python 服务
# =============================================================================
2026-04-13 19:49:18 +08:00
start_backend() {
echo -e "\n${BLUE}🚀 启动后端服务 (端口 10079)...${NC}"
2026-04-14 17:34:12 +08:00
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 &
2026-04-13 19:49:18 +08:00
BACKEND_PID=$!
echo -e "${GREEN}✓ 后端服务已启动 (PID: $BACKEND_PID)${NC}"
sleep 2
}
start_frontend() {
echo -e "\n${BLUE}🎨 启动前端界面 (端口 10501)...${NC}"
2026-04-14 17:34:12 +08:00
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 &
2026-04-13 19:49:18 +08:00
FRONTEND_PID=$!
echo -e "${GREEN}✓ 前端服务已启动 (PID: $FRONTEND_PID)${NC}"
2026-04-14 17:34:12 +08:00
echo -e "${GREEN}✓ 访问地址:${NC}"
echo -e " 本地开发: http://127.0.0.1:10501"
2026-04-13 19:49:18 +08:00
}
2026-04-14 17:34:12 +08:00
# =============================================================================
2026-04-13 19:49:18 +08:00
# 清理函数
2026-04-14 17:34:12 +08:00
# =============================================================================
2026-04-13 19:49:18 +08:00
cleanup() {
2026-04-14 17:34:12 +08:00
echo -e "\n${RED}🛑 正在停止 Python 服务...${NC}"
2026-04-13 19:49:18 +08:00
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
2026-04-14 17:34:12 +08:00
# =============================================================================
2026-04-13 19:49:18 +08:00
# 主逻辑
2026-04-14 17:34:12 +08:00
# =============================================================================
case "${1:-help}" in
2026-04-13 19:49:18 +08:00
backend)
start_backend
echo -e "\n${GREEN}后端服务正在运行,按 Ctrl+C 停止${NC}"
wait $BACKEND_PID
;;
2026-04-14 17:34:12 +08:00
2026-04-13 19:49:18 +08:00
frontend)
start_frontend
echo -e "\n${GREEN}前端服务正在运行,按 Ctrl+C 停止${NC}"
wait $FRONTEND_PID
;;
2026-04-14 17:34:12 +08:00
both)
2026-04-13 19:49:18 +08:00
start_backend
2026-04-17 01:26:05 +08:00
sleep 3
2026-04-13 19:49:18 +08:00
start_frontend
echo -e "\n${GREEN}所有服务正在运行,按 Ctrl+C 停止${NC}"
2026-04-13 19:49:18 +08:00
wait
;;
2026-04-14 17:34:12 +08:00
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 # 启动本地开发环境"
;;
2026-04-13 19:49:18 +08:00
esac