当前位置:首页>Linux>�� Linux + GPT系列模型 OpenClaw 一键部署脚本

�� Linux + GPT系列模型 OpenClaw 一键部署脚本

  • 2026-03-16 02:40:46
�� Linux + GPT系列模型 OpenClaw 一键部署脚本

📜 一键脚本:install-openclaw-gpt-linux.sh

#!/bin/bash# ====================================================# OpenClaw + GPT系列模型 Linux 一键部署脚本# 作者:AI Assistant# 版本:2.0# 说明:本脚本将自动安装OpenClaw并配置GPT模型# 支持:OpenAI API (GPT-4.5/5.4) 和 本地 GPT-OSS 模型# 支持发行版:Ubuntu/Debian/CentOS/Fedora/RHEL/Arch# ====================================================# 严格模式set -e# 颜色定义RED='\033[0;31m'GREEN='\033[0;32m'YELLOW='\033[1;33m'BLUE='\033[0;34m'CYAN='\033[0;36m'PURPLE='\033[0;35m'NC='\033[0m' # No ColorBOLD='\033[1m'# 全局变量SCRIPT_VERSION="2.0.0"INSTALL_LOG="/tmp/openclaw-gpt-install-$(date +%Y%m%d-%H%M%S).log"OPENCLAW_TOKEN=""OPENAI_API_KEY=""OS_TYPE=""OS_VERSION=""CPU_ARCH=""TOTAL_RAM=0GPU_AVAILABLE=falseINSTALL_DIR="$HOME/openclaw-gpt"USE_SYSTEMD=falseUSE_PM2=falseGPT_MODE="" # "openai" 或 "local"SELECTED_MODEL=""# ==================== 工具函数 ====================# 打印彩色信息print_info() {    echo -e "${BLUE}[信息]${NC}$1"}print_success() {    echo -e "${GREEN}[成功]${NC}$1"}print_warning() {    echo -e "${YELLOW}[警告]${NC}$1"}print_error() {    echo -e "${RED}[错误]${NC}$1"}print_step() {    echo ""    echo -e "${BOLD}${CYAN}════════════════════════════════════════════════════════════${NC}"    echo -e "${BOLD}${CYAN}  步骤 $1 : $2${NC}"    echo -e "${BOLD}${CYAN}════════════════════════════════════════════════════════════${NC}"}print_banner() {    clear    echo -e "${PURPLE}${BOLD}"    echo '╔════════════════════════════════════════════════════════════╗'    echo '║                                                            ║'    echo '║    🚀  OpenClaw + GPT系列模型 Linux 一键部署脚本          ║'    echo '║                                                            ║'    echo '║    版本: '"$SCRIPT_VERSION"'                                         ║'    echo '║    支持: OpenAI API (GPT-4.5/5.4) 和 本地 GPT-OSS         ║'    echo '║    发行版: Ubuntu/Debian/CentOS/Fedora/Arch               ║'    echo '║                                                            ║'    echo '╚════════════════════════════════════════════════════════════╝'    echo -e "${NC}"    echo ""}# 记录日志log() {    echo "[$(date '+%Y-%m-%d %H:%M:%S')$1" >> "$INSTALL_LOG"}# 检查命令是否存在check_command() {    if command -v $1 &> /dev/null; then        return 0    else        return 1    fi}# 检查上一步是否成功check_error() {    if [ $? -ne 0 ]; then        print_error "$1"        log "错误: $1"        print_warning "是否继续? (y/n) "        read -r continue_choice        if [[ ! "$continue_choice" =~ ^[Yy]$ ]]; then            print_error "安装已中止"            exit 1        fi    fi}# 等待用户确认wait_for_user() {    echo ""    print_info "按回车键继续..."    read -r}# 获取系统信息detect_os() {    if [ -f /etc/os-release ]; then        . /etc/os-release        OS_TYPE=$ID        OS_VERSION=$VERSION_ID    elif [ -f /etc/redhat-release ]; then        OS_TYPE="rhel"        OS_VERSION=$(cat /etc/redhat-release | grep -oE '[0-9]+\.[0-9]+')    elif [ -f /etc/arch-release ]; then        OS_TYPE="arch"        OS_VERSION="rolling"    else        OS_TYPE="linux"        OS_VERSION="unknown"    fi    log "系统类型: $OS_TYPE$OS_VERSION"}# 检测系统信息detect_system() {    print_step "0" "系统环境检测"    # 检测操作系统    detect_os    print_success "操作系统: $OS_TYPE$OS_VERSION"    # 检测CPU架构    CPU_ARCH=$(uname -m)    print_success "CPU架构: $CPU_ARCH"    # 检测内存    if [ -f /proc/meminfo ]; then        TOTAL_RAM=$(awk '/MemTotal/ {printf "%.0f\n", $2/1024/1024}' /proc/meminfo)        print_success "物理内存: ${TOTAL_RAM}GB"        log "内存: ${TOTAL_RAM}GB"    else        TOTAL_RAM=0        print_warning "无法检测内存大小"    fi    # 检测网络连接    print_info "检测网络连接..."    if ping -c 1 8.8.8.8 &> /dev/null; then        print_success "网络连接正常"    else        print_warning "网络连接异常,可能影响API调用"    fi    # 检测是否有图形界面    if [ -n "$DISPLAY" ] || [ -n "$WAYLAND_DISPLAY" ]; then        HAS_GUI=true        print_info "检测到图形界面"    else        HAS_GUI=false        print_info "无图形界面(服务器环境)"    fi    wait_for_user}# ==================== 安装系统依赖 ====================install_system_deps() {    print_step "1" "安装系统依赖"    print_info "检测到系统: $OS_TYPE"    case $OS_TYPE in        ubuntu|debian|linuxmint)            print_info "使用 apt 包管理器"            sudo apt update            sudo apt install -y curl git build-essential python3 python3-pip            ;;        centos|rhel|fedora)            print_info "使用 yum/dnf 包管理器"            if [ "$OS_TYPE" == "fedora" ]; then                sudo dnf update -y                sudo dnf install -y curl git gcc-c++ make python3 python3-pip            else                sudo yum update -y                sudo yum install -y curl git gcc-c++ make python3 python3-pip epel-release            fi            ;;        arch|manjaro)            print_info "使用 pacman 包管理器"            sudo pacman -Syu --noconfirm            sudo pacman -S --noconfirm curl git base-devel python python-pip            ;;        *)            print_warning "未知的Linux发行版,尝试安装基础工具"            sudo apt update 2>/dev/null || sudo yum update 2>/dev/null || true            sudo apt install -y curl git build-essential 2>/dev/null || \            sudo yum install -y curl git gcc-c++ make 2>/dev/null || true            ;;    esac    check_error "系统依赖安装失败"    print_success "系统依赖安装完成"    log "系统依赖安装完成"    wait_for_user}# ==================== 安装 Node.js ====================install_node() {    print_step "2" "安装 Node.js 环境"    if check_command node; then        NODE_VERSION=$(node --version)        NODE_MAJOR_VERSION=$(node --version | cut -d'v' -f2 | cut -d'.' -f1)        print_success "Node.js 已安装: $NODE_VERSION"        if [ "$NODE_MAJOR_VERSION" -lt 22 ]; then            print_warning "Node.js 版本过低 (需要 ≥22),准备升级..."            install_node_from_scratch        else            log "Node.js已安装: $NODE_VERSION"        fi    else        install_node_from_scratch    fi    # 验证安装    node --version    npm --version    # 配置npm镜像(可选)    read -p "是否配置npm国内镜像(加速下载)?(y/n) " -r    if [[ $REPLY =~ ^[Yy]$ ]]; then        npm config set registry https://registry.npmmirror.com        print_success "npm镜像已配置"    fi    print_success "Node.js 环境就绪"    wait_for_user}install_node_from_scratch() {    print_info "正在安装 Node.js 22..."    case $OS_TYPE in        ubuntu|debian)            curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -            sudo apt install -y nodejs            ;;        centos|rhel|fedora)            curl -fsSL https://rpm.nodesource.com/setup_22.x | sudo bash -            if check_command dnf; then                sudo dnf install -y nodejs            else                sudo yum install -y nodejs            fi            ;;        arch)            sudo pacman -S --noconfirm nodejs npm            ;;        *)            # 使用nvm安装            print_info "使用 nvm 安装 Node.js"            curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash            export NVM_DIR="$HOME/.nvm"            [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"            nvm install 22            nvm use 22            ;;    esac    check_error "Node.js安装失败"    print_success "Node.js 安装完成"    log "Node.js安装完成"}# ==================== 选择GPT接入方式 ====================select_gpt_mode() {    print_step "3" "选择GPT接入方式"    echo -e "${CYAN}请选择GPT模型接入方式:${NC}"    echo ""    echo "  1) OpenAI官方API (推荐,性能最强)"    echo "     - 支持 GPT-4.5 / GPT-5.4 / GPT-4o 等最新模型"    echo "     - 需要API密钥和付费账户"    echo "     - 硬件要求低,仅需2GB内存"    echo ""    echo "  2) 本地GPT-OSS开源模型 (完全免费,离线可用)"    echo "     - 支持 gpt-oss:20b / gpt-oss:120b"    echo "     - 无需API密钥,数据完全本地化"    echo "     - 需要16GB+内存"    echo ""    read -p "请输入数字 (1-2,默认: 1): " mode_choice    case $mode_choice in        2)            GPT_MODE="local"            print_info "已选择: 本地GPT-OSS模型"            ;;        *)            GPT_MODE="openai"            print_info "已选择: OpenAI官方API"            ;;    esac    log "选择接入方式: $GPT_MODE"    wait_for_user}# ==================== 配置OpenAI API ====================configure_openai() {    print_step "4" "配置 OpenAI API"    echo -e "${CYAN}您需要从 OpenAI 获取 API Key:${NC}"    echo "  1. 访问 https://platform.openai.com/"    echo "  2. 注册/登录 OpenAI 账号"    echo "  3. 进入 API Keys 页面,点击 Create new secret key"    echo "  4. 复制生成的密钥(以 sk- 开头)"    echo ""    echo -e "${YELLOW}注意:OpenAI API 是付费服务,请确保账户有余额${NC}"    echo ""    # 尝试从环境变量读取    if [ -n "$OPENAI_API_KEY" ]; then        print_info "从环境变量检测到 API Key"        OPENAI_API_KEY=$OPENAI_API_KEY    fi    # 如果环境变量没有,则提示输入    if [ -z "$OPENAI_API_KEY" ]; then        read -p "请输入您的 OpenAI API Key (以 sk- 开头): " OPENAI_API_KEY        if [[ ! "$OPENAI_API_KEY" =~ ^sk- ]]; then            print_warning "API Key 格式可能不正确,应以 'sk-' 开头"            read -p "确认继续使用此 Key?(y/n) " -r            if [[ ! $REPLY =~ ^[Yy]$ ]]; then                configure_openai                return            fi        fi    fi    # 验证 API Key    print_info "验证 API Key 有效性..."    TEST_RESULT=$(curl -s -o /dev/null -w "%{http_code}" \        https://api.openai.com/v1/models \        -H "Authorization: Bearer $OPENAI_API_KEY")    if [ "$TEST_RESULT" -eq 200 ]; then        print_success "API Key 验证成功"        log "OpenAI API Key验证成功"    else        print_warning "API Key 验证失败 (HTTP $TEST_RESULT)"        print_info "可能的原因:"        echo "  - API Key 不正确"        echo "  - 账户余额不足"        echo "  - 网络连接问题(需要海外网络)"        echo ""        read -p "是否继续安装?(y/n) " -r        if [[ ! $REPLY =~ ^[Yy]$ ]]; then            exit 1        fi    fi    wait_for_user}# ==================== 配置本地GPT-OSS ====================install_ollama() {    print_step "4" "安装 Ollama (本地模型运行环境)"    if check_command ollama; then        print_success "Ollama 已安装"        log "Ollama已安装"    else        print_info "正在安装 Ollama..."        curl -fsSL https://ollama.com/install.sh | sh        check_error "Ollama安装失败"        # 启动Ollama服务        if check_command systemctl; then            sudo systemctl enable ollama            sudo systemctl start ollama        else            ollama serve > /dev/null 2>&1 &        fi        print_success "Ollama 安装完成"        log "Ollama安装完成"    fi    # 等待服务就绪    print_info "等待 Ollama 服务就绪..."    for i in {1..30}; do        if curl -s http://localhost:11434/api/tags > /dev/null 2>&1; then            print_success "Ollama 服务就绪"            break        fi        sleep 2        echo -n "."    done    echo ""    wait_for_user}select_local_model() {    print_step "5" "选择本地 GPT-OSS 模型"    # 根据内存推荐模型    if [ $TOTAL_RAM -lt 16 ]; then        print_warning "内存不足16GB,运行大型模型可能较慢"        RECOMMENDED="1"    elif [ $TOTAL_RAM -lt 32 ]; then        RECOMMENDED="1"    elif [ $TOTAL_RAM -lt 64 ]; then        RECOMMENDED="2"    else        RECOMMENDED="2"    fi    echo -e "${CYAN}请选择要下载的本地模型:${NC}"    echo ""    echo "  1) gpt-oss:20b  (推荐,16GB+内存,约8GB磁盘)"    echo "     - 性能均衡,适合大多数场景"    echo "     - 上下文窗口 32K"    echo ""    echo "  2) gpt-oss:120b (需要64GB+内存,约48GB磁盘)"    echo "     - 能力最强,适合高性能服务器"    echo "     - 上下文窗口 64K"    echo ""    echo -e "${GREEN}根据您的内存(${TOTAL_RAM}GB),推荐选项 $RECOMMENDED${NC}"    echo ""    read -p "请输入数字 (1-2,默认: $RECOMMENDED): " model_choice    case $model_choice in        2)            SELECTED_MODEL="gpt-oss:120b"            ;;        *)            SELECTED_MODEL="gpt-oss:20b"            ;;    esac    print_info "已选择模型: $SELECTED_MODEL"    log "选择本地模型: $SELECTED_MODEL"    # 下载模型    print_info "正在下载模型,请耐心等待 (约 $(if [ "$SELECTED_MODEL" == "gpt-oss:120b" ]; then echo "48GB"; else echo "8GB"; fi))..."    ollama pull $SELECTED_MODEL    check_error "模型下载失败"    print_success "模型下载完成: $SELECTED_MODEL"    wait_for_user}# ==================== 安装 OpenClaw ====================install_openclaw() {    print_step "6" "安装 OpenClaw"    print_info "正在安装 OpenClaw..."    # 使用官方安装脚本    if curl -fsSL https://openclaw.ai/install.sh | bash; then        print_success "OpenClaw 安装完成"        log "OpenClaw安装完成"    else        print_warning "官方脚本安装失败,尝试通过npm安装..."        npm install -g openclaw@latest        check_error "npm安装OpenClaw失败"        print_success "OpenClaw npm安装完成"        log "OpenClaw npm安装完成"    fi    # 验证安装    if check_command openclaw; then        OPENCLAW_VERSION=$(openclaw --version 2>&1 | head -1)        print_success "OpenClaw 版本: $OPENCLAW_VERSION"    else        print_error "OpenClaw 安装验证失败"        exit 1    fi    wait_for_user}# ==================== 配置 OpenClaw ====================configure_openclaw() {    print_step "7" "配置 OpenClaw"    print_info "正在生成配置文件..."    # 创建配置目录    mkdir -p ~/.openclaw    # 生成随机令牌    if check_command uuidgen; then        OPENCLAW_TOKEN=$(uuidgen | tr -d '-')    else        OPENCLAW_TOKEN=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1)    fi    if [ "$GPT_MODE" == "openai" ]; then        # OpenAI API 配置        cat > ~/.openclaw/config.json << EOF{    "provider": "openai",    "apiKey": "$OPENAI_API_KEY",    "model": "gpt-4.5-turbo",    "token": "$OPENCLAW_TOKEN",    "daemon": true,    "port": 18789,    "skills": [],    "contextWindow": 128000,    "temperature": 0.7,    "maxTokens": 4096}EOF        # 可选:选择具体GPT模型        echo ""        echo -e "${CYAN}可用的 GPT 模型:${NC}"        echo "  1) gpt-5.4 (最新版,100万上下文,推荐)"        echo "  2) gpt-4.5-turbo (性能均衡)"        echo "  3) gpt-4o (多模态)"        echo "  4) gpt-4-turbo (快速响应)"        echo ""        read -p "请选择要使用的模型 (1-4,默认: 1): " model_choice        case $model_choice in            2) MODEL="gpt-4.5-turbo" ;;            3) MODEL="gpt-4o" ;;            4) MODEL="gpt-4-turbo" ;;            *) MODEL="gpt-5.4" ;;        esac        # 更新配置文件        sed -i "s/\"model\": \"gpt-4.5-turbo\"/\"model\": \"$MODEL\"/" ~/.openclaw/config.json    else        # 本地 GPT-OSS 配置        cat > ~/.openclaw/config.json << EOF{    "models": {        "providers": {            "ollama": {                "baseUrl": "http://localhost:11434",                "apiKey": "ollama",                "api": "openai-completions",                "models": [                    {                        "id": "$SELECTED_MODEL",                        "name": "GPT-OSS",                        "contextWindow": 32768,                        "maxTokens": 8192                    }                ]            }        }    },    "agents": {        "defaults": {            "model": {                "primary": "ollama/$SELECTED_MODEL"            }        }    },    "port": 18789,    "token": "$OPENCLAW_TOKEN"}EOF    fi    print_success "配置文件创建成功"    log "配置文件创建成功"    wait_for_user}# ==================== 安装基础技能 ====================install_skills() {    print_step "8" "安装常用技能"    echo -e "${CYAN}请选择要安装的技能:${NC}"    echo "  1) 基础技能 (agent-browser, agent-fs)"    echo "  2) 全部技能 (包含执行命令和搜索)"    echo "  3) 自定义选择"    echo "  4) 跳过技能安装"    echo ""    read -p "请输入数字 (1-4,默认: 1): " skill_choice    case $skill_choice in        1)            SKILLS=(                "@openclaw/agent-browser"                "@openclaw/agent-fs"            )            ;;        2)            SKILLS=(                "@openclaw/agent-browser"                "@openclaw/agent-fs"                "@openclaw/agent-exec"                "@openclaw/agent-search"            )            ;;        3)            echo "请输入要安装的技能名称(多个技能用空格分隔):"            echo "可用技能: @openclaw/agent-browser, @openclaw/agent-fs, @openclaw/agent-exec, @openclaw/agent-search"            read -r custom_skills            SKILLS=($custom_skills)            ;;        4)            print_info "跳过技能安装"            return            ;;        *)            SKILLS=(                "@openclaw/agent-browser"                "@openclaw/agent-fs"            )            ;;    esac    print_info "正在安装技能..."    for skill in "${SKILLS[@]}"do        print_info "安装技能: $skill"        if openclaw plugins install "$skill" > /dev/null 2>&1; then            print_success "✓ $skill 安装完成"            log "技能安装完成: $skill"        else            print_warning "✗ $skill 安装失败 (可以稍后手动安装)"            log "技能安装失败: $skill"        fi    done    wait_for_user}# ==================== 配置进程管理 ====================configure_service() {    print_step "9" "配置进程管理"    echo -e "${CYAN}请选择进程管理方式:${NC}"    echo "  1) Systemd (推荐,适用于有systemd的发行版)"    echo "  2) PM2 (Node.js进程管理,适合服务器)"    echo "  3) 后台进程 (简单,适合桌面环境)"    echo ""    read -p "请输入数字 (1-3,默认: 1): " service_choice    case $service_choice in        1)            if check_command systemctl; then                USE_SYSTEMD=true                configure_systemd            else                print_warning "系统不支持systemd,使用PM2替代"                configure_pm2            fi            ;;        2)            USE_PM2=true            configure_pm2            ;;        *)            print_info "使用后台进程模式"            ;;    esac    wait_for_user}configure_systemd() {    print_info "配置 Systemd 服务..."    # 根据接入方式设置环境变量    if [ "$GPT_MODE" == "openai" ]; then        ENV_VARS="Environment=OPENAI_API_KEY=$OPENAI_API_KEY"    fi    cat > /tmp/openclaw.service << EOF[Unit]Description=OpenClaw AI Agent Service (GPT)After=network.targetWants=network.target[Service]Type=simpleUser=$USERExecStart=$(which openclaw) gateway startRestart=alwaysRestartSec=10Environment=NODE_ENV=production$ENV_VARSStandardOutput=journalStandardError=journal[Install]WantedBy=multi-user.targetEOF    sudo mv /tmp/openclaw.service /etc/systemd/system/    sudo systemctl daemon-reload    sudo systemctl enable openclaw    sudo systemctl start openclaw    print_success "Systemd 服务配置完成"    log "Systemd服务配置完成"}configure_pm2() {    print_info "配置 PM2 进程管理..."    if ! check_command pm2; then        npm install -g pm2    fi    # 设置环境变量    if [ "$GPT_MODE" == "openai" ]; then        export OPENAI_API_KEY=$OPENAI_API_KEY    fi    pm2 start $(which openclaw) --name "openclaw-gpt" -- gateway start    pm2 save    pm2 startup    print_success "PM2 配置完成"    log "PM2配置完成"}# ==================== 启动服务 ====================start_service() {    print_step "10" "启动 OpenClaw 服务"    if [ "$USE_SYSTEMD" = true ]; then        print_info "Systemd服务已启动"    elif [ "$USE_PM2" = true ]; then        pm2 restart openclaw-gpt    else        print_info "启动后台进程..."        if [ "$GPT_MODE" == "openai" ]; then            export OPENAI_API_KEY=$OPENAI_API_KEY        fi        nohup openclaw gateway start > /tmp/openclaw.log 2>&1 &        sleep 3    fi    # 检查服务状态    for i in {1..10}; do        if curl -s http://localhost:18789 > /dev/null 2>&1; then            print_success "OpenClaw 服务已启动"            break        fi        if [ $i -eq 10 ]; then            print_warning "OpenClaw 服务可能未正常启动,请稍后手动检查"            print_info "查看日志: tail -f /tmp/openclaw.log"        fi        sleep 2    done    wait_for_user}# ==================== 修复NO OUTPUT问题(本地模型专用) ====================fix_no_output_issue() {    if [ "$GPT_MODE" == "local" ]; then        print_step "11" "修复本地模型NO OUTPUT问题"        print_info "针对本地Ollama模型的特殊修复..."        # 查找provider-utils.js文件        PROVIDER_UTILS=$(find /usr/lib -name "provider-utils.js" 2>/dev/null | head -1)        if [ -n "$PROVIDER_UTILS" ]; then            print_info "找到文件: $PROVIDER_UTILS"            # 备份原文件            sudo cp "$PROVIDER_UTILS" "$PROVIDER_UTILS.bak"            # 移除ollama判断(如果存在)            if grep -q "ollama" "$PROVIDER_UTILS"then                sudo sed -i 's/if(normalized === "ollama" ||/if(/g' "$PROVIDER_UTILS"                print_success "已应用修复补丁"                log "应用NO OUTPUT修复"            else                print_info "无需修复"            fi        else            print_warning "未找到provider-utils.js,可手动修复"        fi        wait_for_user    fi}# ==================== 创建启动脚本 ====================create_launcher() {    print_step "12" "创建启动脚本"    mkdir -p "$INSTALL_DIR"    # 根据接入方式生成不同的启动脚本    if [ "$GPT_MODE" == "openai" ]; then        ENV_EXPORT="export OPENAI_API_KEY=\"$OPENAI_API_KEY\""        MODE_NAME="OpenAI GPT"    else        ENV_EXPORT="# 使用本地Ollama模型"        MODE_NAME="Local GPT-OSS"    fi    # 创建启动脚本    cat > "$INSTALL_DIR/start-openclaw-gpt.sh" << EOF#!/bin/bash$ENV_EXPORTecho "🚀 启动 OpenClaw ($MODE_NAME) 服务..."openclaw gateway startecho "📊 打开控制台..."if command -v xdg-open &> /dev/null; then    xdg-open "http://localhost:18789/?token=$OPENCLAW_TOKEN"elif command -v gnome-open &> /dev/null; then    gnome-open "http://localhost:18789/?token=$OPENCLAW_TOKEN"else    echo "请手动访问: http://localhost:18789/?token=$OPENCLAW_TOKEN"fiEOF    chmod +x "$INSTALL_DIR/start-openclaw-gpt.sh"    # 创建状态检查脚本    cat > "$INSTALL_DIR/check-status.sh" << EOF#!/bin/bashecho "📊 OpenClaw (GPT) 状态检查"echo "=============================="echo ""echo "OpenClaw 服务状态:"if curl -s http://localhost:18789 > /dev/null; then    echo "✅ 运行中"    echo "   访问地址: http://localhost:18789/?token=$OPENCLAW_TOKEN"else    echo "❌ 未运行"fiecho ""echo "模型状态:"if [ "$GPT_MODE" == "openai" ]; then    echo "OpenAI API: 已配置"    curl -s https://api.openai.com/v1/models \\        -H "Authorization: Bearer $OPENAI_API_KEY" \\        | grep -o '"id":[^,]*' | head -5else    echo "Ollama 本地模型:"    curl -s http://localhost:11434/api/tagsfiEOF    chmod +x "$INSTALL_DIR/check-status.sh"    # 创建配置文件备份    cp ~/.openclaw/config.json "$INSTALL_DIR/config.json.backup"    print_success "启动脚本已创建: $INSTALL_DIR/start-openclaw-gpt.sh"    print_success "状态检查脚本: $INSTALL_DIR/check-status.sh"    print_success "配置文件备份: $INSTALL_DIR/config.json.backup"    # 创建桌面快捷方式    if [ "$HAS_GUI" = true ] && [ -d "$HOME/Desktop" ]; then        cat > "$HOME/Desktop/openclaw-gpt.desktop" << EOF[Desktop Entry]Name=OpenClaw GPTComment=OpenClaw AI Assistant with GPTExec=$INSTALL_DIR/start-openclaw-gpt.shIcon=utilities-terminalTerminal=trueType=ApplicationCategories=Utility;EOF        chmod +x "$HOME/Desktop/openclaw-gpt.desktop"        print_success "桌面快捷方式已创建"    fi    wait_for_user}# ==================== 显示完成信息 ====================show_completion() {    print_step "完成" "🎉 所有安装步骤已完成!"    echo -e "${GREEN}${BOLD}"    echo '╔════════════════════════════════════════════════════════════╗'    echo '║                    部署成功!                              ║'    echo '╚════════════════════════════════════════════════════════════╝'    echo -e "${NC}"    echo ""    # 获取本机IP    LOCAL_IP=$(hostname -I | awk '{print $1}' 2>/dev/null || echo "127.0.0.1")    echo -e "${CYAN}${BOLD}【访问信息】${NC}"    echo "  • 本地访问: http://localhost:18789/?token=$OPENCLAW_TOKEN"    echo "  • 远程访问: http://$LOCAL_IP:18789/?token=$OPENCLAW_TOKEN"    echo "  • 访问令牌: $OPENCLAW_TOKEN"    echo ""    echo -e "${CYAN}${BOLD}【模型配置】${NC}"    if [ "$GPT_MODE" == "openai" ]; then        MODEL_NAME=$(grep '"model"' ~/.openclaw/config.json | cut -d'"' -f4)        echo "  • 提供商: OpenAI API"        echo "  • 当前模型: $MODEL_NAME"        echo "  • API Key: ${OPENAI_API_KEY:0:15}... (已隐藏)"    else        echo "  • 提供商: 本地 Ollama"        echo "  • 当前模型: $SELECTED_MODEL"        echo "  • 运行模式: 完全本地化,无需API"    fi    echo ""    echo -e "${CYAN}${BOLD}【常用命令】${NC}"    echo "  • 启动脚本: $INSTALL_DIR/start-openclaw-gpt.sh"    echo "  • 状态检查: $INSTALL_DIR/check-status.sh"    echo "  • 查看状态: openclaw gateway status"    echo "  • 查看日志: openclaw logs follow"    echo "  • 打开控制台: openclaw dashboard"    echo ""    if [ "$USE_SYSTEMD" = true ]; then        echo -e "${CYAN}${BOLD}【Systemd 命令】${NC}"        echo "  • 启动: sudo systemctl start openclaw"        echo "  • 停止: sudo systemctl stop openclaw"        echo "  • 状态: sudo systemctl status openclaw"        echo "  • 日志: sudo journalctl -u openclaw -f"        echo ""    fi    if [ "$USE_PM2" = true ]; then        echo -e "${CYAN}${BOLD}【PM2 命令】${NC}"        echo "  • 列表: pm2 list"        echo "  • 日志: pm2 logs openclaw-gpt"        echo "  • 监控: pm2 monit"        echo ""    fi    echo -e "${CYAN}${BOLD}【技能列表】${NC}"    openclaw plugins list 2>/dev/null || echo "  暂无已安装技能"    echo ""    echo -e "${YELLOW}${BOLD}【重要提示】${NC}"    if [ "$GPT_MODE" == "openai" ]; then        echo "  1. OpenAI API 是付费服务,请注意使用量"        echo "  2. 查看API用量: https://platform.openai.com/usage"    else        echo "  1. 本地模型完全免费,数据隐私安全"        echo "  2. 如需更好的性能,可考虑升级硬件"    fi    echo "  3. 请妥善保管访问令牌"    echo "  4. 日志文件: /tmp/openclaw.log"    echo "  5. 安装日志: $INSTALL_LOG"    echo "  6. 配置文件: ~/.openclaw/config.json"    echo "  7. 如需远程访问,请配置防火墙放行18789端口"    echo ""    # 测试连接    echo -e "${CYAN}${BOLD}【连接测试】${NC}"    if curl -s http://localhost:18789 > /dev/null; then        print_success "✓ OpenClaw 服务正常"    else        print_warning "✗ OpenClaw 服务未响应"    fi    echo ""    echo -e "${CYAN}是否现在打开控制台?(y/n)${NC} "    read -r open_now    if [[ "$open_now" =~ ^[Yy]$ ]]; then        if command -v xdg-open &> /dev/null; then            xdg-open "http://localhost:18789/?token=$OPENCLAW_TOKEN"        else            echo "请手动访问: http://localhost:18789/?token=$OPENCLAW_TOKEN"        fi    fi    echo ""    print_success "安装完成!感谢使用!"}# ==================== 防火墙配置提示 ====================firewall_tip() {    if command -v ufw &> /dev/null; then        print_info "检测到 UFW 防火墙,如需远程访问请运行:"        echo "  sudo ufw allow 18789/tcp"        echo "  sudo ufw reload"    elif command -v firewall-cmd &> /dev/null; then        print_info "检测到 firewalld,如需远程访问请运行:"        echo "  sudo firewall-cmd --permanent --add-port=18789/tcp"        echo "  sudo firewall-cmd --reload"    elif command -v iptables &> /dev/null; then        print_info "检测到 iptables,如需远程访问请运行:"        echo "  sudo iptables -A INPUT -p tcp --dport 18789 -j ACCEPT"    fi    echo ""}# ==================== 清理函数 ====================cleanup() {    print_warning "安装被中断,正在清理..."    log "安装被中断"    exit 1}# ==================== 主函数 ====================main() {    print_banner    # 记录开始时间    START_TIME=$(date +%s)    log "=== OpenClaw + GPT Linux 安装开始 ==="    # 执行各步骤    detect_system    install_system_deps    install_node    select_gpt_mode    if [ "$GPT_MODE" == "openai" ]; then        configure_openai    else        install_ollama        select_local_model    fi    install_openclaw    configure_openclaw    install_skills    configure_service    start_service    fix_no_output_issue    create_launcher    firewall_tip    show_completion    # 计算总耗时    END_TIME=$(date +%s)    DURATION=$((END_TIME - START_TIME))    MINUTES=$((DURATION / 60))    SECONDS=$((DURATION % 60))    log "=== OpenClaw + GPT 安装完成 ==="    log "总耗时: ${MINUTES}${SECONDS}秒"    echo ""    print_success "总耗时: ${MINUTES}${SECONDS}秒"}# 捕获中断信号trap cleanup INT TERM# 检查是否为root用户if [ "$EUID" -eq 0 ]; then     print_warning "不建议以root用户运行此脚本"    print_warning "建议使用普通用户安装,需要sudo时会提示输入密码"    read -p "是否继续?(y/n) " -r    if [[ ! $REPLY =~ ^[Yy]$ ]]; then        exit 1    fifi# 运行主函数main# 退出前等待echo ""print_info "按回车键退出..."read -r

📦 使用方法

方法一:直接下载运行(推荐)

# 1. 下载脚本wget -O install-openclaw-gpt-linux.sh https://raw.githubusercontent.com/your-repo/install-openclaw-gpt-linux.sh# 或使用 curlcurl -O https://raw.githubusercontent.com/your-repo/install-openclaw-gpt-linux.sh# 2. 添加执行权限chmod +x install-openclaw-gpt-linux.sh# 3. 运行脚本./install-openclaw-gpt-linux.sh

方法二:一行命令直接运行

# 使用 curlbash <(curl -fsSL https://raw.githubusercontent.com/your-repo/install-openclaw-gpt-linux.sh)# 或使用 wgetbash <(wget -qO- https://raw.githubusercontent.com/your-repo/install-openclaw-gpt-linux.sh)

方法三:通过环境变量传入 API Key

# 设置环境变量,脚本会自动读取export OPENAI_API_KEY="sk-你的-api-key-here"bash <(curl -fsSL https://raw.githubusercontent.com/your-repo/install-openclaw-gpt-linux.sh)

🎯 脚本特性

• 双模式支持:同时支持 OpenAI API 和 本地 GPT-OSS 模型• 智能选择:根据内存自动推荐合适的本地模型• API验证:自动验证 OpenAI API Key 有效性• NO OUTPUT修复:自动修复本地Ollama的常见问题• 多发行版支持:Ubuntu/Debian/CentOS/Fedora/Arch等• 进程管理:支持Systemd、PM2、后台进程三种模式• 环境变量:自动读取 OPENAI_API_KEY 环境变量• 技能安装:可选择安装常用技能• 配置备份:自动备份配置文件• 状态监控:生成状态检查脚本• 防火墙提示:自动检测并提示防火墙设置• 彩色输出:清晰的彩色日志,方便阅读

📊 支持的 GPT 模型

OpenAI API 模式

• gpt-5.4:最新版,支持100万上下文,适用于复杂任务和企业级应用• gpt-4.5-turbo:性能均衡,支持128K上下文,适用于通用场景• gpt-4o:具备多模态能力,支持128K上下文,适用于需要图像识别的场景• gpt-4-turbo:响应速度快,支持128K上下文,适用于实时对话

本地 GPT-OSS 模式

• gpt-oss:20b:内存需求16GB以上,磁盘空间8GB以上,支持32K上下文,推荐使用,性能均衡• gpt-oss:120b:内存需求64GB以上,磁盘空间48GB以上,支持64K上下文,能力最强,适合服务器环境

🔧 运维命令

查看日志

# 安装日志tail -f /tmp/openclaw-gpt-install-*.log# OpenClaw运行日志tail -f /tmp/openclaw.log# Systemd日志sudo journalctl -u openclaw -f# PM2日志pm2 logs openclaw-gpt

服务管理

# Systemdsudo systemctl restart openclawsudo systemctl stop openclawsudo systemctl status openclaw# PM2pm2 restart openclaw-gptpm2 stop openclaw-gptpm2 status# 后台进程pkill -f "openclaw gateway"$INSTALL_DIR/start-openclaw-gpt.sh

配置修改

# 修改配置文件nano ~/.openclaw/config.json# 重启服务生效sudo systemctl restart openclaw  # Systemd# 或pm2 restart openclaw-gpt          # PM2

查看API用量

# OpenAI用量查询curl https://api.openai.com/v1/dashboard/billing/usage \  -H "Authorization: Bearer $OPENAI_API_KEY"

 OpenAI API 价格参考(2026年)

• GPT-5.4 (基础版):输入$2.50,输出$15.00。最新版通用模型,支持高达100万token上下文,适合大多数复杂任务和企业级应用。

• GPT-5.4 Pro (专业版):输入$30.00,输出$180.00。推理性能最强,适用于需要极高精确度和零容错率的专业场景。

• GPT-5.2:输入$1.75,输出$14.00。介于旗舰版和性价比模型之间,提供均衡的性能。

• GPT-5:输入$1.25,输出$10.00。平衡能力与成本,具备广泛的通用智能。

• GPT-4.1:输入$2.00,输出$8.00。针对代码生成和指令跟随进行了优化,支持100万token上下文。

• GPT-4o:输入$2.50,输出$10.00。多模态全能模型,适用于需要图像识别的场景。

• o3 (推理模型):输入$2.00,输出$8.00。完整版推理模型,擅长解决科学、数学和编程等复杂问题。

• o3-mini (推理模型):输入$1.10,输出$4.40。经济高效的推理模型。

• GPT-4o-mini:输入$0.15,输出$0.60。性价比极高的小尺寸模型,适合预算有限的通用场景。

• GPT-5 Mini:输入$0.25,输出$2.00。GPT-5系列的预算版。

• GPT-5 Nano:输入$0.05,输出$0.40。成本极低的模型,非常适合文本分类、信息提取和简单问答等任务。

⚠️ 注意事项

  1. API费用:OpenAI API 是付费服务,请关注使用量

  2. API Key安全:妥善保管,不要提交到代码仓库

  3. 网络要求:OpenAI API需要连接海外服务

  4. 本地模型资源:GPT-OSS模型需要充足的内存和磁盘空间

  5. NO OUTPUT问题:本地模型已自动修复

🚨 故障排除

问题1:OpenAI API Key 验证失败

解决:检查API Key和网络

# 手动测试API Keycurl https://api.openai.com/v1/models \  -H "Authorization: Bearer 你的-api-key"

问题2:本地模型下载慢

解决:使用代理或镜像

# 设置代理export http_proxy="http://代理地址:端口"export https_proxy="http://代理地址:端口"ollama pull gpt-oss:20b

问题3:持续返回"NO OUTPUT"

解决:脚本已自动修复,如仍出现:

# 手动修复find /usr/lib -name "provider-utils.js" -exec sudo sed -i 's/if(normalized === "ollama" ||/if(/g' {} \;systemctl --user restart openclaw

问题4:内存不足

解决:使用更小的模型或增加Swap

# 创建4GB Swapsudo fallocate -l 4G /swapfilesudo chmod 600 /swapfilesudo mkswap /swapfilesudo swapon /swapfile

现在,开始享受由 GPT 驱动的 AI 智能体吧! 🚀

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-03-27 10:01:46 HTTP/2.0 GET : https://f.mffb.com.cn/a/479957.html
  2. 运行时间 : 0.104022s [ 吞吐率:9.61req/s ] 内存消耗:5,079.10kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=8e320b7303d15509b9ce12befcea224d
  1. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/runtime/temp/067d451b9a0c665040f3f1bdd3293d68.php ( 11.98 KB )
  140. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000591s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000775s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000281s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000249s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000481s ]
  6. SELECT * FROM `set` [ RunTime:0.000196s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000569s ]
  8. SELECT * FROM `article` WHERE `id` = 479957 LIMIT 1 [ RunTime:0.001581s ]
  9. UPDATE `article` SET `lasttime` = 1774576907 WHERE `id` = 479957 [ RunTime:0.004213s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 67 LIMIT 1 [ RunTime:0.000240s ]
  11. SELECT * FROM `article` WHERE `id` < 479957 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000500s ]
  12. SELECT * FROM `article` WHERE `id` > 479957 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000596s ]
  13. SELECT * FROM `article` WHERE `id` < 479957 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.000969s ]
  14. SELECT * FROM `article` WHERE `id` < 479957 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.004887s ]
  15. SELECT * FROM `article` WHERE `id` < 479957 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.006385s ]
0.107879s