Почему model: в slash-командах — это ловушка
Решил сэкономить на токенах. Сделал команду /readme с model: haiku.
Запустил — вроде работает.
Только потом понял, что Opus всё это время делал работу сам.
Что я хотел
Идея простая: README генерировать на дешёвой модели. Haiku справится, зачем платить за Opus? Добавил в frontmatter команды model: haiku — логично же.
А оно не так работает.
Когда запускаешь slash-команду, её текст просто вливается в основной контекст. Какая модель этот контекст обрабатывает — та и выполняет. model: в frontmatter меняет модель, но текст команды всё равно летит в общий котёл.
169 тысяч токенов в контексте. А если через отдельного агента — 21 тысяча. В восемь раз меньше.
Три механизма, которые путают
В Claude Code есть три штуки с похожими названиями. Выглядят одинаково, работают по-разному.
| Что | Как работает | Отдельная модель? |
|---|---|---|
| Commands | Текст вливается в контекст | Нет |
| Skills | То же самое, через Skill tool | Нет |
| Agents | Task tool запускает отдельный процесс | Да |
Работает только с полными названиями моделей типа claude-sonnet-4-5-20250929. Алиасы вроде sonnet или haiku игнорируются. Но даже если указать полное название — изоляции не будет. Текст всё равно попадёт в общий контекст.
Как на самом деле делегировать
Хочешь чтобы Haiku работал отдельно — вызывай Task tool явно. Commands и Skills для этого не подходят, они просто способ подсунуть текст в контекст.
Решение называется «тонкий диспетчер». Команда ничего не делает сама — только говорит вызвать нужного агента.
# ~/.claude/commands/readme.md
---
description: Генерация README через Haiku
---
Немедленно запусти субагента.
**Параметры Task tool:**
- subagent_type: "readme-writer"
- model: "haiku"
- prompt: "Сгенерируй README.md"
**Правила:**
1. Сам ничего не генерируй
2. Только запусти агента и верни результат
Сам агент лежит в .claude/agents/readme-writer.md. Там уже написано что делать и как. Команда просто его триггерит.
Когда это нужно
Имеет смысл когда:
- Задача самодостаточная, история чата не нужна
- Хочешь использовать дешёвую модель
- Контекст уже забит, а задача простая
Не парься когда:
- Задача мелкая, разница в токенах погоды не делает
- Агенту нужен контекст разговора
- Opus и так справляется, экономить не на чем
И да — после создания агента перезапусти сессию. Изменения подхватываются только при старте.
Источники
- Issue #4937 — про полные названия моделей
- Issue #10993 — как работает CLAUDE_CODE_SUBAGENT_MODEL
- Model Configuration — официальная документация
- Context Engineering — откуда цифры 169K vs 21K