@echo off
chcp 65001 >nul
setlocal EnableExtensions EnableDelayedExpansion
title Claude Code + GLM-5.3-Flash (OpenRouter)
REM ============================================================================
REM GLM.bat – Claude Code na GLM-5.3-Flash pres OpenRouter
REM
REM model z-ai/glm-5.3-flash pres OpenRouter, nikoliv lokalni GPU.
REM
REM OpenRouter endpoint:
REM https://openrouter.ai/api
REM
REM Klic:
REM C:\llama_setup\or-key.txt
REM
REM Co skript udela:
REM 1. Nacte OpenRouter klic pouze do teto session (zadny setx).
REM 2. Namapuje vsechny modelove sloty Claude Code na GLM-5.3-Flash.
REM 3. Parametr –model prebije model nastaveny v ~/.claude/settings.json.
REM 4. Parametr –name zobrazi GLM-5.3-Flash v titulku a rozhrani.
REM 5. Identitu vlozi:
REM – do kazdeho requestu pres –append-system-prompt-file
REM – pres extra CLAUDE.md pomoci –add-dir
REM – pres SessionStart hook v samostatnem settings.json
REM
REM Tim zustava identita zachovana i po /compact, /capture a /recap.
REM
REM Pouziti:
REM GLM.bat
REM GLM.bat C:\projekt
REM nebo pretahni slozku na GLM.bat
REM
REM Navrat na standardni cloud Claude:
REM Zavri toto okno.
REM ============================================================================
REM ============================================================================
REM ZAKLADNI KONFIGURACE
REM ============================================================================
set „ROOT=%~dp0“
REM Odstran koncove zpetne lomitko.
if „!ROOT:~-1!“==“\“ set „ROOT=!ROOT:~0,-1!“
set „KEYFILE=!ROOT!\or-key.txt“
set „IDENT_DIR=!ROOT!\glm_cc“
set „IDENT_MD=!IDENT_DIR!\CLAUDE.md“
set „IDENT_SETTINGS=!IDENT_DIR!\settings.json“
set „CCMODEL=z-ai/glm-5.3-flash“
REM ============================================================================
REM CLAUDE CODE
REM ============================================================================
set „CLAUDE_BIN=claude“
if exist „%USERPROFILE%\.local\bin\claude.exe“ (
set „CLAUDE_BIN=%USERPROFILE%\.local\bin\claude.exe“
)
REM ============================================================================
REM ADRESAR PROJEKTU
REM
REM Pokud je predan prvni argument, pouzij jej.
REM Jinak pouzij aktualni adresar.
REM ============================================================================
if „%~1″==““ (
set „PROJECT_DIR=%CD%“
) else (
set „PROJECT_DIR=%~f1“
)
if not exist „!PROJECT_DIR!\“ (
echo.
echo [ERROR] Adresar neexistuje:
echo !PROJECT_DIR!
echo.
pause
exit /b 1
)
REM ============================================================================
REM KONTROLA SOUBORU
REM ============================================================================
if not exist „!KEYFILE!“ (
echo.
echo [ERROR] Chybi OpenRouter klic:
echo !KEYFILE!
echo.
pause
exit /b 1
)
if not exist „!IDENT_MD!“ (
echo.
echo [ERROR] Chybi soubor identity:
echo !IDENT_MD!
echo.
pause
exit /b 1
)
if not exist „!IDENT_SETTINGS!“ (
echo.
echo [ERROR] Chybi settings identity:
echo !IDENT_SETTINGS!
echo.
pause
exit /b 1
)
REM ============================================================================
REM NACITANI OPENROUTER KLIKE
REM
REM Nacte prvni neprazdny radek.
REM Klic zustane pouze v teto CMD session.
REM ============================================================================
set „ORKEY=“
for /f „usebackq tokens=* delims=“ %%A in („!KEYFILE!“) do (
if not „%%A“==““ (
set „ORKEY=%%A“
goto :gotkey
)
)
:gotkey
if not defined ORKEY (
echo.
echo [ERROR] Soubor s OpenRouter klicem je prazdny:
echo !KEYFILE!
echo.
pause
exit /b 1
)
if /i not „!ORKEY:~0,6!“==“sk-or-“ (
echo.
echo [ERROR] Soubor nevypada jako platny OpenRouter klic.
echo Ocekavam prefix: sk-or-
echo Soubor: !KEYFILE!
echo.
pause
exit /b 1
)
REM ============================================================================
REM KONTROLA CURL
REM ============================================================================
where curl.exe >nul 2>&1
if errorlevel 1 (
echo.
echo [ERROR] curl.exe nebyl nalezen.
echo.
pause
exit /b 1
)
REM ============================================================================
REM OVERENI OPENROUTER KLIKE
REM ============================================================================
set „PROBE=%TEMP%\glm_or_auth_%RANDOM%.json“
set „PROBE_CODE=%TEMP%\glm_or_auth_%RANDOM%.code“
curl.exe ^
-sS ^
–max-time 20 ^
-o „!PROBE!“ ^
-w „%%{http_code}“ ^
-H „Authorization: Bearer !ORKEY!“ ^
„https://openrouter.ai/api/v1/auth/key“ ^
> „!PROBE_CODE!“ 2>nul
set „CURL_RESULT=!ERRORLEVEL!“
set „HTTPCODE=“
if exist „!PROBE_CODE!“ (
for /f „usebackq delims=“ %%C in („!PROBE_CODE!“) do (
set „HTTPCODE=%%C“
)
)
del /q „!PROBE_CODE!“ >nul 2>&1
del /q „!PROBE!“ >nul 2>&1
if not „!CURL_RESULT!“==“0“ (
echo.
echo [ERROR] Nepodarilo se spojit s OpenRouterem.
echo curl exit code: !CURL_RESULT!
echo.
pause
exit /b 1
)
if not „!HTTPCODE!“==“200“ (
echo.
echo [ERROR] OpenRouter klic neprosel kontrolou.
echo HTTP kod: !HTTPCODE!
echo Soubor: !KEYFILE!
echo.
pause
exit /b 1
)
REM ============================================================================
REM OPENROUTER / ANTHROPIC KOMPATIBILNI API
REM
REM OpenRouter Anthropic endpoint:
REM
REM ANTHROPIC_BASE_URL=https://openrouter.ai/api
REM
REM Claude Code si samo doplni /v1/messages.
REM
REM ANTHROPIC_API_KEY nechavame prazdny, aby Claude Code nepouzilo
REM standardni Anthropic API autentizaci misto OpenRouter Bearer tokenu.
REM ============================================================================
set „ANTHROPIC_BASE_URL=https://openrouter.ai/api“
set „ANTHROPIC_AUTH_TOKEN=!ORKEY!“
set „ANTHROPIC_API_KEY=“
set „OPENROUTER_API_KEY=!ORKEY!“
REM ============================================================================
REM VSECHNY MODELOVE SLOTY -> GLM-5.3-FLASH
REM ============================================================================
set „ANTHROPIC_MODEL=!CCMODEL!“
set „ANTHROPIC_SMALL_FAST_MODEL=!CCMODEL!“
set „ANTHROPIC_DEFAULT_HAIKU_MODEL=!CCMODEL!“
set „ANTHROPIC_DEFAULT_SONNET_MODEL=!CCMODEL!“
set „ANTHROPIC_DEFAULT_OPUS_MODEL=!CCMODEL!“
set „ANTHROPIC_DEFAULT_FABLE_MODEL=!CCMODEL!“
set „CLAUDE_CODE_SUBAGENT_MODEL=!CCMODEL!“
REM ============================================================================
REM CLAUDE CODE NASTAVENI
REM ============================================================================
set „CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY=1“
set „CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1“
set „CLAUDE_CODE_ATTRIBUTION_HEADER=0“
REM API timeout: 50 minut
set „API_TIMEOUT_MS=3000000“
REM ============================================================================
REM KONTEXT
REM
REM Pouzivame 1 048 576 tokenu jako bezpecnejsi spolecny limit.
REM Nekteri provideri mohou podporovat vice, ale nizsi hodnota omezuje
REM riziko, ze request spadne pri prepnuti providera.
REM ============================================================================
set „CLAUDE_CODE_MAX_CONTEXT_TOKENS=1048576“
REM Automatickou kompresi posun co nejblize limitu kontextu.
set „CLAUDE_CODE_AUTO_COMPACT_WINDOW=1000000“
set „CLAUDE_AUTOCOMPACT_PCT_OVERRIDE=85“
REM ============================================================================
REM VYSTUP / THINKING / MCP
REM
REM Limity jsou zdvojnasobene oproti puvodni konfiguraci:
REM
REM output: 32768 -> 65536
REM thinking: 16000 -> 32000
REM MCP: 8000 -> 16000
REM ============================================================================
set „CLAUDE_CODE_MAX_OUTPUT_TOKENS=65536“
set „MAX_THINKING_TOKENS=32000“
set „MAX_MCP_OUTPUT_TOKENS=16000“
REM ============================================================================
REM PAMET / CLAUDE.MD / SKILLY
REM
REM DULEZITE:
REM
REM Nenastavovat:
REM
REM CLAUDE_CODE_DISABLE_CLAUDE_MDS
REM CLAUDE_CODE_DISABLE_AUTO_MEMORY
REM
REM /capture a /recap pouzivaji CLAUDE.md, .maestro/sessions
REM a skilly ulozene v ~/.claude/skills.
REM ============================================================================
REM ============================================================================
REM START
REM ============================================================================
pushd „!PROJECT_DIR!“ || (
echo.
echo [ERROR] Nelze vstoupit do adresare:
echo !PROJECT_DIR!
echo.
pause
exit /b 1
)
echo.
echo ============================================================
echo Claude Code -^> GLM-5.3-Flash (OpenRouter)
echo ============================================================
echo.
echo Model: GLM-5.3-Flash
echo Slug: !CCMODEL!
echo Projekt: !CD!
echo Endpoint: !ANTHROPIC_BASE_URL!
echo.
echo Kontext: !CLAUDE_CODE_MAX_CONTEXT_TOKENS!
echo Output: !CLAUDE_CODE_MAX_OUTPUT_TOKENS!
echo Thinking: !MAX_THINKING_TOKENS!
echo MCP output: !MAX_MCP_OUTPUT_TOKENS!
echo.
echo Identita:
echo – –name
echo – system prompt
echo – CLAUDE.md
echo – SessionStart
echo.
echo ————————————————————
echo /capture a /recap zustavaji zapnute.
echo Overeni v Claude Code: /status
echo Navrat na cloud Claude: zavri toto okno.
echo ============================================================
echo.
REM ============================================================================
REM –model
REM Prebije napr. „model“: „opus[1m]“ v settings.json.
REM
REM –name
REM Jasne ukaze, ze session pouziva GLM-5.3-Flash.
REM
REM –append-system-prompt-file
REM Identita se pridava do kazdeho requestu a zustava zachovana
REM i po /compact.
REM
REM –add-dir
REM Prida adresar s extra CLAUDE.md.
REM
REM –settings
REM Pouzije separatni settings.json napr. se SessionStart hookem.
REM
REM –autocompact 1M
REM Posune automatickou kompresi pro 1M kontext.
REM ============================================================================
„!CLAUDE_BIN!“ ^
–model „!CCMODEL!“ ^
–name „GLM-5.3-Flash“ ^
–add-dir „!IDENT_DIR!“ ^
–append-system-prompt-file „!IDENT_MD!“ ^
–settings „!IDENT_SETTINGS!“ ^
–autocompact 1M
set „CLAUDE_EXIT_CODE=!ERRORLEVEL!“
echo.
echo ============================================================
echo Claude Code skoncil s kodem !CLAUDE_EXIT_CODE!
echo ============================================================
echo.
popd
pause
endlocal & exit /b %CLAUDE_EXIT_CODE%
![]()