Files
ai-setup/EFFORT_MAPPING.md
vitaly f8465580e0 feat: полная изоляция моделей между ai-* и гибридный persistence effort
Раньше все ai-* лаунчеры делили один ~/.claude и общий settings.json, из-за
чего кастомная модель (openai/gpt-5.5) из ai-openrouter протекала в пикер
ai-claude. Теперь каждый сторонний провайдер изолирован в своём
CLAUDE_CONFIG_DIR (~/.config/ai-setup/cfg/<launcher>) - свои settings.json и
.claude.json, ноль протечек. ai-claude остаётся на ~/.claude (нативный логин).

Пикеры /model приведены к требуемому виду:
- ai-deepseek: только DeepSeek V4 Pro (opus) и DeepSeek V4 Flash (haiku),
  дефолт Pro; через availableModels + ANTHROPIC_DEFAULT_*_MODEL_NAME
- ai-kimi: только Kimi K2.6 (opus)
- ai-claude: только нативные модели Claude
Общие skills и CLAUDE.md шарятся симлинком из ~/.claude.

Persistence effort - гибрид:
- low/medium/high/xhigh живут нативно в settings.json лаунчера, /effort
  внутри сессии работает свободно и уровень сохраняется
- max нельзя сохранить в settings.json (session-only), поэтому он
  восстанавливается через CLAUDE_CODE_EFFORT_LEVEL; в такой max-сессии
  /effort залочен (ограничение Claude Code), выход - AI_EFFORT=<lvl> ai-*
Текущий уровень ловит статусбар в ~/.cache/ai-setup/effort_<launcher>.

Удалён устаревший effort-save-hook (заменён нативным persistence + гибридом),
почищен из ~/.claude/settings.json и осиротевший кэш model_*.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-12 07:33:30 +03:00

6.3 KiB
Raw Blame History

Effort Mapping — Соответствие уровней для всех провайдеров

Как это работает

Когда вы меняете effort в Claude Code (через /effort или --effort), значение передаётся в API провайдера. Каждый провайдер поддерживает свой набор уровней reasoning effort. Если выбранного уровня нет у провайдера — он автоматически маппится на ближайший более высокий нативный уровень.

Таблица маппинга

Актуально на 30 мая 2026 г.

Claude Code
/effort
Anthropic
(Claude)
GPT-5.5
(ChatGPT)
DeepSeek V4 Kimi K2.6
(Moonshot)
Gemini 3.x
low low low high 🔛 thinking on LOW
medium medium medium high 🔛 thinking on MEDIUM
high high high high 🔛 thinking on HIGH
xhigh xhigh xhigh max 🔛 thinking on HIGH
max max xhigh ¹ max 🔛 thinking on HIGH

Обозначения:

  • — нативная поддержка (1:1 соответствие)
  • ⬆ — маппинг на ближайший доступный уровень вверх
  • 🔛 — бинарный режим (thinking вкл/выкл, без градаций)

¹ GPT-5.5 не имеет уровня max — effort-proxy (claude-gpt-effort-proxy.py) маппит maxxhigh

Нативные уровни каждого провайдера

Anthropic (Claude) — эталон

low → medium → high → xhigh → max
  • 5 уровней, полное соответствие с Claude Code
  • По умолчанию: xhigh
  • max — максимальный бюджет на thinking, для самых сложных задач

GPT-5.5 (через claude-code-proxy)

low → medium → high → xhigh
  • 4 основных уровня (также существуют none и minimal)
  • Нет max → маппится в xhigh
  • По умолчанию: medium
  • Маппинг выполняется effort-proxy на стороне лаунчера

DeepSeek V4

high → max
  • Всего 2 реальных уровня
  • low и medium → автоматически поднимаются до high
  • xhigh → автоматически поднимается до max
  • Маппинг выполняется на стороне DeepSeek API

Kimi K2.6 (Moonshot AI)

on / off
  • Бинарный режим — thinking либо включён, либо выключен
  • Все уровни effort = thinking включён
  • Нет градаций глубины reasoning
  • Маппинг выполняется на стороне Moonshot API

Gemini 3.x (через antigravity-claude-proxy)

MINIMAL → LOW → MEDIUM → HIGH
  • 4 уровня
  • Нет xhigh и maxоба маппятся в HIGH
  • Pro-модели: по умолчанию HIGH
  • Flash-модели: по умолчанию MEDIUM
  • Маппинг выполняется на стороне antigravity-claude-proxy

Где выполняется маппинг

Провайдер Кто маппит Файл/компонент
Anthropic Не нужен
GPT-5.5 effort-proxy (наш) ~/.local/bin/claude-gpt-effort-proxy.py
DeepSeek V4 DeepSeek API На стороне сервера
Kimi K2.6 Moonshot API На стороне сервера
Gemini 3.x antigravity-claude-proxy npm пакет

Persistence effort между сессиями

Каждый лаунчер (ai-claude, ai-deepseek, ai-kimi, ai-openrouter) запоминает свой уровень effort отдельно. Логика гибридная:

  • low / medium / high / xhigh живут нативно в settings.json лаунчера. /effort внутри сессии работает как обычно, уровень сохраняется между сессиями.
  • max — единственный, который Claude Code не сохраняет в settings.json (он session-only). Поэтому его восстанавливаем через CLAUDE_CODE_EFFORT_LEVEL. Текущий уровень (включая max) статусбар пишет в ~/.cache/ai-setup/effort_<launcher>.

Важное следствие (только для max): когда восстановлена max-сессия, выставлена CLAUDE_CODE_EFFORT_LEVEL=max, и /effort внутри неё не сменит уровень (env-переменная — жёсткий override Claude Code). На остальных уровнях /effort свободен.

Как выйти из max (или форсить любой уровень): перезапусти лаунчер с AI_EFFORT:

AI_EFFORT=max ai-deepseek    # включить и запомнить max
AI_EFFORT=high ai-deepseek   # вернуться на high (выйти из max)
ai-deepseek                  # без флага - восстанавливает последний уровень

Дефолты при пустом кэше: xhigh для ai-claude, high для остальных.

Рекомендации

  • Для повседневной работы: high или xhigh — работает одинаково хорошо у всех провайдеров
  • max effort: имеет реальный эффект только у Anthropic и DeepSeek. Для GPT маппится в xhigh, для Gemini и Kimi — в их максимальный уровень
  • low/medium: у DeepSeek и Kimi фактически не снижают reasoning — DeepSeek поднимет до high, Kimi просто включит thinking
  • Смена уровня: на low..xhigh обычным /effort; из max — через AI_EFFORT=<lvl> ai-<launcher> (в max-сессии /effort залочен env-переменной, см. «Persistence effort»)