diff --git a/scripts/ai-setup.sh b/scripts/ai-setup.sh index c955219..e91740d 100755 --- a/scripts/ai-setup.sh +++ b/scripts/ai-setup.sh @@ -1243,7 +1243,9 @@ fi _build_ai_sys_prompt > /dev/null # сохраняет в ~/.codex/AGENTS.md (codex читает авто) _setup_codex_sound_hooks -exec "$codex_bin" --dangerously-bypass-approvals-and-sandbox "$@" +exec "$codex_bin" --dangerously-bypass-approvals-and-sandbox \ + -c 'tui.status_line=["model-with-reasoning","git-branch","context-used","five-hour-limit","current-dir"]' \ + "$@" GPTEOF chmod +x "$BIN_DIR/ai-gpt" @@ -1644,9 +1646,10 @@ 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.3, Haiku = GLM 5.3[1m]. availableModels НЕ задаём -# (он схлопывает пикер). Claude Code навязывает 3 слота; незаданный показал бы -# чужой Claude, поэтому opus+sonnet = glm-5.3, haiku = glm-5.3[1m]. +# Пикер: все три слота = glm-5.3. availableModels НЕ задаём (он схлопывает пикер). +# Claude Code навязывает 3 слота; незаданный показал бы чужой Claude, поэтому +# opus+sonnet+haiku = glm-5.3. Окно контекста у всех слотов задаёт env +# CLAUDE_CODE_MAX_CONTEXT_TOKENS ниже — суффикс [1m] больше не нужен. _setup_isolated_config glm opus high '' # ai-glm стартует на /effort max. max невалиден в settings.json (там только # low/medium/high/xhigh), поэтому задаём через CLI --effort, а не _apply_effort. @@ -1657,6 +1660,10 @@ _setup_isolated_config glm opus high '' # а флаг заставлял бы счётчик ctx: считать окно = 200K (врал в ~5 раз). Прочие # лаунчеры (deepseek/kimi/openrouter/opencode) флаг оставляют — у них другой контекст # и флаг убирает [1M]-дубли из пикера; ai-claude его и так не использует. +# CLAUDE_CODE_MAX_CONTEXT_TOKENS: glm-* нет в реестре моделей Claude Code, поэтому +# окно по умолчанию считается = 200K — ctx: врал бы в ~5 раз, а автокомпакт жал бы +# сессию в 200K. Задаём реальное окно 1M явно; env применяется к не-claude моделям +# независимо от суффикса, поэтому [1m] у Haiku-слота не нужен и убран. ANTHROPIC_BASE_URL="$glm_base_url" \ ANTHROPIC_AUTH_TOKEN="$api_key" \ ANTHROPIC_DEFAULT_OPUS_MODEL=glm-5.3 \ @@ -1665,10 +1672,11 @@ 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] — расширенный контекст" \ +ANTHROPIC_DEFAULT_HAIKU_MODEL=glm-5.3 \ +ANTHROPIC_DEFAULT_HAIKU_MODEL_NAME="GLM 5.3" \ +ANTHROPIC_DEFAULT_HAIKU_MODEL_DESCRIPTION="GLM 5.3 — флагман Zhipu AI" \ CLAUDE_CODE_SUBAGENT_MODEL=glm-5.3 \ +CLAUDE_CODE_MAX_CONTEXT_TOKENS=1000000 \ 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" "$@" diff --git a/tests/test_fixes.sh b/tests/test_fixes.sh index ba3b73a..cd1862c 100755 --- a/tests/test_fixes.sh +++ b/tests/test_fixes.sh @@ -41,6 +41,15 @@ test_gpt_no_proxy() { fi } +# ── ai-gpt: informative Codex status line ─────────────────────────────────── +test_gpt_status_line() { + if echo "$GPT_SECTION" | grep -Fq 'tui.status_line=["model-with-reasoning","git-branch","context-used","five-hour-limit","current-dir"]'; then + ok "ai-gpt: shows model, branch, context usage, primary limit, and directory" + else + fail "ai-gpt: missing configured Codex status line" + fi +} + # ── ai-kimi: launches claude with Kimi backend ──────────────────────────── test_kimi_claude_launcher() { if echo "$KIMI_SECTION" | grep -q 'claude --dangerously-skip-permissions' \ @@ -86,11 +95,12 @@ test_glm_claude_launcher() { 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.3' \ - && echo "$GLM_SECTION" | grep -q "ANTHROPIC_DEFAULT_HAIKU_MODEL='glm-5.3\[1m\]'" \ + && echo "$GLM_SECTION" | grep -q 'ANTHROPIC_DEFAULT_HAIKU_MODEL=glm-5.3' \ + && echo "$GLM_SECTION" | grep -q 'CLAUDE_CODE_MAX_CONTEXT_TOKENS=1000000' \ && echo "$GLM_SECTION" | grep -q 'x-api-key'; then - ok "ai-glm: uses official Zhipu AI API (glm-5.3 opus/sonnet, glm-5.3[1m] haiku)" + ok "ai-glm: uses official Zhipu AI API (glm-5.3 everywhere, ctx window 1M via env)" else - fail "ai-glm: must use official Zhipu AI API with glm-5.3 and x-api-key" + fail "ai-glm: must use official Zhipu AI API with glm-5.3, 1M context window and x-api-key" fi } @@ -285,6 +295,7 @@ test_add_hook_syntax() { test_script_syntax test_gpt_autoinstall test_gpt_no_proxy +test_gpt_status_line test_kimi_claude_launcher test_kimi_official_api test_kimi_no_artemox