当前位置: 首页 > news >正文

LiteLLM + Claude Code 双窗口启动脚本

版本一:基础版(简单可靠)

@echo off chcp 65001 >nul title Claude Code Launcher echo ======================================== echo 启动 Claude Code 本地模型环境 echo ======================================== echo. :: 检查 Ollama 服务 echo [1/3] 检查 Ollama 服务... curl -s http://localhost:11434/api/tags >nul 2>&1 if errorlevel 1 ( echo [警告] Ollama 服务未运行,正在启动... start "Ollama" cmd /k "ollama serve" echo 等待 Ollama 启动... timeout /t 5 /nobreak >nul ) else ( echo [OK] Ollama 服务已运行 ) echo. echo [2/3] 启动 LiteLLM 服务... :: 启动 LiteLLM 并等待服务就绪 start "LiteLLM" cmd /k "litellm --config C:\Users\xxxxxx\litellm_config.yaml --port 4000 --debug" :: 等待 LiteLLM 服务启动 echo 等待 LiteLLM 服务启动... set MAX_RETRIES=30 set RETRY_COUNT=0 set SERVICE_READY=0 :wait_litellm set /a RETRY_COUNT+=1 timeout /t 2 /nobreak >nul curl -s http://localhost:4000/health >nul 2>&1 if not errorlevel 1 ( set SERVICE_READY=1 echo [OK] LiteLLM 服务已就绪 goto service_ready ) if %RETRY_COUNT% lss %MAX_RETRIES% ( goto wait_litellm ) echo [错误] LiteLLM 服务启动超时 echo 请检查配置文件和端口是否被占用 pause exit /b 1 :service_ready echo. echo [3/3] 启动 Claude Code... :: 设置环境变量并启动 Claude Code set ANTHROPIC_BASE_URL=http://localhost:4000 set ANTHROPIC_AUTH_TOKEN=dummy set CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 :: 在新窗口中启动 Claude Code start "Claude Code" cmd /k "set ANTHROPIC_BASE_URL=http://localhost:4000 && set ANTHROPIC_AUTH_TOKEN=dummy && set CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 && claude --model claude-3-sonnet-20240620" echo. echo ======================================== echo 启动完成! echo - LiteLLM 服务窗口: 请保持运行 echo - Claude Code 窗口: 可以使用 echo ======================================== echo. echo 按任意键关闭此窗口... pause >nul

版本二:增强版(带日志和错误处理)

@echo off chcp 65001 >nul title Claude Code Launcher with Logging :: 设置日志文件 set LOG_FILE=%USERPROFILE%\claude_launcher.log echo [%date% %time%] 启动脚本开始 > %LOG_FILE% echo ======================================== echo 启动 Claude Code 本地模型环境 echo ======================================== echo. echo 日志文件: %LOG_FILE% echo. :: 函数:写入日志 :log echo [%time%] %~1 >> %LOG_FILE% if not "%~2"=="silent" echo %~1 goto :eof :: 检查管理员权限 net session >nul 2>&1 if errorlevel 1 ( call :log "[警告] 未以管理员身份运行,可能影响端口绑定" warning ) :: 检查 Ollama 服务 call :log "[1/3] 检查 Ollama 服务..." silent curl -s http://localhost:11434/api/tags >nul 2>&1 if errorlevel 1 ( call :log "[警告] Ollama 服务未运行,正在启动..." warning start "Ollama" cmd /k "ollama serve" call :log "等待 Ollama 启动..." timeout /t 5 /nobreak >nul :: 再次检查 curl -s http://localhost:11434/api/tags >nul 2>&1 if errorlevel 1 ( call :log "[错误] Ollama 服务启动失败" error echo. echo 请手动运行: ollama serve pause exit /b 1 ) else ( call :log "[OK] Ollama 服务启动成功" ) ) else ( call :log "[OK] Ollama 服务已运行" ) echo. :: 检查端口是否被占用 call :log "[2/3] 检查端口 4000..." silent netstat -ano | findstr :4000 >nul if not errorlevel 1 ( call :log "[警告] 端口 4000 已被占用" warning echo 正在尝试清理端口... for /f "tokens=5" %%a in ('netstat -ano ^| findstr :4000') do ( taskkill /F /PID %%a >nul 2>&1 ) timeout /t 2 /nobreak >nul call :log "[OK] 端口已清理" ) else ( call :log "[OK] 端口 4000 可用" ) :: 检查配置文件 call :log "[3/5] 检查配置文件..." silent if not exist "C:\Users\xxxxxx\litellm_config.yaml" ( call :log "[错误] 配置文件不存在: C:\Users\xxxxxx\litellm_config.yaml" error echo. echo 请确认配置文件路径是否正确 pause exit /b 1 ) else ( call :log "[OK] 配置文件存在" ) echo. :: 启动 LiteLLM 服务 call :log "[4/5] 启动 LiteLLM 服务..." start "LiteLLM" cmd /k "litellm --config C:\Users\xxxxxx\litellm_config.yaml --port 4000 --debug 2>&1 | tee %USERPROFILE%\litellm.log" :: 等待 LiteLLM 服务启动(更健壮的检测) call :log "等待 LiteLLM 服务启动..." silent set MAX_RETRIES=60 set RETRY_COUNT=0 set SERVICE_READY=0 :wait_litellm set /a RETRY_COUNT+=1 timeout /t 1 /nobreak >nul :: 尝试多种健康检查方式 curl -s http://localhost:4000/health >nul 2>&1 if not errorlevel 1 ( set SERVICE_READY=1 call :log "[OK] LiteLLM 服务已就绪 (健康检查通过)" goto service_ready ) :: 备用检查:尝试访问根路径 curl -s http://localhost:4000/ >nul 2>&1 if not errorlevel 1 ( set SERVICE_READY=1 call :log "[OK] LiteLLM 服务已就绪 (根路径检查通过)" goto service_ready ) if %RETRY_COUNT% lss %MAX_RETRIES% ( if %RETRY_COUNT% equ 10 call :log " 仍在等待... (已等待10秒)" if %RETRY_COUNT% equ 20 call :log " 仍在等待... (已等待20秒)" if %RETRY_COUNT% equ 30 call :log " 仍在等待... (已等待30秒)" goto wait_litellm ) call :log "[错误] LiteLLM 服务启动超时 (已等待 %MAX_RETRIES% 秒)" error echo. echo 可能的原因: echo 1. 配置文件格式错误 echo 2. Python 依赖缺失 echo 3. 端口被占用 echo. echo 请查看 LiteLLM 窗口的错误信息 echo. pause exit /b 1 :service_ready :: 测试 LiteLLM 是否真的可以处理请求 call :log "[5/5] 测试 LiteLLM API..." silent curl -s -X POST http://localhost:4000/v1/chat/completions ^ -H "Content-Type: application/json" ^ -d "{\"model\":\"claude-3-sonnet-20240620\",\"messages\":[{\"role\":\"user\",\"content\":\"test\"}],\"max_tokens\":5}" >nul 2>&1 if errorlevel 1 ( call :log "[警告] LiteLLM API 测试失败,但服务已启动" warning ) else ( call :log "[OK] LiteLLM API 测试通过" ) echo. :: 启动 Claude Code call :log "启动 Claude Code..." set ANTHROPIC_BASE_URL=http://localhost:4000 set ANTHROPIC_AUTH_TOKEN=dummy set CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 :: 创建临时脚本文件以确保环境变量生效 set TEMP_SCRIPT=%TEMP%\claude_code_%RANDOM%.bat ( echo @echo off echo title Claude Code ^(Local Model^) echo echo ======================================== echo echo Claude Code 已连接到本地 LiteLLM echo echo ======================================== echo echo. echo echo 当前配置: echo echo API URL: http://localhost:4000 echo echo 模型: claude-3-sonnet-20240620 echo echo. echo echo ======================================== echo echo. echo set ANTHROPIC_BASE_URL=http://localhost:4000 echo set ANTHROPIC_AUTH_TOKEN=dummy echo set CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 echo claude --model claude-3-sonnet-20240620 echo echo. echo echo Claude Code 已退出,按任意键关闭... echo pause ) > "%TEMP_SCRIPT%" start "Claude Code" cmd /k "call "%TEMP_SCRIPT%"" echo. echo ======================================== echo 启动完成! echo ======================================== echo. echo LiteLLM 服务窗口: 请保持运行,不要关闭 echo Claude Code 窗口: 可以使用,输入 /model 确认模型 echo. echo 日志文件: %LOG_FILE% echo. echo 按任意键关闭此窗口(不会影响已启动的服务)... pause >nul :: 清理临时文件 del "%TEMP_SCRIPT%" 2>nul

版本三:一键启动版(带托盘图标)

@echo off chcp 65001 >nul title Claude Code Service Manager :: 定义颜色 set "GREEN=[92m" set "RED=[91m" set "YELLOW=[93m" set "BLUE=[94m" set "RESET=[0m" echo %BLUE%╔══════════════════════════════════════════════════════════╗%RESET% echo %BLUE%║ Claude Code + LiteLLM 本地模型启动器 ║%RESET% echo %BLUE%╚══════════════════════════════════════════════════════════╝%RESET% echo. :: 检查 Python 环境 python --version >nul 2>&1 if errorlevel 1 ( echo %RED%[错误] 未找到 Python,请安装 Python 3.8+%RESET% pause exit /b 1 ) :: 检查 pip 包 pip show litellm >nul 2>&1 if errorlevel 1 ( echo %YELLOW%[提示] LiteLLM 未安装,正在安装...%RESET% pip install 'litellm[proxy]' if errorlevel 1 ( echo %RED%[错误] LiteLLM 安装失败%RESET% pause exit /b 1 ) ) :: 停止现有服务(可选) echo 是否停止现有服务?(Y/N) choice /c YN /n /m "选择: " if errorlevel 2 goto :start_services if errorlevel 1 ( echo 正在停止现有服务... taskkill /F /FI "WINDOWTITLE eq LiteLLM*" >nul 2>&1 taskkill /F /FI "WINDOWTITLE eq Claude Code*" >nul 2>&1 timeout /t 2 /nobreak >nul ) :start_services :: 确保 Ollama 运行 start "Ollama Service" cmd /k "ollama serve" timeout /t 3 /nobreak >nul :: 启动 LiteLLM(最小化窗口) start "LiteLLM" cmd /k "title LiteLLM Service && litellm --config C:\Users\xxxxxx\litellm_config.yaml --port 4000 --debug" :: 等待服务就绪 echo %YELLOW%等待 LiteLLM 服务启动...%RESET% set WAIT_COUNT=0 :wait_loop timeout /t 2 /nobreak >nul set /a WAIT_COUNT+=1 curl -s http://localhost:4000/health >nul 2>&1 if not errorlevel 1 ( echo %GREEN%LiteLLM 服务已就绪!%RESET% goto :start_claude ) if %WAIT_COUNT% lss 15 goto :wait_loop echo %RED%服务启动超时,但将继续启动 Claude Code%RESET% :start_claude :: 创建快捷启动脚本 set CLAUDE_SCRIPT=%TEMP%\claude_temp.bat ( echo @echo off echo title Claude Code ^(Connected to LiteLLM^) echo set ANTHROPIC_BASE_URL=http://localhost:4000 echo set ANTHROPIC_AUTH_TOKEN=dummy echo set CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 echo echo %GREEN%已连接到 LiteLLM 服务%RESET% echo echo. echo claude --model claude-3-sonnet-20240620 echo if errorlevel 1 ^( echo echo %RED%Claude Code 启动失败%RESET% echo echo 请确认: 1. LiteLLM 服务正在运行 2. 模型名称正确 echo pause echo ^) ) > "%CLAUDE_SCRIPT%" start "Claude Code" cmd /k "call "%CLAUDE_SCRIPT%"" echo. echo %GREEN%========================================%RESET% echo %GREEN% 所有服务已启动!%RESET% echo %GREEN%========================================%RESET% echo. echo 服务状态: echo [√] LiteLLM 服务窗口已打开 echo [√] Claude Code 窗口已打开 echo. echo 使用说明: echo 1. 保持所有窗口运行 echo 2. 在 Claude Code 中输入 /model 确认模型 echo 3. 测试: "写一个 Hello World 程序" echo. echo %YELLOW%按任意键关闭此管理器%RESET% pause >nul :: 清理临时文件 del "%CLAUDE_SCRIPT%" 2>nul

使用说明

准备工作

  1. 将上述任一脚本保存为.bat文件,例如:

    • start_claude_lite.bat(版本一)
    • start_claude_advanced.bat(版本二)
    • start_claude_manager.bat(版本三)
  2. 确保 LiteLLM 配置文件存在:

    C:\Users\xxxxxx\litellm_config.yaml
  3. 确认 Ollama 已安装并有所需模型:

    ollama list# 确保有 qwen2.5-coder:7b 或其他模型

运行脚本

# 直接双击运行,或右键选择"以管理员身份运行"start_claude_lite.bat

版本选择建议

版本特点适用场景
版本一简洁、稳定日常使用,快速启动
版本二详细日志、错误处理首次配置,排查问题
版本三交互式选择、服务管理需要手动控制服务的场景

脚本功能说明

所有版本都实现了:

  1. ✅ 先启动 LiteLLM 服务(第一个 CMD 窗口)
  2. ✅ 等待服务就绪(健康检查)
  3. ✅ 服务成功后启动 Claude Code(第二个 CMD 窗口)
  4. ✅ 自动设置所需的环境变量

版本二额外功能:

  • 详细的启动日志
  • 端口占用检测和清理
  • 配置文件验证
  • API 功能测试
  • 临时文件自动清理

版本三额外功能:

  • Python 环境检查
  • LiteLLM 包自动安装
  • 服务状态管理
  • 彩色输出显示

注意事项

  1. 首次运行可能需要管理员权限(用于端口检测和清理)

  2. 如果 LiteLLM 服务启动失败,脚本会提示错误信息,请检查:

    • 配置文件格式是否正确
    • 端口 4000 是否被占用
    • Python 依赖是否完整
  3. 关闭方式

    • 先关闭 Claude Code 窗口
    • 再关闭 LiteLLM 服务窗口
    • 管理器窗口可随时关闭

选择你喜欢的版本保存为.bat文件,双击运行即可!

http://www.cnnetsun.cn/news/1518896.html

相关文章:

  • Vivado中include与import常见报错解析与实战解决方案
  • 短信营销API接口参考文档:涵盖字段定义、鉴权流程与多语言开发包
  • OpenClaw多通道通知:百川2-13B任务结果同时推送邮件与飞书
  • TCP 1
  • 掌握 AgentScope 与 Spring AI Alibaba:大模型多智能体实践指南(收藏版)
  • 如何快速掌握League-Toolkit:面向英雄联盟玩家的终极工具集完整指南
  • 别再手动爬数据了!用Kettle的HTTP Client组件,5分钟搞定网页数据抓取与解析
  • 高项软考-项目干系人管理-知识点及考点预测
  • 交叉编译链
  • 7个维度解析开源字体解决方案:从技术实现到商业价值提升
  • Pi0 Robot Control Center效果展示:同一指令下不同视角输入的动作鲁棒性对比
  • 不止于教程:用v4l2loopback在鲁班猫RK3588上玩转虚拟摄像头,解锁OBS推流、视频会议新姿势
  • 如何高效获取B站资源:DownKyi视频下载工具的完整指南
  • 如何让微信聊天记录成为你的数字财富:WeChatMsg完整解决方案
  • 3步打造专业级手游操控体验:QtScrcpy全场景配置指南
  • 终极指南:如何用阿里云盘CLI快速分享大文件
  • Nano-Banana算法优化实战:提升复杂结构拆解效率
  • RTX 4090D 24G部署PyTorch 2.8镜像实操手册:/workspace与/data盘高效协同指南
  • STM32F103C8T6驱动VEML7700环境光传感器:从I2C轮询到DMA的三种驱动方式详解
  • 终极风扇控制指南:如何用FanControl彻底解决电脑噪音和散热问题
  • AI赋能ffmpeg:让快马平台智能解析你的视频处理需求并生成命令
  • 避开80和3306端口冲突!用Docker在Linux服务器上5分钟搞定DataEase安装
  • OCLP-Mod:终极指南 - 让老旧Mac免费升级到最新macOS
  • ATF16V8BQL-15JU:Microchip经典PLD,8宏单元,PLCC-20封装,工业级
  • Tint Shade Generator:专业色彩方案生成工具的技术解析与实战价值
  • GPT-5开始“讲题”了?思维链技术揭秘AI的“思考”革命,未来AI将如何改变我们的生活?
  • 涂装工艺的数字化转型:从经验依赖到数据驱动的系统性重构
  • 资源嗅探与批量下载:多平台网络资源获取解决方案——内容创作者的媒体资源管理工具
  • 金蝶云星空集成致远OA的5个高效技巧:避开这些坑让你的业务流转更顺畅
  • 精选深度测评|2025年AI编程工具权威推荐:8大主流AI 编程工具深度对比与选型指南