#!/bin/bash # AI驱动的问题修复脚本 - 自动识别并解决问题 set -e # 配置 DEEPSEEK_API_KEY="你的DeepSeek_API密钥" LOG_FILE="/var/log/ai_fixer.log" TEMP_DIR="/tmp/ai_fixer" # 颜色定义 RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' # 初始化 init() { echo -e "${BLUE}🚀 AI驱动问题修复系统启动...${NC}" mkdir -p "$TEMP_DIR" sudo touch "$LOG_FILE" sudo chmod 644 "$LOG_FILE" log "系统初始化完成" } # 日志记录 log() { local message="$1" echo "$(date '+%Y-%m-%d %H:%M:%S') - $message" | sudo tee -a "$LOG_FILE" echo -e "${BLUE}[AI修复]${NC} $message" } # 调用DeepSeek API call_ai() { local context="$1" local problem="$2" log "咨询AI助手解决问题: $problem" # 构建API请求 local api_response=$(curl -s -X POST "https://api.deepseek.com/v1/chat/completions" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $DEEPSEEK_API_KEY" \ -d '{ "model": "deepseek-coder", "messages": [ { "role": "system", "content": "你是一个Linux系统和编程专家。请直接给出解决问题的具体命令或代码,用中文简要解释。当前系统:Debian Linux" }, { "role": "user", "content": "'"问题上下文: $context\n\n具体问题: $problem\n\n请提供具体的修复命令或脚本:"'" } ], "temperature": 0.3 }') # 提取AI回复 local ai_response=$(echo "$api_response" | grep -o '"content":"[^"]*"' | cut -d'"' -f4) if [ -z "$ai_response" ]; then echo "AI请求失败,使用备用方案" return 1 fi echo "$ai_response" } # 分析错误信息 analyze_error() { local error_output="$1" log "分析错误信息..." echo "$error_output" > "$TEMP_DIR/error.log" # 检测错误类型 if echo "$error_output" | grep -q "command not found"; then echo "Python脚本被当作bash执行" return 1 elif echo "$error_output" | grep -q "import.*command not found"; then echo "Python代码在bash中执行错误" return 2 elif echo "$error_output" | grep -q "syntax error"; then echo "语法错误" return 3 else echo "未知错误类型" return 4 fi } # 自动修复Python脚本问题 fix_python_script() { local script_url="$1" log "修复Python脚本: $script_url" # 下载脚本 local original_content=$(curl -sSL "$script_url") if [ -z "$original_content" ]; then log "下载脚本失败" return 1 fi echo "$original_content" > "$TEMP_DIR/original_script" # 分析问题并获取AI修复方案 local context="原始脚本内容:\n$original_content\n\n错误: Python代码被当作bash执行" local problem="这是一个Python脚本,但被用bash命令执行了,导致import等Python语句报错" local ai_solution=$(call_ai "$context" "$problem") if [ $? -eq 0 ]; then echo -e "${GREEN}🤖 AI修复方案:${NC}" echo "$ai_solution" echo "$ai_solution" > "$TEMP_DIR/ai_solution" # 执行AI的修复命令 execute_ai_solution "$ai_solution" else # 备用修复方案 backup_fix "$original_content" fi } # 执行AI的解决方案 execute_ai_solution() { local solution="$1" log "执行AI解决方案..." # 提取命令部分(假设AI返回中包含具体命令) local commands=$(echo "$solution" | grep -E "^(sudo |bash |python |curl |wget |apt)" || echo "$solution") # 执行每个找到的命令 while IFS= read -r line; do if [[ "$line" =~ ^(sudo|bash|python|curl|wget|apt|pip) ]]; then log "执行: $line" eval "$line" 2>&1 | sudo tee -a "$LOG_FILE" fi done <<< "$commands" } # 备用修复方案 backup_fix() { local original_content="$1" log "使用备用方案修复..." # 检测脚本类型 if echo "$original_content" | grep -q "#!/usr/bin/env python"; then echo -e "${YELLOW}检测到Python脚本,重新下载并正确执行...${NC}" # 下载为Python文件 curl -sSL "$script_url" -o "$TEMP_DIR/script.py" chmod +x "$TEMP_DIR/script.py" # 安装必要的Python依赖 sudo apt update sudo apt install -y python3 python3-pip # 尝试执行Python脚本 python3 "$TEMP_DIR/script.py" elif echo "$original_content" | grep -q "import.*"; then echo -e "${YELLOW}这明显是Python代码,创建正确的Python文件...${NC}" # 创建正确的Python脚本 cat > "$TEMP_DIR/fixed_script.py" << EOF #!/usr/bin/env python3 $original_content EOF chmod +x "$TEMP_DIR/fixed_script.py" python3 "$TEMP_DIR/fixed_script.py" else echo -e "${RED}无法自动识别脚本类型${NC}" return 1 fi } # 创建智能启动器 create_smart_launcher() { log "创建智能脚本启动器..." cat > /usr/local/bin/ai-run << 'EOF' #!/bin/bash # AI智能脚本启动器 - 自动识别脚本类型并正确执行 SCRIPT_URL="$1" TEMP_SCRIPT="/tmp/ai_script_$$" # 颜色定义 RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' echo -e "${BLUE}🤖 AI智能启动器运行中...${NC}" # 下载脚本 if ! curl -sSL "$SCRIPT_URL" -o "$TEMP_SCRIPT"; then echo -e "${RED}❌ 下载脚本失败${NC}" exit 1 fi # 检测脚本类型 detect_script_type() { local script_content=$(cat "$TEMP_SCRIPT") # 检查shebang if head -1 "$TEMP_SCRIPT" | grep -q "^#!/usr/bin/env python"; then echo "python" elif head -1 "$TEMP_SCRIPT" | grep -q "^#!/bin/bash"; then echo "bash" elif head -1 "$TEMP_SCRIPT" | grep -q "^#!/bin/sh"; then echo "shell" elif echo "$script_content" | grep -q "import.*"; then echo "python" elif echo "$script_content" | grep -q "def.*("; then echo "python" else echo "unknown" fi } SCRIPT_TYPE=$(detect_script_type) echo -e "${YELLOW}检测到脚本类型: $SCRIPT_TYPE${NC}" # 根据类型执行 case "$SCRIPT_TYPE" in "python") echo -e "${GREEN}执行Python脚本...${NC}" # 确保有Python环境 if ! command -v python3 &> /dev/null; then sudo apt update && sudo apt install -y python3 fi python3 "$TEMP_SCRIPT" ;; "bash"|"shell") echo -e "${GREEN}执行Bash脚本...${NC}" chmod +x "$TEMP_SCRIPT" bash "$TEMP_SCRIPT" ;; *) echo -e "${YELLOW}未知类型,尝试智能执行...${NC}" # 尝试作为bash执行 if bash -n "$TEMP_SCRIPT" 2>/dev/null; then echo -e "${GREEN}作为Bash脚本执行${NC}" chmod +x "$TEMP_SCRIPT" bash "$TEMP_SCRIPT" else echo -e "${GREEN}作为Python脚本执行${NC}" python3 "$TEMP_SCRIPT" fi ;; esac # 清理 rm -f "$TEMP_SCRIPT" EOF chmod +x /usr/local/bin/ai-run echo -e "${GREEN}✅ 智能启动器安装完成${NC}" echo -e "${YELLOW}使用方法: ai-run <脚本URL>${NC}" } # 主修复函数 main_fix() { local script_url="https://github.com/xzx3344521/dock/raw/refs/heads/main/ai" echo -e "${BLUE}🔍 开始分析问题...${NC}" log "目标脚本: $script_url" # 分析问题 analyze_error "Python脚本被当作bash执行,import语句报错" # 修复问题 fix_python_script "$script_url" # 创建智能启动器防止未来问题 create_smart_launcher echo -e "${GREEN}✅ 修复完成!${NC}" echo -e "${YELLOW}🎯 现在你可以使用: ai-run https://github.com/xzx3344521/dock/raw/refs/heads/main/ai${NC}" } # 显示使用说明 show_help() { echo -e "${GREEN}AI驱动问题修复系统${NC}" echo "使用方法:" echo " $0 fix - 修复当前问题" echo " $0 run - 智能运行脚本" echo " $0 help - 显示此帮助" } # 主程序 case "${1:-}" in "fix") init main_fix ;; "run") if [ -z "$2" ]; then echo "请提供脚本URL" exit 1 fi /usr/local/bin/ai-run "$2" ;; "help"|"") show_help ;; *) echo "未知命令: $1" show_help ;; esac