fix(eltex): default to anth-glm-5.3, drop forced ENABLE_TOOL_SEARCH
Admins moved the pilot to anth-glm-5.3: proxy deployments on the Z.ai Anthropic endpoint. Checked on all 6 pilot keys: 48/48 requests served by glm-5.3 (no flash), images recognised via Z.ai analyze_image in Claude Code 8/8. zai-glm-5.3 goes through an auto-router that swaps in glm-5.3-flash, so ai-eltex now prefers anth-glm-5.3 when the key has it (ELTEX_MODEL still overrides). ENABLE_TOOL_SEARCH is no longer forced: on the anthropic path GLM searched for Read/Bash via ToolSearch and decided they were missing. Effort still has no effect: Claude Code sends output_config.effort, but LiteLLM drops it (direct Z.ai low/max = 81/3712 output tokens, via the proxy ~3-5K at any level). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -161,7 +161,7 @@ bash tests/test_network.sh # полные тесты
|
|||||||
- `ai-deepseek` - Claude Code через DeepSeek API
|
- `ai-deepseek` - Claude Code через DeepSeek API
|
||||||
- `ai-kimi` - Claude Code через официальный Kimi Code API (`api.kimi.com/coding`)
|
- `ai-kimi` - Claude Code через официальный Kimi Code API (`api.kimi.com/coding`)
|
||||||
- `ai-glm` - Claude Code через Zhipu AI GLM 5.3 API (`api.z.ai/api/anthropic`)
|
- `ai-glm` - Claude Code через Zhipu AI GLM 5.3 API (`api.z.ai/api/anthropic`)
|
||||||
- `ai-eltex` - Claude Code через корпоративный LLM-прокси Eltex (`http://llm.eltex.loc:4000`, LiteLLM, team-подписка GLM). Ключ выдают админы ([дока](https://intdocs.eltex.loc/pages/viewpage.action?pageId=262329878)), модель берётся из списка разрешённых ключу; переопределение: `ELTEX_MODEL`, `ELTEX_BASE_URL`
|
- `ai-eltex` - Claude Code через корпоративный LLM-прокси Eltex (`http://llm.eltex.loc:4000`, LiteLLM, team-подписка GLM). Ключ выдают админы ([дока](https://intdocs.eltex.loc/pages/viewpage.action?pageId=262329878)), по умолчанию модель `anth-glm-5.3` (Anthropic-эндпоинт Z.ai: настоящая GLM 5.3 и картинки), если она есть у ключа, иначе первая из разрешённых ключу; переопределение: `ELTEX_MODEL`, `ELTEX_BASE_URL`
|
||||||
- `ai-openrouter` - Claude Code через OpenRouter (GPT-5.5, Grok, Qwen, GLM 5.2 и др.)
|
- `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-opencode` - Claude Code через OpenCode Go + routatic-proxy (DeepSeek, Kimi, Qwen, GLM, MiniMax, MiMo)
|
||||||
- `ai-gemini` - нативный Antigravity CLI `agy`
|
- `ai-gemini` - нативный Antigravity CLI `agy`
|
||||||
|
|||||||
@@ -1770,16 +1770,19 @@ if [ -z "$api_key" ]; then
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Модель: ELTEX_MODEL, иначе первая из разрешённых ключу (у разных ключей разные модели,
|
# Модель: ELTEX_MODEL, иначе anth-glm-5.3, если она есть у ключа, иначе первая из
|
||||||
# например zai-glm-5.3 или Eltex-Coder-Senior из доки).
|
# разрешённых ключу (у других ключей другие модели, например Eltex-Coder-Senior из доки).
|
||||||
|
# anth-glm-5.3 - деплойменты на Anthropic-эндпоинте Z.ai: всегда настоящая glm-5.3 и
|
||||||
|
# картинки через серверный analyze_image. zai-glm-5.3 - OpenAI-эндпоинт с автороутером,
|
||||||
|
# который подменяет модель на glm-5.3-flash.
|
||||||
model="${ELTEX_MODEL:-}"
|
model="${ELTEX_MODEL:-}"
|
||||||
if [ -z "$model" ]; then
|
if [ -z "$model" ]; then
|
||||||
model=$(echo "$_CLAUDE_TEST_BODY" | python3 -c '
|
model=$(echo "$_CLAUDE_TEST_BODY" | python3 -c '
|
||||||
import sys, json
|
import sys, json
|
||||||
ids = [m["id"] for m in json.load(sys.stdin).get("data", [])]
|
ids = [m["id"] for m in json.load(sys.stdin).get("data", [])]
|
||||||
print(ids[0] if ids else "")' 2>/dev/null)
|
print("anth-glm-5.3" if "anth-glm-5.3" in ids else (ids[0] if ids else ""))' 2>/dev/null)
|
||||||
fi
|
fi
|
||||||
model="${model:-zai-glm-5.3}"
|
model="${model:-anth-glm-5.3}"
|
||||||
echo "Модель: $model"
|
echo "Модель: $model"
|
||||||
|
|
||||||
_PROMPT_FILE=$(mktemp /tmp/ai-sys-prompt.XXXXXX)
|
_PROMPT_FILE=$(mktemp /tmp/ai-sys-prompt.XXXXXX)
|
||||||
@@ -1789,12 +1792,13 @@ export AI_LAUNCHER=eltex
|
|||||||
export CLAUDE_CONFIG_DIR="$HOME/.config/ai-setup/cfg/eltex"
|
export CLAUDE_CONFIG_DIR="$HOME/.config/ai-setup/cfg/eltex"
|
||||||
# Пикер: все три слота = модель ключа. availableModels НЕ задаём (он схлопывает пикер);
|
# Пикер: все три слота = модель ключа. availableModels НЕ задаём (он схлопывает пикер);
|
||||||
# незаданный слот показал бы чужой Claude.
|
# незаданный слот показал бы чужой Claude.
|
||||||
# Прокси сам транслирует запросы в OpenAI-формат и игнорирует effort/thinking (GLM
|
# Effort: Claude Code шлёт output_config.effort и без CLAUDE_CODE_ALWAYS_ENABLE_EFFORT,
|
||||||
# думает всегда), поэтому CLAUDE_CODE_ALWAYS_ENABLE_EFFORT не нужен, а /effort ни на что
|
# но LiteLLM прокси его вырезает, поэтому /effort пока ни на что не влияет (07.10:
|
||||||
# не влияет.
|
# напрямую в Z.ai low/max = 81/3712 выходных токенов, через прокси ~3-5K на любом уровне).
|
||||||
# Env из доки админов: API_TIMEOUT_MS (прокси бывает медленным), автокомпакт на 200K.
|
# Env из доки админов: API_TIMEOUT_MS (прокси бывает медленным), автокомпакт на 200K.
|
||||||
# ENABLE_TOOL_SEARCH: со сторонним ANTHROPIC_BASE_URL Claude Code отключает отложенную
|
# ENABLE_TOOL_SEARCH НЕ включаем: на anthropic-деплойментах прокси (Z.ai /api/anthropic)
|
||||||
# загрузку MCP-тулов; эндпоинт llm2 tool_reference поддерживает (комментарии к доке).
|
# GLM с ним путается - ищет Read/Bash через ToolSearch и решает, что их нет. Цена -
|
||||||
|
# схемы встроенных тулов в каждом запросе (~+11K входных токенов).
|
||||||
_setup_isolated_config eltex opus high ''
|
_setup_isolated_config eltex opus high ''
|
||||||
_apply_effort eltex high
|
_apply_effort eltex high
|
||||||
ANTHROPIC_BASE_URL="$eltex_base_url" \
|
ANTHROPIC_BASE_URL="$eltex_base_url" \
|
||||||
@@ -1813,7 +1817,6 @@ CLAUDE_CODE_AUTO_COMPACT_WINDOW=200000 \
|
|||||||
CLAUDE_CODE_DISABLE_1M_CONTEXT=1 \
|
CLAUDE_CODE_DISABLE_1M_CONTEXT=1 \
|
||||||
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 \
|
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 \
|
||||||
API_TIMEOUT_MS=600000 \
|
API_TIMEOUT_MS=600000 \
|
||||||
ENABLE_TOOL_SEARCH=true \
|
|
||||||
claude --dangerously-skip-permissions --system-prompt-file "$_PROMPT_FILE" "$@"
|
claude --dangerously-skip-permissions --system-prompt-file "$_PROMPT_FILE" "$@"
|
||||||
ELTEXEOF
|
ELTEXEOF
|
||||||
chmod +x "$BIN_DIR/ai-eltex"
|
chmod +x "$BIN_DIR/ai-eltex"
|
||||||
|
|||||||
@@ -123,11 +123,21 @@ test_eltex_claude_launcher() {
|
|||||||
test_eltex_model_from_key() {
|
test_eltex_model_from_key() {
|
||||||
if echo "$ELTEX_SECTION" | grep -q '/v1/models' \
|
if echo "$ELTEX_SECTION" | grep -q '/v1/models' \
|
||||||
&& echo "$ELTEX_SECTION" | grep -q 'model="${ELTEX_MODEL:-}"' \
|
&& echo "$ELTEX_SECTION" | grep -q 'model="${ELTEX_MODEL:-}"' \
|
||||||
|
&& echo "$ELTEX_SECTION" | grep -q '"anth-glm-5.3" if "anth-glm-5.3" in ids' \
|
||||||
&& echo "$ELTEX_SECTION" | grep -q 'ANTHROPIC_DEFAULT_OPUS_MODEL="$model"' \
|
&& echo "$ELTEX_SECTION" | grep -q 'ANTHROPIC_DEFAULT_OPUS_MODEL="$model"' \
|
||||||
&& echo "$ELTEX_SECTION" | grep -q 'ANTHROPIC_DEFAULT_HAIKU_MODEL="$model"'; then
|
&& echo "$ELTEX_SECTION" | grep -q 'ANTHROPIC_DEFAULT_HAIKU_MODEL="$model"'; then
|
||||||
ok "ai-eltex: model resolved from the key's /v1/models (ELTEX_MODEL overrides)"
|
ok "ai-eltex: prefers anth-glm-5.3 from the key's /v1/models (ELTEX_MODEL overrides)"
|
||||||
else
|
else
|
||||||
fail "ai-eltex: model must come from /v1/models or ELTEX_MODEL"
|
fail "ai-eltex: must prefer anth-glm-5.3 from /v1/models, ELTEX_MODEL overrides"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# ── ai-eltex: без ENABLE_TOOL_SEARCH (на anthropic-пути GLM теряет Read/Bash) ──
|
||||||
|
test_eltex_no_tool_search() {
|
||||||
|
if echo "$ELTEX_SECTION" | grep -q '^ENABLE_TOOL_SEARCH='; then
|
||||||
|
fail "ai-eltex: must not force ENABLE_TOOL_SEARCH (GLM loses core tools on anthropic path)"
|
||||||
|
else
|
||||||
|
ok "ai-eltex: ENABLE_TOOL_SEARCH not forced"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -356,6 +366,7 @@ test_glm_official_api
|
|||||||
test_glm_default_effort
|
test_glm_default_effort
|
||||||
test_eltex_claude_launcher
|
test_eltex_claude_launcher
|
||||||
test_eltex_model_from_key
|
test_eltex_model_from_key
|
||||||
|
test_eltex_no_tool_search
|
||||||
test_logout_eltex
|
test_logout_eltex
|
||||||
test_gemini_native_launcher
|
test_gemini_native_launcher
|
||||||
test_cursor_native_launcher
|
test_cursor_native_launcher
|
||||||
|
|||||||
Reference in New Issue
Block a user