#!/bin/bash # 真正的AI驱动问题解决脚本 # 完全交给AI操作,自动识别和修复问题 set -e # 配置 DEEPSEEK_API_KEY="sk-your-api-key-here" # 请替换为你的真实API密钥 LOG_FILE="/tmp/ai_solver.log" # 颜色定义 RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' # 日志函数 log() { echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" >> "$LOG_FILE" echo -e "${BLUE}[AI助手]${NC} $1" } # 调用AI分析问题 ask_ai() { local problem="$1" local context="$2" log "🤖 咨询AI解决方案: $problem" # 准备API请求 local request_data=$(cat << EOF { "model": "deepseek-coder", "messages": [ { "role": "system", "content": "你是一个Linux系统和脚本问题专家。用户遇到了脚本执行问题,请直接给出具体的修复命令。用中文回答,要具体可执行。" }, { "role": "user", "content": "问题:$problem\n\n上下文:$context\n\n请直接给出需要执行的Linux命令:" } ], "temperature": 0.3, "max_tokens": 1000 } EOF ) # 调用API local response=$(curl -s -X POST "https://api.deepseek.com/v1/chat/completions" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $DEEPSEEK_API_KEY" \ -d "$request_data" || echo "AI请求失败") # 提取回复 local answer=$(echo "$response" | grep -o '"content":"[^"]*"' | cut -d'"' -f4) if [ -z "$answer" ] || [ "$answer" = "AI请求失败" ]; then echo "备用方案:检测到脚本执行问题,将采用本地修复方案" return 1 fi echo "$answer" } # 执行AI命令 execute_ai_command() { local command="$1" local description="$2" log "执行: $description" log "命令: $command" echo -e "${YELLOW}▶️ 执行: $command${NC}" # 执行命令 eval "$command" 2>&1 | while IFS= read -r line; do echo " $line" echo "$line" >> "$LOG_FILE" done local exit_code=${PIPESTATUS[0]} return $exit_code } # 分析当前问题 analyze_current_problem() { log "分析当前系统问题..." # 收集系统信息 local system_info=$(uname -a) local os_info=$(cat /etc/os-release 2>/dev/null || echo "Unknown OS") local python_version=$(python3 --version 2>/dev/null || echo "Python not installed") local bash_version=$(bash --version | head -1) # 测试脚本URL local test_url="https://github.com/xzx3344521/dock/raw/refs/heads/main/ai" local script_content=$(curl -sSL "$test_url" 2>/dev/null || echo "下载失败") local problem_context="系统信息: $system_info OS信息: $os_info Python版本: $python_version Bash版本: $bash_version 脚本URL: $test_url 脚本内容前几行: $(echo "$script_content" | head -10) 错误现象: 脚本内容被直接显示而不是执行,出现 'command not found' 错误" echo "$problem_context" } # 主要修复函数 main_repair() { echo -e "${GREEN}🚀 启动AI问题修复系统...${NC}" echo -e "${YELLOW}⚠️ 全程交给AI操作,请勿中断...${NC}" # 分析问题 local problem_context=$(analyze_current_problem) local problem_description="用户尝试执行远程脚本但失败,脚本内容被显示而不是执行,出现命令未找到错误" log "问题描述: $problem_description" # 询问AI解决方案 local ai_solution=$(ask_ai "$problem_description" "$problem_context") if [ $? -ne 0 ] || [ -z "$ai_solution" ]; then # AI调用失败,使用备用方案 backup_solution return fi echo -e "${GREEN}🤖 AI提供的解决方案:${NC}" echo "$ai_solution" echo "" # 提取并执行命令 execute_ai_commands "$ai_solution" } # 执行AI返回的命令 execute_ai_commands() { local solution="$1" # 提取看起来像命令的行 echo -e "${YELLOW}🔧 开始执行修复命令...${NC}" while IFS= read -r line; do # 跳过空行和注释 if [[ -z "$line" || "$line" =~ ^# ]]; then continue fi # 识别命令(以sudo, apt, curl, wget, python, bash等开头) if [[ "$line" =~ ^(sudo\s+|apt\s+|curl\s+|wget\s+|python|bash\s+|chmod\s+|mkdir\s+|cd\s+|echo\s+) ]]; then log "执行AI命令: $line" execute_ai_command "$line" "AI修复命令" fi done <<< "$solution" } # 备用解决方案 backup_solution() { echo -e "${YELLOW}🔧 使用备用修复方案...${NC}" # 1. 直接下载脚本分析 execute_ai_command "curl -sSL -o /tmp/analyze_script.py 'https://github.com/xzx3344521/dock/raw/refs/heads/main/ai'" "下载问题脚本" # 2. 检查脚本类型 execute_ai_command "file /tmp/analyze_script.py" "检查脚本类型" execute_ai_command "head -5 /tmp/analyze_script.py" "查看脚本开头" # 3. 安装必要的工具 execute_ai_command "sudo apt update && sudo apt install -y python3 python3-pip curl wget" "安装基础工具" # 4. 根据脚本类型执行 if head -1 /tmp/analyze_script.py 2>/dev/null | grep -q "python"; then execute_ai_command "python3 /tmp/analyze_script.py" "执行Python脚本" else execute_ai_command "bash /tmp/analyze_script.py" "执行Bash脚本" fi } # 创建智能脚本运行器 create_smart_runner() { echo -e "${GREEN}🔧 创建智能脚本运行器...${NC}" cat > /usr/local/bin/ai-run << 'EOF' #!/bin/bash # AI智能脚本运行器 URL="$1" TEMP_SCRIPT="/tmp/smart_script_$$" if [ -z "$URL" ]; then echo "使用方法: ai-run <脚本URL>" exit 1 fi echo "🤖 AI智能运行器正在处理: $URL" # 下载脚本 if ! curl -sSL "$URL" -o "$TEMP_SCRIPT"; then echo "❌ 下载失败" exit 1 fi # 检测并执行 if head -1 "$TEMP_SCRIPT" | grep -q "python"; then echo "🐍 检测到Python脚本,使用Python执行..." python3 "$TEMP_SCRIPT" elif head -1 "$TEMP_SCRIPT" | grep -q "bash"; then echo "💻 检测到Bash脚本,使用Bash执行..." bash "$TEMP_SCRIPT" else echo "🔍 自动检测脚本类型..." # 尝试Python if python3 -m py_compile "$TEMP_SCRIPT" 2>/dev/null; then echo "🐍 作为Python脚本执行" python3 "$TEMP_SCRIPT" else echo "💻 作为Bash脚本执行" bash "$TEMP_SCRIPT" fi fi # 清理 rm -f "$TEMP_SCRIPT" EOF chmod +x /usr/local/bin/ai-run echo -e "${GREEN}✅ 智能运行器安装完成! 使用: ai-run ${NC}" } # 显示状态 show_status() { echo -e "${GREEN}📊 系统状态${NC}" echo "日志文件: $LOG_FILE" echo "临时目录: /tmp/" echo "智能运行器: $(which ai-run 2>/dev/null || echo '未安装')" } # 主程序 case "${1:-}" in "fix") main_repair ;; "runner") create_smart_runner ;; "status") show_status ;; "log") cat "$LOG_FILE" ;; *) echo -e "${GREEN}AI驱动问题解决系统${NC}" echo "使用方法:" echo " $0 fix - AI自动修复问题" echo " $0 runner - 安装智能脚本运行器" echo " $0 status - 查看系统状态" echo " $0 log - 查看日志" echo "" echo "当前问题: 远程脚本执行失败,内容被显示而不是执行" echo "解决方案: 运行 '$0 fix' 让AI自动修复" ;; esac