Update ai

This commit is contained in:
2025-11-03 18:12:39 +08:00
committed by GitHub
parent 615fb9b6ba
commit 17cec702eb

318
ai
View File

@@ -1,25 +1,58 @@
#!/bin/bash
# 真正的AI驱动问题解决脚本
# 完全交给AI操作自动识别和修复问题
# 交互式AI驱动问题修复系统
# 让用户清楚知道运行状态和位置
set -e
# 配置
DEEPSEEK_API_KEY="sk-your-api-key-here" # 请替换为你的真实API密钥
LOG_FILE="/tmp/ai_solver.log"
SCRIPT_NAME="interactive_ai_fixer.sh"
INSTALL_DIR="/usr/local/bin"
LOG_FILE="/var/log/ai_interactive_fixer.log"
# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
PURPLE='\033[0;35m'
CYAN='\033[0;36m'
NC='\033[0m'
# 显示运行位置和状态
show_status() {
echo -e "${PURPLE}"
echo "╔══════════════════════════════════════════════════╗"
echo "║ AI驱动交互式修复系统 ║"
echo "╠══════════════════════════════════════════════════╣"
echo "║ 运行位置: $(pwd) ║"
echo "║ 脚本名称: $0 ║"
echo "║ 系统时间: $(date) ║"
echo "║ 当前用户: $(whoami) ║"
echo "║ 系统信息: $(uname -srm) ║"
echo "╚══════════════════════════════════════════════════╝"
echo -e "${NC}"
echo ""
}
# 日志函数
log() {
echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" >> "$LOG_FILE"
echo -e "${BLUE}[AI助手]${NC} $1"
local message="$1"
echo "$(date '+%Y-%m-%d %H:%M:%S') - $message" | sudo tee -a "$LOG_FILE"
echo -e "${BLUE}[AI系统]${NC} $message"
}
# 进度显示函数
show_progress() {
local step="$1"
local total="$2"
local message="$3"
local percent=$((step * 100 / total))
echo -e "${CYAN}📊 进度: [$step/$total] $message...${NC}"
echo -e "${YELLOW} ▰▰▰▰▰▰▰▰▰▰ $percent% 完成${NC}"
echo ""
}
# 调用AI分析问题
@@ -28,6 +61,7 @@ ask_ai() {
local context="$2"
log "🤖 咨询AI解决方案: $problem"
echo -e "${CYAN}🔄 正在连接AI助手分析问题...${NC}"
# 准备API请求
local request_data=$(cat << EOF
@@ -50,104 +84,131 @@ EOF
)
# 调用API
echo -e "${YELLOW}📡 发送请求到AI服务器...${NC}"
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请求失败")
-d "$request_data" 2>/dev/null || echo "AI请求失败")
# 提取回复
local answer=$(echo "$response" | grep -o '"content":"[^"]*"' | cut -d'"' -f4)
if [ -z "$answer" ] || [ "$answer" = "AI请求失败" ]; then
echo "备用方案:检测到脚本执行问题,将采用本地修复方案"
echo -e "${RED}❌ AI连接失败使用备用方案${NC}"
return 1
fi
echo -e "${GREEN}✅ AI回复接收成功${NC}"
echo "$answer"
}
# 执行AI命令
execute_ai_command() {
# 执行命令并显示结果
execute_command() {
local command="$1"
local description="$2"
log "执行: $description"
log "命令: $command"
echo -e "${YELLOW}▶️ 执行: $command${NC}"
echo -e "${BLUE}📝 描述: $description${NC}"
# 显示执行开始时间
local start_time=$(date +%s)
# 执行命令
echo -e "${CYAN}────────────────────────────────────────────${NC}"
eval "$command" 2>&1 | while IFS= read -r line; do
echo " $line"
echo "$line" >> "$LOG_FILE"
echo " 📋 $line"
done
echo -e "${CYAN}────────────────────────────────────────────${NC}"
local exit_code=${PIPESTATUS[0]}
local end_time=$(date +%s)
local duration=$((end_time - start_time))
if [ $exit_code -eq 0 ]; then
echo -e "${GREEN}✅ 执行成功 (耗时: ${duration}s)${NC}"
else
echo -e "${RED}❌ 执行失败 (退出码: $exit_code, 耗时: ${duration}s)${NC}"
fi
echo ""
return $exit_code
}
# 分析当前问题
analyze_current_problem() {
log "分析当前系统问题..."
analyze_problem() {
show_progress 1 5 "分析系统环境"
echo -e "${PURPLE}🔍 开始系统分析...${NC}"
# 收集系统信息
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)
execute_command "uname -a" "获取系统内核信息"
execute_command "cat /etc/os-release" "获取操作系统信息"
execute_command "python3 --version 2>/dev/null || echo 'Python3 未安装'" "检查Python环境"
execute_command "bash --version | head -1" "检查Bash版本"
# 测试脚本URL
show_progress 2 5 "测试问题脚本"
# 测试问题脚本
local test_url="https://github.com/xzx3344521/dock/raw/refs/heads/main/ai"
echo -e "${CYAN}🌐 测试问题脚本URL: $test_url${NC}"
execute_command "curl -s -I '$test_url' | head -1" "检查URL可访问性"
local script_content=$(curl -sSL "$test_url" 2>/dev/null || echo "下载失败")
echo -e "${YELLOW}📄 脚本内容预览:${NC}"
echo "$script_content" | head -10 | while IFS= read -r line; do
echo " 📃 $line"
done
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' 错误"
local problem_context="系统分析完成,检测到远程脚本执行问题"
echo "$problem_context"
}
# 主要修复函数
# 主要修复流程
main_repair() {
echo -e "${GREEN}🚀 启动AI问题修复系统...${NC}"
echo -e "${YELLOW}⚠️ 全程交给AI操作请勿中断...${NC}"
show_status
echo -e "${GREEN}🚀 启动AI自动修复流程...${NC}"
echo -e "${YELLOW}⚠️ 注意: 整个流程将由AI自动控制${NC}"
echo ""
# 分析问题
local problem_context=$(analyze_current_problem)
local problem_description="用户尝试执行远程脚本失败,脚本内容被显示而不是执行,出现命令未找到错误"
local problem_context=$(analyze_problem)
local problem_description="用户执行远程脚本失败,脚本内容被显示而不是执行,出现命令未找到错误"
log "问题描述: $problem_description"
show_progress 3 5 "咨询AI解决方案"
# 询问AI解决方案
echo -e "${PURPLE}🤖 正在咨询AI助手...${NC}"
local ai_solution=$(ask_ai "$problem_description" "$problem_context")
if [ $? -ne 0 ] || [ -z "$ai_solution" ]; then
# AI调用失败,使用备用方案
echo -e "${RED}❌ AI咨询失败,用备用方案${NC}"
backup_solution
return
fi
show_progress 4 5 "执行AI方案"
echo -e "${GREEN}🤖 AI提供的解决方案:${NC}"
echo "$ai_solution"
echo -e "${CYAN}$ai_solution${NC}"
echo ""
# 提取并执行命令
# 执行AI命令
execute_ai_commands "$ai_solution"
show_progress 5 5 "完成修复"
echo -e "${GREEN}🎉 AI修复流程完成${NC}"
}
# 执行AI返回的命令
execute_ai_commands() {
local solution="$1"
local command_count=0
# 提取看起来像命令的行
echo -e "${YELLOW}🔧 开始执行修复命令...${NC}"
echo -e "${PURPLE}🔧 开始执行AI建议的命令...${NC}"
while IFS= read -r line; do
# 跳过空行和注释
@@ -155,118 +216,127 @@ execute_ai_commands() {
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修复命令"
# 识别命令
if [[ "$line" =~ ^(sudo\s+|apt\s+|curl\s+|wget\s+|python|bash\s+|chmod\s+|mkdir\s+|cd\s+|echo\s+|pip\s+) ]]; then
command_count=$((command_count + 1))
execute_command "$line" "AI建议命令 #$command_count"
fi
done <<< "$solution"
echo -e "${GREEN}✅ 共执行了 $command_count 个AI命令${NC}"
}
# 备用解决方案
backup_solution() {
echo -e "${YELLOW}🔧 使用备用修复方案...${NC}"
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'" "下载问题脚本"
show_progress 1 3 "下载和分析脚本"
execute_command "curl -sSL -o /tmp/problem_script 'https://github.com/xzx3344521/dock/raw/refs/heads/main/ai'" "下载问题脚本"
execute_command "file /tmp/problem_script" "检测脚本类型"
execute_command "head -3 /tmp/problem_script" "查看脚本头部"
# 2. 检查脚本类型
execute_ai_command "file /tmp/analyze_script.py" "检查脚本类型"
execute_ai_command "head -5 /tmp/analyze_script.py" "查看脚本开头"
show_progress 2 3 "准备执行环境"
execute_command "sudo apt update" "更新软件包列表"
execute_command "sudo apt install -y python3 python3-pip curl wget file" "安装必要工具"
# 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脚本"
show_progress 3 3 "执行修复"
# 根据脚本类型执行
if head -1 /tmp/problem_script 2>/dev/null | grep -q "python"; then
execute_command "python3 /tmp/problem_script" "执行Python脚本"
else
execute_ai_command "bash /tmp/analyze_script.py" "执行Bash脚本"
execute_command "bash /tmp/problem_script" "执行Bash脚本"
fi
}
# 创建智能脚本运行器
create_smart_runner() {
echo -e "${GREEN}🔧 创建智能脚本运行器...${NC}"
# 安装为系统命令
install_systemwide() {
echo -e "${PURPLE}📥 安装到系统命令...${NC}"
cat > /usr/local/bin/ai-run << 'EOF'
#!/bin/bash
# AI智能脚本运行器
show_status
URL="$1"
TEMP_SCRIPT="/tmp/smart_script_$$"
execute_command "sudo cp '$0' '$INSTALL_DIR/ai-fix'" "复制脚本到系统目录"
execute_command "sudo chmod +x '$INSTALL_DIR/ai-fix'" "设置执行权限"
execute_command "sudo chown root:root '$INSTALL_DIR/ai-fix'" "设置所有权"
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 <URL>${NC}"
echo -e "${GREEN}✅ 安装完成!现在你可以使用以下命令:${NC}"
echo -e "${CYAN} ai-fix repair - AI修复问题${NC}"
echo -e "${CYAN} ai-fix status - 显示状态${NC}"
echo -e "${CYAN} ai-fix log - 查看日志${NC}"
}
# 显示状态
show_status() {
echo -e "${GREEN}📊 系统状态${NC}"
echo "日志文件: $LOG_FILE"
echo "临时目录: /tmp/"
echo "智能运行器: $(which ai-run 2>/dev/null || echo '未安装')"
# 交互式菜单
interactive_menu() {
while true; do
show_status
echo -e "${GREEN}请选择操作:${NC}"
echo -e "${CYAN}1. 🚀 AI自动修复问题${NC}"
echo -e "${CYAN}2. 📥 安装到系统命令${NC}"
echo -e "${CYAN}3. 📊 显示系统状态${NC}"
echo -e "${CYAN}4. 📋 查看执行日志${NC}"
echo -e "${CYAN}5. 🚪 退出${NC}"
echo ""
read -p "请输入选择 (1-5): " choice
case $choice in
1)
main_repair
;;
2)
install_systemwide
;;
3)
show_status
;;
4)
execute_command "cat '$LOG_FILE' | tail -20" "显示最近日志"
;;
5)
echo -e "${GREEN}👋 再见!${NC}"
exit 0
;;
*)
echo -e "${RED}❌ 无效选择,请重新输入${NC}"
;;
esac
echo ""
read -p "按回车键继续..."
clear
done
}
# 主程序
# 命令行参数处理
case "${1:-}" in
"fix")
"repair"|"fix")
main_repair
;;
"runner")
create_smart_runner
"install")
install_systemwide
;;
"status")
show_status
;;
"log")
cat "$LOG_FILE"
execute_command "cat '$LOG_FILE'" "显示完整日志"
;;
"menu"|"interactive")
interactive_menu
;;
*)
echo -e "${GREEN}AI驱动问题解决系统${NC}"
echo "使用方法:"
echo " $0 fix - AI自动修复问题"
echo " $0 runner - 安装智能脚本运行器"
echo " $0 status - 查看系统状态"
echo " $0 log - 查看日志"
echo -e "${GREEN}🤖 AI驱动交互式修复系统${NC}"
echo ""
echo "当前问题: 远程脚本执行失败,内容被显示而不是执行"
echo "解决方案: 运行 '$0 fix' 让AI自动修复"
echo -e "${CYAN}运行位置: $(pwd)${NC}"
echo -e "${CYAN}脚本路径: $0${NC}"
echo ""
echo -e "${YELLOW}使用方法:${NC}"
echo " $0 repair - 🚀 AI自动修复问题"
echo " $0 install - 📥 安装到系统命令"
echo " $0 status - 📊 显示系统状态"
echo " $0 log - 📋 查看执行日志"
echo " $0 menu - 🖥️ 交互式菜单"
echo ""
echo -e "${PURPLE}推荐使用: $0 menu 进入交互模式${NC}"
;;
esac