Claude Code now talks to the raw /anthropic path of the Eltex proxy, which forwards requests byte-for-byte to the Z.ai Anthropic endpoint, the same one ai-glm uses directly: - images work through Z.ai's server-side analyze_image (Read png -> server_tool_use analyze_image -> correct answer, same as ai-glm); the regular /v1/messages route converts to the OpenAI endpoint, where Z.ai rejects images with 400; - effort reaches Z.ai: low has no thinking, then medium < high < max; - prompt cache: ~99% of input is a cache read from the second turn, same as ai-glm. The key check and model pick still use the proxy root /v1/models. The model is glm-5.3 in every picker slot with [1m] for the 1M window; the anth-glm-5.3 / zai-glm-5.3 / flash names are gone. Effort stays max by default via CLI --effort. Checked on 20.10 on llm-t2.eltex.loc:4000; admins are moving that config to llm.eltex.loc:4000, which stays the default URL. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
13 KiB
Effort Mapping - соответствие уровней для Claude Code лаунчеров
Как это работает
/effort и AI_EFFORT относятся к лаунчерам, которые запускают Claude Code:
ai-claude, ai-deepseek, ai-kimi, ai-glm, ai-mimo, ai-qwen, ai-openrouter, ai-opencode.
Нативные лаунчеры ai-gpt (OpenAI Codex), ai-gemini (Antigravity agy) и ai-cursor
(Cursor CLI agent) не используют эту схему. У них свои настройки reasoning внутри
соответствующего CLI.
Документ отражает текущую реализацию scripts/ai-setup.sh.
Таблица маппинга
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 |
нативно low |
thinking on | нативно low |
без локального маппинга | без локального маппинга |
medium |
нативно medium |
провайдер поднимает до high |
thinking on | провайдер опускает до low |
без локального маппинга | без локального маппинга |
high |
нативно high |
нативно high |
thinking on | нативно high |
без локального маппинга | без локального маппинга |
xhigh |
нативно xhigh |
провайдер поднимает до high |
thinking on | провайдер опускает до high |
без локального маппинга | без локального маппинга |
max |
нативно max |
нативно max |
thinking on | нативно max |
без локального маппинга | без локального маппинга |
Для OpenRouter текущий лаунчер не делает локального преобразования effort и отправляет значение дальше через Claude Code/OpenRouter. Конкретная интерпретация зависит от выбранной модели и backend-а OpenRouter.
Для OpenCode Go лаунчер работает через routatic-proxy, который транслирует Anthropic-запросы
в OpenAI/Gemini-формат для OpenCode Go API. Локального маппинга effort нет — thinking budget
не транслируется напрямую в OpenCode Go бекенд. Прокси и бекенд-модели выполняют reasoning
на своей стороне независимо от уровня effort.
Нативные уровни каждого провайдера
Anthropic (Claude)
low -> medium -> high -> xhigh -> max
- 5 уровней, полное соответствие с Claude Code.
- Дефолт
ai-claude:xhigh. max- максимальный бюджет thinking для самых сложных задач.
DeepSeek V4
low -> high -> max
- 3 реальных уровня.
lowостаётсяlow— реально снижает thinking бюджет.mediumиxhighфактически поднимаются доhigh.maxостаётсяmax— максимальный бюджет thinking.- Маппинг выполняется на стороне DeepSeek API.
- Дефолт
ai-deepseek:high.
Kimi K2.7/K2.6 (Moonshot AI)
on / off
- Бинарный режим: thinking либо включен, либо выключен.
- Все уровни Claude Code effort в текущем лаунчере означают thinking on.
- Градаций глубины reasoning нет.
- Дефолт
ai-kimi:high.
GLM 5.3 (Zhipu AI)
low -> high -> max
- 3 реальных уровня, thinking выключить нельзя (
thinking.type=disabledтоже даёт reasoning). - Anthropic-endpoint Z.ai читает
output_config.effortот Claude Code и принимает все 5 уровней (невалидное значение -> HTTP 400reasoning_effort must be one of: none, minimal, low, medium, high, xhigh, max). mediumфактически опускается доlow,xhigh- доhigh.- Если effort не передан, Z.ai использует
max. Поэтомуai-glmвыставляетCLAUDE_CODE_ALWAYS_ENABLE_EFFORT=1- иначе Claude Code не считаетglm-5.3effort-capable и параметр не уходит. - Маппинг выполняется на стороне Z.ai API,
ai-glmлокально effort не преобразует. - Дефолт
ai-glm:xhigh(нативныйhighу Z.ai), задаётся через CLI--effortпри каждом запуске. - Официально Z.ai маппинг
medium/xhighне документирует. Он выведен замером 2026-09-25: по 3 запроса на уровень, среднийoutput_tokensна счётной задаче -low~1.5K,medium~1.1K,high~3.4K,xhigh~2.8K,max~3.8K.low/mediumуверенно короче остальных, аhighиmaxна такой выборке пересекаются по разбросу.
OpenRouter / GPT-5.5
Текущий ai-openrouter работает через Claude Code с ANTHROPIC_BASE_URL=https://openrouter.ai/api
и не вызывает локальный effort proxy. Поэтому low/medium/high/xhigh/max не
преобразуются в shell-лаунчере.
OpenCode Go (routatic-proxy)
Текущий ai-opencode работает через Claude Code с локальным routatic-proxy
(ANTHROPIC_BASE_URL=http://127.0.0.1:3456), который транслирует запросы в OpenCode Go API.
Effort не преобразуется локально — thinking budget не имеет прямого эффекта на OpenCode Go бекенд.
Дефолт ai-opencode: high.
Xiaomi MiMo V2.6
thinking on (единственный уровень)
ai-mimoработает через Claude Code с Anthropic-эндпоинтом Xiaomi (Token Plan региона подписки илиapi.xiaomimimo.com).- Claude Code 2.1.294 отправляет
thinking: {type: "adaptive"}иoutput_config.effortсо всеми 5 уровнями и дляmimo-v2.6-pro, и дляmimo-v2.6-flash, даже безCLAUDE_CODE_ALWAYS_ENABLE_EFFORT(проверено перехватом запроса). - MiMo effort игнорирует. В доке Anthropic API MiMo из параметров рассуждения есть только
thinking.type(enabledпо умолчанию /disabled/adaptive),effortиbudget_tokensнет. Невалидныеoutput_config.effort=bogusиthinking.type=bogusдают HTTP 200. - Замер 2026-10-13, по 3 запроса на уровень, средний
output_tokens. Pro, счётная задача: без effort ~310,low~340,high~280,max~315. Pro, задача на включения-исключения:low~970,max~825. Flash на ней же:low~460,max~580. Разброс внутри уровня больше разницы между уровнями, тренда нет. - Реально переключается только thinking:
thinking.type=disabledдаёт 4 токена без размышлений и неверные ответы (2 из 3). Claude Code его для MiMo не отправляет. thinking.type=adaptive(его шлёт Claude Code) MiMo отрабатывает так же, какenabled: размышления есть даже на «скажи привет», на задаче на включения-исключенияadaptive~670,enabled~600 токенов при разбросе 356-1161.CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING=1в Claude Code 2.1.294 запрос не меняет, да и не нужен.- Глубину размышлений ограничивает только
max_tokens:ai-mimoвыставляетCLAUDE_CODE_MAX_OUTPUT_TOKENS=128000(потолок Claude Code, MiMo принимает до 131072). - Дефолт
ai-mimo:max, задаётся через CLI--effortпри каждом запуске (как уai-eltex-qwen). На размышления не влияет, но если Xiaomi начнёт учитывать effort, лаунчер сразу будет на максимуме.
Qwen3.8 (Alibaba Token Plan)
low -> medium -> high -> xhigh -> max (принимаются, у Max тренда нет)
ai-qwenработает через Claude Code с Anthropic-эндпоинтом Alibaba Model Studio (token-plan.ap-southeast-1.maas.aliyuncs.com/apps/anthropic).- Qwen проверяет
output_config.effort:bogusдаёт HTTP 400 со спискомlow, medium, high, xhigh, max.thinking.type=adaptiveпринимается, размышления есть всегда. - Замер 2026-10-20, задача на включения-исключения,
output_tokens.qwen3.8-max, по 3 запроса:low435/513/615,high363/412/662,max397/539/657 - разброс больше разницы, тренда нет.qwen3.8-flash, по 2 запроса:low~430,max~790. - Дефолт
ai-qwen:maxчерез CLI--effortпри каждом запуске,CLAUDE_CODE_ALWAYS_ENABLE_EFFORT=1как страховка.
claude-gpt-effort-proxy.py все еще генерируется как совместимый helper для старого
claude-code-proxy backend-а. Если использовать его вручную, он маппит только
xhigh -> high, потому что claude-code-proxy принимает low, medium, high, max.
Где выполняется маппинг
| Провайдер | Кто маппит | Файл/компонент |
|---|---|---|
| Anthropic | Не нужен | - |
| DeepSeek V4 | DeepSeek API | На стороне сервера |
| Kimi K2.7/K2.6 | Moonshot API | На стороне сервера |
| GLM 5.3 | Z.ai API (low,medium→low, high,xhigh→high, max) |
На стороне сервера |
| Xiaomi MiMo V2.6 | Не маппится: MiMo принимает output_config.effort, но игнорирует его |
- |
| Qwen3.8 | Alibaba 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 |
Persistence effort между сессиями
Каждый Claude Code лаунчер (ai-claude, ai-deepseek, ai-kimi, ai-glm, ai-mimo, ai-qwen, ai-openrouter, ai-opencode)
запоминает свой уровень effort отдельно в settings.json лаунчера.
/effort внутри сессии работает для всех уровней. CLAUDE_CODE_EFFORT_LEVEL не используется.
Форсировать уровень при запуске:
AI_EFFORT=max ai-deepseek # включить max
AI_EFFORT=high ai-deepseek # включить high
ai-deepseek # без флага - использовать уровень из settings.json
Дефолты: xhigh для ai-claude и ai-glm, max для ai-eltex, ai-eltex-qwen, ai-mimo и ai-qwen, high для
остальных Claude Code лаунчеров. ai-glm, ai-eltex, ai-eltex-qwen, ai-mimo и ai-qwen передают уровень через CLI
--effort, поэтому каждый запуск стартует на дефолте (или на AI_EFFORT), а /effort внутри сессии
действует до её конца.
Рекомендации
- Для повседневной работы:
highилиxhigh. maxeffort имеет реальный эффект у Anthropic, DeepSeek и GLM; у Kimi это всё тот же thinking on.low/mediumу Kimi фактически не снижают reasoning; у DeepSeeklowи у GLMlow/mediumдают реальный уровеньlowи экономят бюджет.- У GLM осмысленно выбирать только
low,high(илиxhigh) иmax. ai-eltex(путь прокси/anthropic, 20.10): запрос идёт на Anthropic-эндпоинт Z.ai как есть, effort уglm-5.3работает:low- без размышлений, дальшеmedium<high<max. Как иai-glm, стартует наmaxчерез CLI--effort,AI_EFFORT=high ai-eltexработает. Уai-eltex-qwenпрокси effort игнорирует,/effortиAI_EFFORTтам ни на что не влияют.