当前位置:首页>Linux>��Linux + Claude API OpenClaw 一键部署脚本

��Linux + Claude API OpenClaw 一键部署脚本

  • 2026-09-04 08:12:07
��Linux + Claude API OpenClaw 一键部署脚本

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

#!/bin/bash# ====================================================# OpenClaw + Claude API Linux 一键部署脚本# 作者:AI Assistant# 版本:1.0# 说明:本脚本将自动安装OpenClaw并配置Claude API# 支持:Ubuntu/Debian/CentOS/Fedora/RHEL/Arch Linux# ====================================================# 严格模式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="1.0.0"INSTALL_LOG="/tmp/openclaw-claude-install-$(date +%Y%m%d-%H%M%S).log"OPENCLAW_TOKEN=""CLAUDE_API_KEY=""OS_TYPE=""OS_VERSION=""INSTALL_DIR="$HOME/openclaw-claude"USE_SYSTEMD=falseUSE_PM2=false# ==================== 工具函数 ====================# 打印彩色信息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 + Claude API Linux 一键部署脚本           ║'    echo '║                                                            ║'    echo '║    版本: '"$SCRIPT_VERSION"'                                         ║'    echo '║    支持: Ubuntu/Debian/CentOS/Fedora/Arch                 ║'    echo '║    模型: Claude 系列 (通过 Anthropic API)                 ║'    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"    # 检测网络连接    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            ;;        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            else                sudo yum update -y                sudo yum install -y curl git gcc-c++ make epel-release            fi            ;;        arch|manjaro)            print_info "使用 pacman 包管理器"            sudo pacman -Syu --noconfirm            sudo pacman -S --noconfirm curl git base-devel            ;;        *)            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)        print_success "Node.js 已安装: $NODE_VERSION"        # 检查版本是否符合要求        NODE_MAJOR_VERSION=$(node --version | cut -d'v' -f2 | cut -d'.' -f1)        if [ "$NODE_MAJOR_VERSION" -lt 22 ]; then            print_warning "Node.js 版本过低,推荐使用 v22 或更高版本"            print_info "是否升级 Node.js? (y/n) "            read -r upgrade_choice            if [[ "$upgrade_choice" =~ ^[Yy]$ ]]; then                install_node_from_scratch            fi        else            log "Node.js已安装: $NODE_VERSION"        fi    else        install_node_from_scratch    fi    # 验证安装    node --version    npm --version    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安装完成"}# ==================== 获取 Claude API Key ====================get_claude_api_key() {    print_step "3" "配置 Claude API Key"    echo -e "${CYAN}您需要从 Anthropic 获取 API Key:${NC}"    echo "  1. 访问 https://console.anthropic.com/"    echo "  2. 登录/注册 Anthropic 账号"    echo "  3. 进入 API Keys 菜单,点击 Create Key"    echo "  4. 复制生成的密钥(以 sk-ant- 开头)"    echo ""    echo -e "${YELLOW}注意:确保您的账户有足够的余额或有效的订阅计划${NC}"    echo ""    # 尝试从环境变量读取    if [ -n "$ANTHROPIC_API_KEY" ]; then        print_info "从环境变量检测到 API Key"        CLAUDE_API_KEY=$ANTHROPIC_API_KEY    fi    # 如果环境变量没有,则提示输入    if [ -z "$CLAUDE_API_KEY" ]; then        read -p "请输入您的 Anthropic API Key (以 sk-ant- 开头): " CLAUDE_API_KEY        # 验证格式        if [[ ! "$CLAUDE_API_KEY" =~ ^sk-ant- ]]; then            print_warning "API Key 格式可能不正确,应以 'sk-ant-' 开头"            read -p "确认继续使用此 Key?(y/n) " -r            if [[ ! $REPLY =~ ^[Yy]$ ]]; then                get_claude_api_key                return            fi        fi    fi    # 验证 API Key 是否有效    print_info "验证 API Key 有效性..."    TEST_RESULT=$(curl -s -w "%{http_code}" -o /tmp/claude_test.json \        -X POST https://api.anthropic.com/v1/messages \        -H "x-api-key: $CLAUDE_API_KEY" \        -H "anthropic-version: 2023-06-01" \        -H "content-type: application/json" \        -d '{            "model": "claude-3-sonnet-20240229",            "max_tokens": 10,            "messages": [{"role": "user", "content": "Hello"}]        }')    if [ "$TEST_RESULT" -eq 200 ]; then        print_success "API Key 验证成功"        log "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}# ==================== 安装 OpenClaw ====================install_openclaw() {    print_step "4" "安装 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 "5" "配置 OpenClaw (使用 Claude API)"    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    # 创建配置文件    cat > ~/.openclaw/config.json << EOF{    "provider": "anthropic",    "apiKey": "$CLAUDE_API_KEY",    "model": "claude-3-5-sonnet-20241022",    "token": "$OPENCLAW_TOKEN",    "daemon": true,    "port": 18789,    "skills": [],    "contextWindow": 200000,    "temperature": 0.7,    "maxTokens": 4096}EOF    print_success "配置文件创建成功"    log "配置文件创建成功"    # 可选:配置其他 Claude 模型    echo ""    echo -e "${CYAN}可用的 Claude 模型:${NC}"    echo "  1) claude-3-5-sonnet-20241022 (推荐,最佳平衡)"    echo "  2) claude-3-opus-20240229 (最强大,最贵)"    echo "  3) claude-3-sonnet-20240229 (平衡)"    echo "  4) claude-3-haiku-20240307 (最快,最便宜)"    echo "  5) claude-2.1 (旧版)"    echo ""    read -p "请选择要使用的模型 (1-5,默认: 1): " model_choice    case $model_choice in        2) MODEL="claude-3-opus-20240229" ;;        3) MODEL="claude-3-sonnet-20240229" ;;        4) MODEL="claude-3-haiku-20240307" ;;        5) MODEL="claude-2.1" ;;        *) MODEL="claude-3-5-sonnet-20241022" ;;    esac    # 更新配置文件中的模型    sed -i "s/\"model\": \"claude-3-5-sonnet-20241022\"/\"model\": \"$MODEL\"/" ~/.openclaw/config.json    print_success "已选择模型: $MODEL"    log "选择模型: $MODEL"    wait_for_user}# ==================== 安装基础技能 ====================install_skills() {    print_step "6" "安装常用技能"    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 "7" "配置进程管理"    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 服务..."    cat > /tmp/openclaw.service << EOF[Unit]Description=OpenClaw AI Agent Service (Claude)After=network.target[Service]Type=simpleUser=$USERExecStart=$(which openclaw) gateway startRestart=alwaysRestartSec=10Environment=NODE_ENV=productionEnvironment=ANTHROPIC_API_KEY=$CLAUDE_API_KEYStandardOutput=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    # 设置环境变量    export ANTHROPIC_API_KEY=$CLAUDE_API_KEY    pm2 start $(which openclaw) --name "openclaw-claude" -- gateway start    pm2 save    pm2 startup    print_success "PM2 配置完成"    log "PM2配置完成"}# ==================== 启动服务 ====================start_service() {    print_step "8" "启动 OpenClaw 服务"    if [ "$USE_SYSTEMD" = true ]; then        print_info "Systemd服务已启动"    elif [ "$USE_PM2" = true ]; then        pm2 restart openclaw-claude    else        print_info "启动后台进程..."        export ANTHROPIC_API_KEY=$CLAUDE_API_KEY        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}# ==================== 创建启动脚本 ====================create_launcher() {    print_step "9" "创建启动脚本"    mkdir -p "$INSTALL_DIR"    # 创建启动脚本    cat > "$INSTALL_DIR/start-openclaw-claude.sh" << EOF#!/bin/bashexport ANTHROPIC_API_KEY="$CLAUDE_API_KEY"echo "🚀 启动 OpenClaw (Claude) 服务..."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-claude.sh"    # 创建状态检查脚本    cat > "$INSTALL_DIR/check-status.sh" << EOF#!/bin/bashecho "📊 OpenClaw (Claude) 状态检查"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 "API 余额检查:"curl -s -X GET https://api.anthropic.com/v1/accounts \    -H "x-api-key: $CLAUDE_API_KEY" \    -H "anthropic-version: 2023-06-01" || echo "无法获取余额信息"EOF    chmod +x "$INSTALL_DIR/check-status.sh"    # 创建配置文件备份    cp ~/.openclaw/config.json "$INSTALL_DIR/config.json.backup"    print_success "启动脚本已创建: $INSTALL_DIR/start-openclaw-claude.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-claude.desktop" << EOF[Desktop Entry]Name=OpenClaw ClaudeComment=OpenClaw AI Assistant with ClaudeExec=$INSTALL_DIR/start-openclaw-claude.shIcon=utilities-terminalTerminal=trueType=ApplicationCategories=Utility;EOF        chmod +x "$HOME/Desktop/openclaw-claude.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}"    echo "  • 提供商: Anthropic (Claude)"    echo "  • 当前模型: $(grep '"model"' ~/.openclaw/config.json | cut -d'"' -f4)"    echo "  • API Key: ${CLAUDE_API_KEY:0:15}... (已隐藏)"    echo ""    echo -e "${CYAN}${BOLD}【常用命令】${NC}"    echo "  • 启动脚本: $INSTALL_DIR/start-openclaw-claude.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-claude"        echo "  • 监控: pm2 monit"        echo ""    fi    echo -e "${CYAN}${BOLD}【技能列表】${NC}"    openclaw plugins list 2>/dev/null || echo "  暂无已安装技能"    echo ""    echo -e "${YELLOW}${BOLD}【重要提示】${NC}"    echo "  1. 请妥善保管您的 API Key 和访问令牌"    echo "  2. Claude API 是付费服务,请注意使用量"    echo "  3. 查看API用量: https://console.anthropic.com/settings/usage"    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 + Claude Linux 安装开始 ==="    # 执行各步骤    detect_system    install_system_deps    install_node    get_claude_api_key    install_openclaw    configure_openclaw    install_skills    configure_service    start_service    create_launcher    firewall_tip    show_completion    # 计算总耗时    END_TIME=$(date +%s)    DURATION=$((END_TIME - START_TIME))    MINUTES=$((DURATION / 60))    SECONDS=$((DURATION % 60))    log "=== OpenClaw + Claude 安装完成 ==="    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-claude-linux.sh https://raw.githubusercontent.com/your-repo/install-openclaw-claude-linux.sh# 或使用 curlcurl -O https://raw.githubusercontent.com/your-repo/install-openclaw-claude-linux.sh# 2. 添加执行权限chmod +x install-openclaw-claude-linux.sh# 3. 运行脚本./install-openclaw-claude-linux.sh

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

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

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

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

🎯 脚本特性

• 全自动化:无需人工干预,自动完成所有步骤

• 多发行版支持:Ubuntu/Debian/CentOS/Fedora/Arch等

• API验证:自动验证 Claude API Key 有效性

• 模型选择:支持所有 Claude 模型版本

• 进程管理:支持Systemd、PM2、后台进程三种模式

• 环境变量:自动读取 ANTHROPIC_API_KEY 环境变量

• 技能安装:可选择安装常用技能

• 配置备份:自动备份配置文件

• 状态监控:生成状态检查脚本

• 防火墙提示:自动检测并提示防火墙设置

• 彩色输出:清晰的彩色日志,方便阅读

• 容错处理:遇到错误会询问是否继续

📊 支持的 Claude 模型

• claude-3-5-sonnet-20241022:推荐版本,性能与成本的最佳平衡,适用于通用任务,性价比高• claude-3-opus-20240229:最强大的模型,价格最高,适用于复杂推理和专业任务• claude-3-sonnet-20240229:性能与成本平衡,适用于日常对话和中等难度任务• claude-3-haiku-20240307:响应速度最快,价格最低,适用于实时响应和简单查询• claude-2.1:旧版本模型,适用于需要兼容性的场景

🔧 运维命令

查看日志

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

服务管理

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

配置修改

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

查看API用量

# 查看当前API用量curl -s -X GET https://api.anthropic.com/v1/accounts \    -H "x-api-key: $CLAUDE_API_KEY" \    -H "anthropic-version: 2023-06-01" | python -m json.tool

💰 Claude API 价格参考(2026年)

• Claude Opus 4.6:输入$5.00,输出$25.00• Claude Sonnet 4.6:输入$3.00,输出$15.00• Claude Haiku 4.5:输入$1.00,输出$5.00• Claude 3.5 Sonnet:输入$3.00,输出$15.00• Claude 3.5 Haiku:输入$0.25,输出$1.25• Claude 3 Opus:输入$15.00,输出$75.00

⚠️ 注意事项

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

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

  3. 网络要求:需要稳定的网络连接访问 Anthropic API

  4. 账户余额:确保账户有足够余额,否则API调用会失败

  5. 速率限制:Anthropic有API调用频率限制,注意不要过量请求

🚨 故障排除

问题1:API Key 验证失败

解决:检查API Key是否正确,账户是否有余额

# 手动测试API Keycurl -X POST https://api.anthropic.com/v1/messages \    -H "x-api-key: 你的-api-key" \    -H "anthropic-version: 2023-06-01" \    -H "content-type: application/json" \    -d '{"model":"claude-3-sonnet-20240229","max_tokens":10,"messages":[{"role":"user","content":"Hello"}]}'

问题2:OpenClaw 无法启动

解决:检查环境变量和日志

# 手动设置环境变量启动export ANTHROPIC_API_KEY="你的-api-key"openclaw gateway start# 查看详细日志openclaw logs follow

问题3:API 调用超时

解决:检查网络连接和代理设置

# 测试API连接延迟time curl -X POST https://api.anthropic.com/v1/messages \    -H "x-api-key: $CLAUDE_API_KEY" \    -H "anthropic-version: 2023-06-01" \    -H "content-type: application/json" \    -d '{"model":"claude-3-haiku-20240307","max_tokens":10,"messages":[{"role":"user","content":"Hi"}]}'
现在,开始享受由 Claude 驱动的 AI 智能体吧! 🚀

最新文章

随机文章