#Делегируйте задачу своему субагенту
Средний уровень · Урок 6 из 8 · около 20 минут · Нужно: Разрешения, области настроек и песочница · Сверено с Claude Code v2.1.285 (stable) 06.10.2026
#Цель
К концу урока вы сможете написать субагента, у которого есть только те инструменты, что нужны для его задачи, и делегировать ему работу.
#Что понадобится
- Один из ваших репозиториев и ваша копия шаблона для практики с Node.js LTS: проверка запускается из копии. Если хотите практиковаться в копии шаблона, используйте её в обеих ролях.
jq— для журнала делегирования в задании «Ваша очередь».- Расход лимита: от небольшого до умеренного. Каждое делегирование открывает второе окно контекста.
#Идея
Субагент — это отдельный Claude, которому ваша сессия передаёт задачу. Он работает в собственном окне контекста, со своими инструкциями и только с теми инструментами, что вы ему дали, и возвращает сводку. Прочитанные им файлы и результаты поиска не попадают в ваш разговор:
flowchart LR accTitle: Как субагент держит работу вне вашего контекста accDescr: Ваш разговор делегирует задачу субагенту. Субагент работает в собственном окне контекста со своими инструкциями и инструментами, читает файлы и ищет. В ваш разговор возвращается только его сводка. A["Ваш разговор"] -->|задача| B["Субагент: своё окно контекста, свои инструкции, ограниченные инструменты"] B -->|читает файлы и ищет| B B -->|только сводка| A
Субагент проекта — это Markdown-файл в .claude/agents/: фронтматтер с name и description (оба обязательны), необязательный список tools, затем инструкции, по которым он работает. Claude читает описание, чтобы решить, когда делегировать; можно также назвать субагента в запросе.
Делегируйте задачу, если вам не нужен её вывод целиком или если она должна выполняться с ограниченными инструментами. Оставляйте её в основном разговоре, если нужен обмен репликами или это быстрое точечное изменение (Choose between subagents and main conversation).
#Разбор примера
- Скачайте в свой репозиторий пример из руководства —
code-reviewer— и прочитайте его:
mkdir -p .claude/agents
curl -fsSL https://raw.githubusercontent.com/wesammustafa/Claude-Code-Everything-You-Need-to-Know/main/examples/intermediate/06-subagents/dot-claude/agents/code-reviewer.md -o .claude/agents/code-reviewer.md
Его фронтматтер ограничивает его тремя инструментами, так что он может читать и искать файлы, но не может их править или запускать команды:
name: code-reviewer
tools: Read, Grep, Glob
- Запустите
claude. Если сессия уже шла, когда вы создали.claude/agents/, перезапустите её: Claude Code следит только за папками агентов, существовавшими на момент старта сессии (Write subagent files). - Внесите небольшое изменение в исходный файл и попросите:
Use the code-reviewer agent to review my uncommitted changes.
Пока ревьюер работает, в расшифровке видна строка вроде code-reviewer(Review uncommitted changes). Ревьюер не может запустить git diff, поэтому начинает с сообщения-задачи, которое для него пишет ваша сессия, и снимка git status (What loads at startup); затем вы получаете его замечания в виде сводки, сгруппированной по серьёзности. Формулировки у вас будут другими.
#Ваша очередь
Допишите субагента только для чтения, который находит код, не вызываемый ни одним тестом, и делегируйте ему работу.
- Сохраните это как
.claude/agents/test-gaps.mdи замените обаTODO. Дайте ему только инструменты для чтения:
---
name: test-gaps
description: TODO
tools: TODO
---
You find code that no test exercises. You never change files.
1. List the functions each source file exports.
2. For each one, search the test files for a call to it.
3. Report the functions that no test calls, grouped by file, with one line on what a test for each should check. If every function has a test, say so.
- Закоммитьте его.
- Сохраните этот журнал делегирования в
.practice/i-6-hook.json. Это хукSubagentStart, который дописывает имя каждого запущенного Claude субагента в.practice/i-6-agents.txtи больше ничего не записывает:
{
"hooks": {
"SubagentStart": [
{ "hooks": [ { "type": "command", "command": "jq -r '.agent_type' >> \"$CLAUDE_PROJECT_DIR/.practice/i-6-agents.txt\"" } ] }
]
}
}
- Запустите
claude --settings .practice/i-6-hook.jsonи попросите:Use the test-gaps agent to list the functions no test calls.
#Проверка
Урок пройден, когда выполнено всё это:
- У закоммиченного субагента есть имя и описание того, когда его использовать:
git show HEAD:.claude/agents/test-gaps.md | head -5. - Его инструменты — только для чтения: в строке
toolsуказаны инструменты вродеRead,GrepиGlobи нет ни одного, который правит файлы или запускает команды, напримерEdit,WriteилиBash. - Claude делегировал ему задачу:
grep -x test-gaps .practice/i-6-agents.txtвыводитtest-gaps. - Самопроверка (не тестируется): прочитанные субагентом файлы не попали в ваш разговор — вернулась только его сводка.
Запустите npm run check -- i-6 --dir <your repo> из своей копии для практики или npm run check -- i-6 в самой копии.
Если не проходит первый пункт, проверьте фронтматтер: Claude Code пропускает файл агента без name, а также файл с name, но без description. Если не проходит пункт об инструментах, уберите каждый инструмент, который может менять файлы или запускать команды; без строки tools субагент получает все инструменты. Если в журнале нет строки test-gaps, запустите сессию с файлом хука и назовите субагента в запросе.
#Осторожно
- Субагент, у которого в списке есть
Bash, всё равно может менять файлы командами оболочки — например правкой черезsedили перенаправлением> file, — даже безEditиWrite. Не давайте емуBash, а пусть ваша сессия передаст ему то, что показала бы команда. - В macOS, Linux и WSL, где Glob и Grep по умолчанию отсутствуют, субагент, в списке
toolsкоторого указаныGlobилиGrep, но нетBash, получает те, что указаны (Glob tool behavior). - Свой субагент читает ваш
CLAUDE.md, как и основной разговор, а встроенные субагенты Explore и Plan его пропускают: повторите правило в запросе, когда Claude передаёт им работу (Check common causes).
#Что дальше
- Introduction to subagents: курс Claude Academy о проектировании и использовании субагентов.
- How and when to use subagents in Claude Code: Anthropic о том, когда делегировать, а когда оставаться в основной сессии.
- Create custom subagents: все поля фронтматтера, фоновые субагенты и возобновление субагента.
Источники: Create custom subagents · Hooks reference · Tools reference · Configure permissions · Debug your configuration
← Закрепите правило хуком · Оглавление Среднего уровня · Подключите инструмент через MCP → · Тема: Субагенты и параллельная работа · Застряли на уроке?