Если вы используете Claude Code больше нескольких недель, вы наверняка заметили, что долгие сессии стоят дорого. Продолжительная работа с Opus над многофайловым рефакторингом может обойтись дороже, чем чашка кофе. Умножьте это на команду из пяти человек и ежедневное использование, и цифры становятся существенными. Хорошая новость: большая часть этих затрат избыточна. Большинство токенов в типичной сессии уходит на задачи, с которыми более быстрая и дешёвая модель справилась бы точно так же.
Эта статья — практическое дополнение к моей предыдущей публикации об AI-агентах в рабочем процессе разработчика. Та была о безопасности, разрешениях и общей концепции. Эта — о конкретном инструменте Claude Code, который сильнее всего повлиял на мои расходы и скорость работы: субагентах и осознанной маршрутизации моделей.
Всё, что описано здесь, основано на реальной настройке, которую я использую на этом проекте. Примеры конфигурации — это реальные файлы.
GitHub template: я вынес полный набор в публичный репозиторий Claude Code PHP Agents. Там есть AGENTS.md, CLAUDE.md, субагенты из этой статьи и шаблоны для WordPress Bedrock, classic WordPress, Laravel и generic PHP-проектов.
Что такое субагенты на самом деле
Субагент в Claude Code — это специализированный помощник со своей моделью, своим списком разрешённых инструментов и собственным системным промптом. Когда основная сессия делегирует задачу субагенту, тот работает в изолированном контекстном окне: все токены, которые он потребляет, и все файлы, которые он читает, остаются внутри этого окна. Основная сессия видит только итоговый результат.
Эта изоляция даёт два эффекта, которые усиливают друг друга. Во-первых, субагент может использовать более дешёвую модель без влияния на качество основного разговора. Во-вторых, основной контекст остаётся небольшим, а значит, каждое последующее сообщение в основной сессии тоже обходится дешевле.
Субагенты определяются как Markdown-файлы в папке .claude/agents/. Минимальный пример выглядит так:
---
name: repo-explorer
description: Use this agent when you need to find files, understand code structure, or search for patterns before editing.
model: haiku
tools:
- Read
- Grep
- Glob
- Bash
---
Search the codebase and return findings as path:line pointers. Do not modify any files.Это весь файл. Поле model принимает значения haiku, sonnet, opus или полный идентификатор модели. Поле tools — явный список разрешённых инструментов: если его не указать, субагент наследует все инструменты, что уместно для одних агентов и опасно для агентов только для чтения. Системный промпт (всё после frontmatter) говорит субагенту, что делать и чего не делать.
Агенты уровня проекта в .claude/agents/ стоит коммитить в репозиторий, чтобы вся команда работала с одним набором специалистов. Агенты уровня пользователя в ~/.claude/agents/ применяются ко всем вашим проектам.

Паттерн трёх уровней моделей
Главный инсайт оптимизации токенов через субагенты: разные задачи требуют принципиально разной глубины рассуждений. Поиск файла не требует той же интеллектуальной мощи, что архитектурное решение. Использовать одну и ту же мощную модель для обоих — всё равно что нанимать senior-инженера, чтобы запустить grep.
Я не советую публиковать утверждение вроде «это экономит ровно 70%», если вы не измерили собственные сессии. В моих проектах экономия стала очевидной, когда дорогая модель перестала заниматься поиском файлов, чтением логов и механическими browser-checks. Точная цифра зависит от размера репозитория, частоты делегирования и модели, на которой обычно работает основная сессия.
Трёхуровневый паттерн, который я использую на практике:
| Модель | Лучше всего подходит для | Что не стоит делегировать |
|---|---|---|
| Haiku | Поиск файлов, исследование кодовой базы, чтение документации, написание тестов, форматирование, генерация commit-сообщений, changelog | Архитектурные решения, сложная отладка, многофайловый рефакторинг |
| Sonnet | Реализация фич, исправление багов, стандартный рефакторинг, code review, большинство повседневных задач | Задачи, где скорость важнее глубины |
| Opus | Архитектурное планирование, незнакомые кодовые базы, сложный многофайловый анализ, высокорисковые изменения, сквозной рефакторинг | Рутинные задачи, всё, где Sonnet достаточно быстр |
Основная сессия работает на Sonnet. Opus-субагенты занимаются планированием и ревью. Haiku-субагенты — обнаружением и генерацией. Это не жёсткое правило, а отправная точка, которую вы настраиваете под свой проект.

Готовые файлы для .claude/agents/
Ниже минимальный набор, который можно скопировать в проект и адаптировать. Системные промпты оставлены на английском: так их проще переиспользовать между командами и репозиториями.
.claude/agents/explorer.md
---
name: explorer
description: Use proactively when a task needs codebase discovery before planning or editing. Finds relevant files, symbols, routes, tests, and existing patterns. Returns path:line references only.
model: haiku
tools:
- Read
- Grep
- Glob
- Bash
---
You are a read-only codebase explorer.
Find the files, symbols, routes, tests, configuration, documentation, and existing patterns relevant to the user's task.
Rules:
- Do not modify files.
- Do not propose an implementation plan unless asked.
- Prefer precise path:line references over broad summaries.
- If you use Bash, use read-only commands only.
- If the evidence is weak, say what you could not find.
Return:
1. Relevant files and why they matter.
2. Existing patterns or helpers to reuse.
3. Tests or verification paths nearby.
4. Open questions or missing context.
.claude/agents/planner.md
---
name: planner
description: Use after explorer for architecture decisions, multi-file changes, auth, billing, migrations, routing, caching, i18n, or risky refactors. Produces a plan; does not edit code.
model: opus
tools:
- Read
- Grep
- Glob
---
You are a senior implementation planner.
Use the provided task brief and explorer findings to produce a practical implementation plan.
Rules:
- Do not edit files.
- Do not run shell commands.
- Prefer the smallest safe change unless the user explicitly asks for a larger refactor.
- Call out risks, unknowns, and rollback considerations.
Return:
1. Recommended approach.
2. Files to change, with the reason for each file.
3. Step-by-step implementation order.
4. Tests and manual verification.
5. Risks and decisions needed from the developer.
.claude/agents/reviewer.md
---
name: reviewer
description: Use after implementation for high-risk changes or before committing. Reviews changed files first and expands only when needed for correctness or safety.
model: opus
tools:
- Read
- Grep
- Glob
- Bash
---
You are a strict code reviewer.
Review the current changes for correctness, regressions, security issues, missing tests, and unintended side effects.
Rules:
- Start from the diff and changed files.
- Read unchanged files only when needed to verify a specific risk.
- Do not rewrite code.
- If you use Bash, prefer read-only commands such as git diff, git status, and test discovery.
Return findings first, ordered by severity. If there are no findings, say that clearly and list residual risk.
.claude/agents/browser-tester.md
---
name: browser-tester
description: Use for local UI smoke tests, regression checks, console/network inspection, and screenshot capture. Requires the local dev server to be running.
model: haiku
tools:
- mcp__chrome_devtools__navigate_page
- mcp__chrome_devtools__take_snapshot
- mcp__chrome_devtools__take_screenshot
- mcp__chrome_devtools__list_console_messages
- mcp__chrome_devtools__list_network_requests
- mcp__chrome_devtools__click
- mcp__chrome_devtools__fill
- mcp__chrome_devtools__press_key
---
You are a browser regression tester.
Follow the provided flow in the local browser and report observable results.
Rules:
- Do not modify source files.
- Do not invent expected behavior.
- Capture screenshots for visual regressions or unclear states.
- Check console errors and failed network requests.
Return the flow tested, what passed, what failed, console/network errors, and screenshot notes.
Семь советов по снижению затрат на токены в Claude Code
Совет 1: Explorer перед planner
Самая дорогостоящая ошибка в сессии Claude Code — попросить Opus спланировать что-то, не сказав ему заранее, где что находится. Opus будет читать файлы, искать паттерны и самостоятельно строить контекст. Всё это стоит токенов Opus, хотя могло бы стоить токенов Haiku.
Паттерн, который это исправляет, прост: всегда запускать быстрый субагент-explorer перед вызовом planner. Explorer возвращает указатели путь:строка. Planner получает эти указатели и может сосредоточиться на рассуждениях, а не на обнаружении. Вот explorer, который я реально использую:
---
name: explorer
description: Use this agent proactively when the task needs codebase discovery before any edit. Returns path:line pointers. Call before planner.
model: haiku
tools:
- Read
- Grep
- Glob
- Bash
---
Locate routes, controllers, services, middleware, components, migrations, or tests relevant to the task.
Map dependencies between layers. Check whether a pattern or helper already exists before reporting.
Return findings as a concise list of path:line references. Do not modify files.И planner, который получает этот вывод:
---
name: planner
description: Use this agent before implementing billing, auth, multi-layer features, complex refactors, or any change requiring multi-file impact analysis. Call after explorer.
model: opus
tools:
- Read
- Grep
- Glob
---
Analyse the codebase context provided. Return a concise written plan with specific file paths, function names, and a clear ordering of steps.
Note tradeoffs. Flag risks. Do not write production code.Разница принципиальная: у planner нет Bash или Write. Это агент для чтения и рассуждений, не для выполнения. Токены Opus дороги; команды Opus в шелле дороги и рискованны одновременно.
Совет 2: Reviewer только на изменённых поверхностях
Code review — ещё одно место, где разработчики сжигают токены впустую. Просить агента-reviewer прочитать всю кодовую базу перед каждым изменением — всё равно что просить senior-инженера аудировать весь репозиторий перед апрувом однострочного фикса.
Решение: сделать reviewer diff-first — он читает только изменённые файлы, если только вопрос безопасности не требует более широкого контекста. Вот reviewer из моего проекта:
---
name: reviewer
description: Use this agent after implementing high-risk changes: billing, auth, middleware, database migrations, webhook handlers, transactional writes.
model: opus
tools:
- Read
- Grep
- Glob
---
Review the staged changes described in the task. Read only the modified files unless a safety question requires broader context.
Check for correctness, security issues, and unintended side effects.
Return a structured report: what looks good, what needs a fix, what needs a decision.
Do not rewrite code.Ключевая строка: «читай только изменённые файлы, если вопрос безопасности не требует более широкого контекста». Это ограничение обычно даёт заметную экономию, потому что reviewer перестаёт перечитывать весь репозиторий ради небольшого diff.
Совет 3: Haiku для всего, что не требует рассуждений
Большой класс задач в разработке вообще не требует рассуждений: написать commit-сообщение, сгенерировать запись в changelog, описать функцию для документации, запустить проверку lint, прочитать лог-файл, отформатировать JSON-ответ. Это задачи сопоставления паттернов и генерации текста. Haiku справляется с ними хорошо и стоит примерно в 10–20 раз меньше за токен, чем Opus.
Субагент browser-tester — ещё один пример. UI-верификация через Chrome DevTools MCP в основном механическая: перейти, сделать скриншот, проверить ошибки в консоли, сообщить о находках. Субагенту не нужно глубоко рассуждать — ему нужно надёжно выполнять действия.
---
name: browser-tester
description: Use this agent for UI regression checks, frontend bug reproduction, checkout flow verification, and console/network error inspection. Requires the dev server running.
model: haiku
tools:
- mcp__plugin_chrome-devtools-mcp_chrome-devtools__navigate_page
- mcp__plugin_chrome-devtools-mcp_chrome-devtools__take_screenshot
- mcp__plugin_chrome-devtools-mcp_chrome-devtools__list_console_messages
- mcp__plugin_chrome-devtools-mcp_chrome-devtools__list_network_requests
- mcp__plugin_chrome-devtools-mcp_chrome-devtools__click
- mcp__plugin_chrome-devtools-mcp_chrome-devtools__fill
---
Navigate to the URL or flow described. Take screenshots. Check the console for errors.
Report what you see concisely: what renders correctly, what is broken, what errors appeared.
Do not modify source files.Эскалируйте до Sonnet вручную только когда воспроизведение бага указывает на сложное взаимодействие, с которым Haiku не справится.
Совет 4: Используйте CLAUDE.md как инструмент эффективности токенов, а не просто документацию
Большинство разработчиков воспринимают CLAUDE.md как разовый документ с настройками. Более полезный взгляд: это единственный контент, который гарантированно переживёт любое сжатие контекста. Когда Claude Code автоматически компактифицирует длинную сессию, основной контекст сжимается. CLAUDE.md — нет: он переинжектируется в начале каждого хода.
Из этого следует практический вывод. Любая инструкция, которую вы повторяете в разговоре, должна быть перенесена в CLAUDE.md. Повторение инструкции в длинной сессии означает, что вы платите за неё многократно в контексте. Написание её в CLAUDE.md означает, что вы платите за неё один раз за ход через системный промпт, где она автоматически кешируется.
Anthropic автоматически применяет кеширование промптов к CLAUDE.md и другому повторяющемуся системному контенту. Кешированные входные токены стоят примерно на 90% меньше некешированных. Детальный, хорошо поддерживаемый CLAUDE.md — это не просто более понятные инструкции для агента; это реальная экономия для вас.
Добавьте в него раздел политики делегирования, который говорит основной сессии, когда использовать какой субагент. Без него основная сессия будет принимать ad-hoc решения о делегировании, которые непоследовательны между сессиями.
Совет 5: Гигиена сессий важнее выбора модели
Выбор модели имеет меньше значения, чем то, что находится в контексте на момент её вызова. Чистый контекст из 10 000 токенов с Opus обходится дешевле, чем устаревший контекст из 80 000 токенов с Sonnet, и ответ Opus лучше, потому что соотношение сигнал/шум выше.
Три привычки, которые дают наибольший эффект:
- Одна задача — одна сессия. Открытие нового чата для каждой отдельной задачи держит контексты сфокусированными. Смешанные сессии, где вы исправляете баг, потом спрашиваете об архитектуре, потом генерируете документацию, накапливают токены по каждой теме, даже если актуальна только текущая.
- Запускайте
/compactпри 60% заполненности контекста. Автоматическое сжатие срабатывает при 95%, и к этому моменту резюме вынуждено компрессировать очень много информации. Ручной/compactпри 60% даёт более точное резюме с сохранением большей части важного контекста. - Запускайте
/clearмежду несвязанными задачами в одной сессии. Если вы закончили исправление бага и хотите начать новую фичу, очистка контекста означает, что новая задача начинается с чистого листа. Стоимость чистого старта равна нулю. Стоимость переноса 40 000 нерелевантных токенов вперёд реальна.
Совет 6: Защита от зацикливания субагентов
Субагенты мощные, но вводят сбой, которого не существует в однoагентных сессиях: циклы. Если основная сессия делегирует explorer, explorer не уверен, основная сессия делегирует снова — можно сжечь токены на один и тот же вопрос многократно, не приближаясь к ответу.
Решение: написанная политика защиты от циклов в правилах делегирования:
- Не вызывать одного и того же субагента дважды для одного нерешённого вопроса. Если он не ответил, уточните задание или спросите пользователя.
- Повторно использовать существующий вывод planner или reviewer, если реализация существенно не изменилась. Предпочитать обновление существующего плана созданию нового.
- Если два последовательных вызова субагентов возвращают перекрывающийся контент, прекратить делегирование и действовать на основе имеющегося.
Это правила, которые я написал в свой CLAUDE.md после того, как наблюдал, как сессия запустила четыре вызова planner для одного и того же архитектурного вопроса. Правила кажутся очевидными ретроспективно. Они не очевидны, пока вы не заплатили за цикл.
Совет 7: Никогда не отправляйте сырой вывод в Opus
Большие лог-файлы, полные дампы баз данных, сырые API-ответы, длинный вывод grep — никогда не передавайте всё это напрямую агенту Opus. Opus прочитает каждый токен. Сначала суммируйте, потом передавайте резюме.
Это особенно актуально для паттерна reviewer. Если reviewer должен понять миграцию на 500 строк, не передавайте весь файл. Передайте diff, имя таблицы и один абзац с описанием намерения. Reviewer запросит больше, если потребуется.
Тот же принцип применяется к передаче данных от explorer к planner. Explorer должен возвращать краткий список релевантных путей к файлам, а не содержимое этих файлов. Planner читает нужные файлы сам, а не всё, что нашёл explorer.
Реальная настройка: четыре субагента на этом проекте
Для контекста: это WordPress Bedrock-сайт с PHP-бэкендом, кастомной темой, Polylang для четырёх языков и кешированием LiteSpeed. Настройка субагентов отражает это: большинство задач — PHP или работа с контентом, деплой ручной, зоны риска — маршрутизация, кеширование и связывание переводов Polylang.
Четыре субагента в .claude/agents/:
- explorer (Haiku) — быстрое обнаружение файлов и символов. Возвращает указатели
путь:строка. Вызывается перед любым вызовом planner и перед любым редактированием незнакомых файлов. Без доступа на запись. - planner (Opus) — архитектурный анализ и планирование реализации. Вызывается перед изменениями в биллинге, аутентификации, многофайловыми фичами, сложными рефакторингами. Читает файлы, но никогда не пишет production-код.
- reviewer (Opus) — пост-реализационное ревью высокорисковых изменений. Читает только diff-поверхность, если вопрос безопасности не требует более широкого контекста. Никогда не переписывает код.
- browser-tester (Haiku) — UI-верификация через Chrome DevTools MCP. Навигация, скриншоты, проверка консоли. Вручную эскалируется до Sonnet для флоу, требующих рассуждений о состоянии.
Политика делегирования в CLAUDE.md говорит основной сессии, когда вызывать каждый субагент. Основная сессия работает на Sonnet. Opus зарезервирован для двух агентов, которым действительно нужна глубокая аналитика. Haiku обрабатывает два агента, которым нужны скорость и широта охвата.
Эта настройка возникла не из теории. Она возникла из наблюдения за тем, какие задачи выигрывают от более глубоких рассуждений, какие просто требуют быстрого выполнения, и где происходят циклы. Начните проще и добавляйте агентов, когда выявляете чёткий повторяющийся паттерн.
Стоит ли публиковать настройку субагентов как open source?
Да, если правильно подать. Я сделал это в репозитории claude-code-php-agents: небольшой публичный набор с AGENTS.md, CLAUDE.md, готовыми .claude/agents/ файлами и шаблонами для PHP, WordPress и Laravel. Это полезнее, чем держать конфиг только внутри статьи: читатель может клонировать репозиторий, скопировать нужное и адаптировать правила под свой проект.
Главная оговорка: определения субагентов тесно связаны с контекстом проекта. Explorer-агент работает для этого WordPress-проекта, потому что проект использует PHP, Polylang и конкретную структуру директорий. Монорепозиторий другого разработчика потребует других паттернов поиска и других правил эскалации. Хорошо переносится паттерн: трёхуровневая структура, ограничения только на чтение для планировщиков и ревьюеров, правила защиты от циклов, политика делегирования в CLAUDE.md. Конкретные файлы — отправная точка, а не готовое решение.
Если публикуете, рассмотрите формат «вот рассуждения за каждым решением» вместо «вот файлы для копирования». Рассуждения стареют лучше, чем конфигурация.
Что это не решает
Субагенты и маршрутизация моделей делают Claude Code заметно дешевле и быстрее. Они не меняют фундаментальную модель безопасности из предыдущей статьи. Opus-планировщик с правом записи в production не безопаснее Sonnet-агента с тем же доступом: уровень модели касается стоимости и глубины рассуждений, а не доверия. Контроль разрешений, хуки и человеческие гейты из воркфлоу безопасности по-прежнему применяются к каждому агенту независимо от того, на какой модели он работает.
Второе, что это не решает, — качество описания задач. Хорошо настроенный субагент с размытым промптом даёт размытый результат. Самая дешёвая инвестиция в эффективность токенов — чёткое описание задачи, по которому агент может действовать без уточняющих вопросов, потому что каждый уточняющий обмен стоит токенов с обеих сторон.
Субагенты — это мультипликатор. Как большинство мультипликаторов, они усиливают то, с чем вы приходите в разговор.
Похожие статьи
- AI-агенты в рабочем процессе разработчика — базовая модель безопасности за этой настройкой субагентов: доступы, MCP, browser testing, review gates и ручной контроль деплоя.
- Когда утечка секрета в Git обернулась переписыванием четырёх лет истории — почему scoped credentials важны до того, как агент получает доступ к реальным системам.




