docs(models): checklist for rolling out a new model
This commit is contained in:
@@ -0,0 +1,65 @@
|
|||||||
|
# Модели: как вводить новую (чеклист)
|
||||||
|
|
||||||
|
Единственное место с процедурой. Проверено 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](https://github.com/anthropics/claude-agent-sdk-python/blob/main/CHANGELOG.md)
|
||||||
|
(например 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»
|
||||||
|
|
||||||
|
1. **beaver-gateway**: поднять SDK до версии с достаточно новым CLI:
|
||||||
|
`pyproject.toml` (`claude-agent-sdk>=…`) + `uv lock -P claude-agent-sdk`,
|
||||||
|
закоммитить, запушить `main`.
|
||||||
|
2. **beaver-agent/config.py** (строки ~383–399, список агентов): поменять id
|
||||||
|
моделей у `deep`/`dispatcher`/… Effort там же.
|
||||||
|
3. **beaver-agent/t3code.toml** (дефолты t3code-mcp per-machine,
|
||||||
|
`model = "claudeAgent/…"`): поменять id. Внимание: t3code для незнакомого
|
||||||
|
ему слага теряет опции `effort`/`contextWindow` (см. ниже) — id должен
|
||||||
|
быть в каталоге t3code, т.е. t3code-приложение должно быть обновлено.
|
||||||
|
4. Деплой: `make deploy` (push `main:stable`; образ гейтвея собирается из
|
||||||
|
`beaver-gateway#main` при деплое, поэтому шаг 1 — раньше).
|
||||||
|
5. **t3code на машинах**: `claude --version` ≥ минимума модели (обычно уже
|
||||||
|
сам обновился); само приложение t3code (alpha) обновляется nightly и
|
||||||
|
привозит новую модель в каталог.
|
||||||
|
|
||||||
|
Проверить, какие id вообще существуют:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
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).
|
||||||
Reference in New Issue
Block a user