#!/bin/bash # SenSu 无头启动脚本 (Linux/macOS/Termux) # 自动检测依赖完整性后启动 set -e SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" cd "$SCRIPT_DIR" # ── 颜色 ── RED='\033[31m'; GREEN='\033[32m'; YELLOW='\033[33m'; NC='\033[0m' pass=0; fail=0 check() { if command -v "$1" &>/dev/null || python3 -c "$2" 2>/dev/null; then echo -e " ${GREEN}✓${NC} $3" pass=$((pass+1)) else echo -e " ${RED}✗${NC} $3 ${YELLOW}(缺失)${NC}" fail=$((fail+1)) fi } echo "🐱 SenSu 依赖检测..." echo "" # ── 系统依赖 ── check "python3" "" "Python 3.11+" python3 -c "import sys; assert sys.version_info >= (3,11)" 2>/dev/null || { echo -e " ${YELLOW}⚠ Python 版本过低,需要 3.11+${NC}" fail=$((fail+1)) } # ── Python 核心依赖 ── check "" "import aiohttp" "aiohttp (Web 服务)" check "" "import yaml" "PyYAML (配置文件)" check "" "import textual" "Textual (TUI)" check "" "import watchdog" "watchdog (热重载)" check "" "import psutil" "psutil (系统监控)" check "" "import rich" "rich (终端美化)" # ── 配置文件 ── if [ -f "config/framework/base_config.yaml" ]; then echo -e " ${GREEN}✓${NC} base_config.yaml" pass=$((pass+1)) elif [ -f "config/framework/base_config.yaml.example" ]; then cp config/framework/base_config.yaml.example config/framework/base_config.yaml echo -e " ${GREEN}✓${NC} 从模板创建 base_config.yaml" pass=$((pass+1)) else echo -e " ${RED}✗${NC} 配置文件缺失 (无模板可用)" fail=$((fail+1)) fi echo "" if [ "$fail" -gt 0 ]; then echo -e "${RED}❌ $fail 项缺失,请先安装: pip install -r requirements.txt${NC}" exit 1 fi echo -e "${GREEN}✅ 所有依赖就绪 ($pass 项)${NC}" echo "" echo "🚀 启动 SenSu (无头模式)..." echo " Web 面板: http://0.0.0.0:4200/SenSu" echo "" python3 main.py --headless