4.5 KiB
Модели: как вводить новую (чеклист)
Единственное место с процедурой. Проверено 2026-09-01 боевым тестом на dell.
Главный инвариант
API отбрасывает новые модели по версии клиента. claude CLI 2.1.248 с
--model claude-fable-5-1 получает от API
400: version 2.1.251 or newer is required — id проходит насквозь, но сервер
режет по минимальной версии Claude Code для этой модели. Поэтому порядок
строго такой: сначала CLI, потом id в конфигах.
CLI живёт в двух местах:
- гейтвей (контейнер на dell) — забандлен в питоновский пакет
claude-agent-sdk(_bundled/claude), замораживается при сборке образа. Версия CLI = версия пакета, соответствие в CHANGELOG SDK (например 0.2.146 → CLI 2.1.248, 0.2.150 → 2.1.257). - t3code на машинах (mac, dell-хост) — обычный
claudeпользователя (~/.local/share/claude/versions/…,/usr/local/bin/claude), сам автообновляется; вручную —claude update.
Чеклист «вышла новая модель X»
- beaver-gateway: поднять SDK до версии с достаточно новым CLI:
pyproject.toml(claude-agent-sdk>=…) +uv lock -P claude-agent-sdk, закоммитить, запушитьmain. - beaver-agent/config.py (строки ~383–399, список агентов): поменять id
моделей у
deep/dispatcher/… Effort там же. - beaver-agent/t3code.toml (дефолты t3code-mcp per-machine,
model = "claudeAgent/…"): поменять id. Внимание: t3code для незнакомого ему слага теряет опцииeffort/contextWindow(см. ниже) — id должен быть в каталоге t3code, т.е. t3code-приложение должно быть обновлено. - Деплой:
make deploy(pushmain:stable; образ гейтвея собирается изbeaver-gateway#mainпри деплое, поэтому шаг 1 — раньше). - t3code на машинах:
claude --version≥ минимума модели (обычно уже сам обновился); само приложение t3code (alpha) обновляется nightly и привозит новую модель в каталог.
Проверить, какие id вообще существуют:
TOK=$(security find-generic-password -s "Claude Code-credentials" -w | jq -r .claudeAiOauth.accessToken)
curl -s https://api.anthropic.com/v1/models -H "Authorization: Bearer $TOK" \
-H "anthropic-version: 2023-06-01" -H "anthropic-beta: oauth-2025-04-20" | jq -r '.data[].id'
Алиасы fable / opus / sonnet
CLI принимает голые алиасы и резолвит их в новейшую модель, которую знает
установленный CLI (проверено: CLI 2.1.248 резолвит fable →
claude-fable-5, не 5.1). Свойства:
- никогда не дают 400 «слишком старый клиент» — деградируют до старой модели;
- «всегда новейшая» они дают только при свежем CLI, так что шаг 1 чеклиста они не отменяют, но убирают шаги 2–3 (id в конфигах менять не надо);
- в t3code кастомный слаг (
fable,opus, как и любой id вне каталога) имеет пустые capabilities → t3 не передаёт--effortи суффикс[1m](ClaudeAdapter.ts:resolveClaudeEffort(caps,…)→ undefined). Модель работает, но на дефолтном effort и дефолтном окне CLI.
Рекомендация: в config.py и t3code.toml можно перейти на алиасы, если
устраивает «новейшее из того, что знает CLI»; explicit id — когда нужен
точный контроль (и тогда обязательно проверять минимум версии CLI).