From f61f2cde84878ffe7a61a763f15ca49d9011855e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=B8=D1=82=D0=B0=D0=BB=D0=B8=D0=B9=20=D0=9D=D0=B8?= =?UTF-8?q?=D0=BA=D0=B8=D1=82=D0=B5=D0=BD=D0=BA=D0=BE?= Date: Mon, 17 Aug 2026 06:00:11 +0300 Subject: [PATCH] feat(glm): switch ai-glm to GLM 5.3 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit glm-5.3 доступна на api.z.ai (вышла 2026-08-14, 1M контекст): opus/sonnet = glm-5.3, haiku = glm-5.3[1m], subagent = glm-5.3, health-check ключа тоже на 5.3. Секция OpenRouter остаётся на z-ai/glm-5.2 — там 5.3 ещё нет. Co-Authored-By: Claude --- EFFORT_MAPPING.md | 6 +++--- README.md | 2 +- scripts/ai-setup.sh | 36 ++++++++++++++++++------------------ tests/test_fixes.sh | 8 ++++---- 4 files changed, 26 insertions(+), 26 deletions(-) diff --git a/EFFORT_MAPPING.md b/EFFORT_MAPPING.md index f9666fb..b16c434 100644 --- a/EFFORT_MAPPING.md +++ b/EFFORT_MAPPING.md @@ -13,7 +13,7 @@ ## Таблица маппинга -| Claude Code `/effort` | Anthropic (`ai-claude`) | DeepSeek V4 (`ai-deepseek`) | Kimi K2.7/K2.6 (`ai-kimi`) | GLM 5.2 (`ai-glm`) | OpenRouter/GPT-5.5 (`ai-openrouter`) | OpenCode Go (`ai-opencode`) | +| Claude Code `/effort` | Anthropic (`ai-claude`) | DeepSeek V4 (`ai-deepseek`) | Kimi K2.7/K2.6 (`ai-kimi`) | GLM 5.3 (`ai-glm`) | OpenRouter/GPT-5.5 (`ai-openrouter`) | OpenCode Go (`ai-opencode`) | |:---:|:---:|:---:|:---:|:---:|:---:|:---:| | `low` | нативно `low` | провайдер поднимает до `high` | thinking on | на стороне сервера | без локального маппинга | без локального маппинга | | `medium` | нативно `medium` | провайдер поднимает до `high` | thinking on | на стороне сервера | без локального маппинга | без локального маппинга | @@ -65,7 +65,7 @@ on / off - Градаций глубины reasoning нет. - Дефолт `ai-kimi`: `high`. -### GLM 5.2 (Zhipu AI) +### GLM 5.3 (Zhipu AI) ```text high / max @@ -99,7 +99,7 @@ Effort не преобразуется локально — thinking budget не | Anthropic | Не нужен | - | | DeepSeek V4 | DeepSeek API | На стороне сервера | | Kimi K2.7/K2.6 | Moonshot API | На стороне сервера | -| GLM 5.2 | Zhipu AI API | На стороне сервера | +| GLM 5.3 | Zhipu AI API | На стороне сервера | | OpenRouter/GPT-5.5 | Локального маппинга нет | `ai-openrouter` отправляет значение как есть | | OpenCode Go | Локального маппинга нет | `ai-opencode` отправляет значение через routatic-proxy | | Legacy GPT proxy | helper-маппинг `xhigh` -> `high` | `~/bin/claude-gpt-effort-proxy.py` или `~/.local/bin/claude-gpt-effort-proxy.py` | diff --git a/README.md b/README.md index 1b08393..2b293d2 100644 --- a/README.md +++ b/README.md @@ -151,7 +151,7 @@ bash tests/test_network.sh # полные тесты - `ai-gpt` - нативный OpenAI Codex CLI - `ai-deepseek` - Claude Code через DeepSeek API - `ai-kimi` - Claude Code через официальный Kimi Code API (`api.kimi.com/coding`) -- `ai-glm` - Claude Code через Zhipu AI GLM 5.2 API (`api.z.ai/api/anthropic`) +- `ai-glm` - Claude Code через Zhipu AI GLM 5.3 API (`api.z.ai/api/anthropic`) - `ai-openrouter` - Claude Code через OpenRouter (GPT-5.5, Grok, Qwen, GLM 5.2 и др.) - `ai-opencode` - Claude Code через OpenCode Go + routatic-proxy (DeepSeek, Kimi, Qwen, GLM, MiniMax, MiMo) - `ai-gemini` - нативный Antigravity CLI `agy` diff --git a/scripts/ai-setup.sh b/scripts/ai-setup.sh index 7b3b8af..c955219 100755 --- a/scripts/ai-setup.sh +++ b/scripts/ai-setup.sh @@ -1560,7 +1560,7 @@ chmod +x "$BIN_DIR/ai-kimi" # === ai-glm === cat > "$BIN_DIR/ai-glm" << 'GLMEOF' #!/usr/bin/env bash -# ai-glm - запуск Claude Code через Zhipu AI GLM 5.2 (Anthropic-compatible API) +# ai-glm - запуск Claude Code через Zhipu AI GLM 5.3 (Anthropic-compatible API) source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/ai-api-helpers.sh" 2>/dev/null || true key_file="$HOME/.config/ai-setup/glm_key" @@ -1580,7 +1580,7 @@ glm_base_url="${GLM_BASE_URL:-https://api.z.ai/api/anthropic}" if [ -n "$api_key" ]; then echo -n "Проверка сохранённого GLM ключа... " - _claude_test_api "$glm_base_url/v1/messages" "x-api-key: $api_key" "glm-5.2" + _claude_test_api "$glm_base_url/v1/messages" "x-api-key: $api_key" "glm-5.3" _handle_api_response "GLM" "$_CLAUDE_TEST_CODE" "$_CLAUDE_TEST_BODY" "Пополните баланс: https://z.ai/manage-apikey/apikey-list" ret=$_API_RET if [ $ret -eq 401 ]; then @@ -1621,7 +1621,7 @@ if [ -z "$api_key" ]; then [ -z "$api_key" ] && { echo "Выход."; exit 1; } echo -n "Проверяю ключ... " - _claude_test_api "$glm_base_url/v1/messages" "x-api-key: $api_key" "glm-5.2" + _claude_test_api "$glm_base_url/v1/messages" "x-api-key: $api_key" "glm-5.3" _handle_api_response "GLM" "$_CLAUDE_TEST_CODE" "$_CLAUDE_TEST_BODY" "Пополните баланс: https://z.ai/manage-apikey/apikey-list" ret=$_API_RET if [ $ret -eq 0 ] || [ $ret -eq 429 ]; then @@ -1644,31 +1644,31 @@ trap 'rm -f "$_PROMPT_FILE"' EXIT INT TERM _build_ai_sys_prompt > "$_PROMPT_FILE" export AI_LAUNCHER=glm export CLAUDE_CONFIG_DIR="$HOME/.config/ai-setup/cfg/glm" -# Пикер: Opus/Sonnet = GLM 5.2, Haiku = GLM 5.2[1m]. availableModels НЕ задаём +# Пикер: Opus/Sonnet = GLM 5.3, Haiku = GLM 5.3[1m]. availableModels НЕ задаём # (он схлопывает пикер). Claude Code навязывает 3 слота; незаданный показал бы -# чужой Claude, поэтому opus+sonnet = glm-5.2, haiku = glm-5.2[1m]. +# чужой Claude, поэтому opus+sonnet = glm-5.3, haiku = glm-5.3[1m]. _setup_isolated_config glm opus high '' # ai-glm стартует на /effort max. max невалиден в settings.json (там только # low/medium/high/xhigh), поэтому задаём через CLI --effort, а не _apply_effort. # CLAUDE_CODE_ALWAYS_ENABLE_EFFORT заставляет Claude Code отправлять effort в API -# для GLM (иначе glm-5.2 не распознан как effort-capable и параметр не уходит). +# для GLM (иначе glm-5.3 не распознан как effort-capable и параметр не уходит). # /effort внутри сессии работает; ручной override запуска: AI_EFFORT=high ai-glm. -# CLAUDE_CODE_DISABLE_1M_CONTEXT НЕ выставляем: GLM 5.2 реально держит 1M контекста, +# CLAUDE_CODE_DISABLE_1M_CONTEXT НЕ выставляем: GLM 5.3 реально держит 1M контекста, # а флаг заставлял бы счётчик ctx: считать окно = 200K (врал в ~5 раз). Прочие # лаунчеры (deepseek/kimi/openrouter/opencode) флаг оставляют — у них другой контекст # и флаг убирает [1M]-дубли из пикера; ai-claude его и так не использует. ANTHROPIC_BASE_URL="$glm_base_url" \ ANTHROPIC_AUTH_TOKEN="$api_key" \ -ANTHROPIC_DEFAULT_OPUS_MODEL=glm-5.2 \ -ANTHROPIC_DEFAULT_OPUS_MODEL_NAME="GLM 5.2" \ -ANTHROPIC_DEFAULT_OPUS_MODEL_DESCRIPTION="GLM 5.2 — флагман Zhipu AI" \ -ANTHROPIC_DEFAULT_SONNET_MODEL=glm-5.2 \ -ANTHROPIC_DEFAULT_SONNET_MODEL_NAME="GLM 5.2" \ -ANTHROPIC_DEFAULT_SONNET_MODEL_DESCRIPTION="GLM 5.2 — флагман Zhipu AI" \ -ANTHROPIC_DEFAULT_HAIKU_MODEL='glm-5.2[1m]' \ -ANTHROPIC_DEFAULT_HAIKU_MODEL_NAME="GLM 5.2 [1M]" \ -ANTHROPIC_DEFAULT_HAIKU_MODEL_DESCRIPTION="GLM 5.2 [1M] — расширенный контекст" \ -CLAUDE_CODE_SUBAGENT_MODEL=glm-5.2 \ +ANTHROPIC_DEFAULT_OPUS_MODEL=glm-5.3 \ +ANTHROPIC_DEFAULT_OPUS_MODEL_NAME="GLM 5.3" \ +ANTHROPIC_DEFAULT_OPUS_MODEL_DESCRIPTION="GLM 5.3 — флагман Zhipu AI" \ +ANTHROPIC_DEFAULT_SONNET_MODEL=glm-5.3 \ +ANTHROPIC_DEFAULT_SONNET_MODEL_NAME="GLM 5.3" \ +ANTHROPIC_DEFAULT_SONNET_MODEL_DESCRIPTION="GLM 5.3 — флагман Zhipu AI" \ +ANTHROPIC_DEFAULT_HAIKU_MODEL='glm-5.3[1m]' \ +ANTHROPIC_DEFAULT_HAIKU_MODEL_NAME="GLM 5.3 [1M]" \ +ANTHROPIC_DEFAULT_HAIKU_MODEL_DESCRIPTION="GLM 5.3 [1M] — расширенный контекст" \ +CLAUDE_CODE_SUBAGENT_MODEL=glm-5.3 \ CLAUDE_CODE_ALWAYS_ENABLE_EFFORT=1 \ CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 \ claude --dangerously-skip-permissions --effort "${AI_EFFORT:-max}" --system-prompt-file "$_PROMPT_FILE" "$@" @@ -2005,7 +2005,7 @@ echo " На базе Claude Code:" echo -e " ${CYAN}ai-claude${NC} - Оригинальный Claude Code (Anthropic)" echo -e " ${CYAN}ai-deepseek${NC} - DeepSeek (через Claude Code, API ключ сохраняется)" echo -e " ${CYAN}ai-kimi${NC} - Kimi K2.7 Code (через Claude Code, API ключ сохраняется)" -echo -e " ${CYAN}ai-glm${NC} - GLM 5.2 (через Claude Code, Zhipu AI API)" +echo -e " ${CYAN}ai-glm${NC} - GLM 5.3 (через Claude Code, Zhipu AI API)" echo -e " ${CYAN}ai-openrouter${NC} - OpenRouter (через Claude Code: GPT-5.5, Grok, Qwen, GLM 5.2 и др.)" echo -e " ${CYAN}ai-opencode${NC} - OpenCode Go (через Claude Code + routatic-proxy: DeepSeek, Kimi, Qwen, GLM, MiniMax, MiMo)" echo "" diff --git a/tests/test_fixes.sh b/tests/test_fixes.sh index 87af425..ba3b73a 100755 --- a/tests/test_fixes.sh +++ b/tests/test_fixes.sh @@ -85,12 +85,12 @@ test_glm_claude_launcher() { # ── ai-glm: uses official Zhipu AI API ──────────────────────────────────── test_glm_official_api() { if echo "$GLM_SECTION" | grep -q 'api.z.ai/api/anthropic' \ - && echo "$GLM_SECTION" | grep -q 'ANTHROPIC_DEFAULT_OPUS_MODEL=glm-5.2' \ - && echo "$GLM_SECTION" | grep -q "ANTHROPIC_DEFAULT_HAIKU_MODEL='glm-5.2\[1m\]'" \ + && echo "$GLM_SECTION" | grep -q 'ANTHROPIC_DEFAULT_OPUS_MODEL=glm-5.3' \ + && echo "$GLM_SECTION" | grep -q "ANTHROPIC_DEFAULT_HAIKU_MODEL='glm-5.3\[1m\]'" \ && echo "$GLM_SECTION" | grep -q 'x-api-key'; then - ok "ai-glm: uses official Zhipu AI API (glm-5.2 opus/sonnet, glm-5.2[1m] haiku)" + ok "ai-glm: uses official Zhipu AI API (glm-5.3 opus/sonnet, glm-5.3[1m] haiku)" else - fail "ai-glm: must use official Zhipu AI API with glm-5.2 and x-api-key" + fail "ai-glm: must use official Zhipu AI API with glm-5.3 and x-api-key" fi }