Разбор · мультиагентные системы · сентябрь 2026
Мультиагентная система с нуля: 3 агента и проверка за вечер
Система из нескольких агентов это папка на диске: файлы ролей и порядок передачи работы между ними. Нужны программа Claude Code и платный аккаунт Claude, на бесплатном плане она не запускается. По отчёту Стэнфорда вакансий с навыком agentic AI за год стало 16 541 против 151, платят там за сборку такой связки
Самое короткое решение: открой окно для ввода команд (на Mac Терминал, на Windows Git Bash) и вставь блок ниже целиком, восемь строк
Начни с одной папки: заведи её и положи внутрь подпапку .claude/agents, дальше вся система это текстовые файлы. Первое, на что смотреть после каждого запуска, - появился ли новый файл на диске и что в нём. Файла нет или он не по твоим правилам - роль не позвалась, и это чинится, а не значит, что затея не работает
Собираем и запускаем отдел одним блоком
mkdir -p ~/moy-otdel/.claude/agents && cd ~/moy-otdel
echo '- agentic AI: 151 вакансия в 2024 году, 16 541 в 2025, рост +10 854 процента' > syrye.md
printf -- '---\nname: fakty\n---\nИз syrye.md выпиши в fakty.md только строки с числами, у каждой источник, внизу "ВСЕГО ФАКТОВ: N".\n' > .claude/agents/fakty.md
printf -- '---\nname: tekst\n---\nИз fakty.md напиши post.md: крючок с числом, три абзаца, вопрос в конце, числа только из fakty.md.\n' > .claude/agents/tekst.md
printf -- '---\nname: ocenka\n---\nСверь post.md с fakty.md, в ocenka.md пять критериев с ЗАЧТЕНО или НЕ ЗАЧТЕНО и цитатой, внизу "ИТОГ: зачтено N из 5".\n' > .claude/agents/ocenka.md
claude -p "Используй агента fakty: собери fakty.md" --permission-mode acceptEdits
claude -p "Используй агента tekst: напиши post.md" --permission-mode acceptEdits
claude -p "Используй агента ocenka: напиши ocenka.md" --permission-mode acceptEdits
Что увидишь: три отчёта подряд, по одному на сотрудника, в последнем строку «ИТОГ: зачтено 5 из 5». Что это даёт: в папке moy-otdel лежат четыре файла - сырьё, факты, готовый пост и разбор контролёра. У меня блок отработал за 341 секунду
Ответ command not found на строках с claude значит, что программы нет. На Mac, Linux и в WSL её ставит строка curl -fsSL https://claude.ai/install.sh | bash, на Windows строка irm https://claude.ai/install.ps1 | iex в окне PowerShell, а вставки статьи после этого идут в Git Bash, он ставится вместе с Git для Windows с сайта git-scm.com. WSL это Linux внутри Windows, ставится командой wsl --install в PowerShell. Проверка: claude --version, ответ вида 2.1.261 (Claude Code). При первом запуске программа попросит войти: набери claude, откроется браузер, входишь своим аккаунтом Claude, а обратно к обычным командам возвращает /exit. После этого повтори три последние строки блока
Папку с ролями глазами ты сразу не найдёшь: имя .claude начинается с точки, а такие папки ни Finder, ни проводник по умолчанию не показывают. В Finder скрытое открывает сочетание Cmd+Shift+точка. Руками там создавать нечего, вставка всё сделала сама
Кто эти трое. Сборщик читает сырьё и оставляет только строки с числами, каждую с пометкой, откуда она взята. Писатель собирает из этих строк пост и не имеет права на число, которого у сборщика нет. Контролёр сверяет пост с фактами по пяти критериям и пишет вердикт. Вся роль это шапка с именем и одна строка инструкции, её видно в файле и можно править под себя
Сырьё в этой вставке моё, одной строкой. Свои заметки клади в тот же syrye.md: выписки из отчёта, расшифровку созвона, список фактов о продукте. Сборщик берёт оттуда только строки с числами, поэтому чем конкретнее заметки, тем больше он вытащит
Что внутри роли и чем она отличается от промпта
Разница у них одна и она про память: у роли свой чистый контекст, она не видит ни твоей переписки, ни работы соседних ролей. В прогоне это видно прямо: мой писатель не знал ни одного критерия контролёра, поэтому проверка вышла честной, а не подогнанной
Строка инструкции из вставки это минимум. Под свою задачу роль разворачивается в полноценный файл, и выглядит он так:
---
name: fakty
description: Сборщик фактов. Читает syrye.md и выписывает только проверяемые факты с числами
tools: Read, Write
model: sonnet
---
Ты сборщик фактов. Делаешь одно: читаешь файл syrye.md и переписываешь факты в файл fakty.md.
Правила:
- один факт = одна строка вида "- <факт с числом> [источник: <строка из syrye.md>]"
- берёшь только те строки, где есть число
- ничего не досочиняешь: нет числа в сырье - нет строки в fakty.md
- в конце файла пишешь строку "ВСЕГО ФАКТОВ: <число>"
Что увидишь: тот же файл fakty.md, но строже по форме, каждая строка с пометкой источника. Что это даёт: description объясняет модели, когда роль звать, tools режет ей руки до чтения и записи, а строки правил ловят те промахи, которые ты уже видел у себя
Связку таких ролей, где один передаёт работу другому, рынок называет оркестрацией. Слово это не выдумка блогеров: в разделе про рынок труда того же отчёта Стэнфорда так и написано, что растут вакансии с упоминанием агентных терминов и каркасов оркестрации вроде LangGraph. У LangGraph за год 194 вакансии превратились в 4 294
Теперь честно про числа из ролика. Отчёт правда на 425 страниц, я скачал файл и пересчитал страницы двумя разными инструментами. Рост «на десять тысяч процентов» тоже настоящий и даже больше: у навыка agentic AI это плюс 10 854 процента за год. А вот «вакансии по чат-ботам отпадают» стоит уточнить: падает их ДОЛЯ среди ИИ-вакансий (у conversational AI с 24,78 до 7,97 процента), в штуках они выросли вместе со всем рынком. Кто хочет разобраться в устройстве таких систем шире одной сборки, тому подробнее в разборе мультиагентных систем
| Что звучит в ролике | Что у источника | Где это в отчёте |
|---|---|---|
| отчёт на 425 страниц | ровно 425, пересчитано двумя инструментами по скачанному файлу | сам файл AI Index 2026 |
| вакансии по агентам и оркестрации выросли на 10 тысяч процентов | навык agentic AI: 151 → 16 541, это +10 854%; LangGraph 194 → 4 294 | рисунок 4.4.7, страница 208 |
| вакансии по чат-ботам отпадают | падает доля, не штуки: conversational AI 24,78% → 7,97%, chatbot 10,57% → 5,25% | рисунок 4.4.8, та же страница |
Цепочка: кто кому передаёт и где проверка
Три последние строки блока это и есть цепочка, по одной команде на роль. Передача идёт через файлы: сборщик пишет fakty.md, писатель читает его и пишет post.md, контролёр читает оба и пишет ocenka.md. Посмотреть эстафету можно так:
ls -la fakty.md post.md ocenka.md
Что увидишь: три строки с размером и временем, у меня это 190, 1333 и 2408 байт, а время идёт по возрастанию, в порядке ролей. Что это даёт: сразу видно, на ком цепочка встала, если какого-то файла нет
Те же три строки можно запускать по одной, а не вставкой: тогда работу легко остановить посередине и прочитать промежуточный файл глазами, вместо того чтобы гадать, что происходит внутри одной большой просьбы
Точка проверки стоит третьей не случайно. Первые две роли делают работу, третья её судит, и судит по чужим правилам: контролёр видит только два файла и пять критериев, а не ход мыслей писателя. По времени файлов видно и распределение труда: сборщик управился первым, дольше всех сочинял писатель
Оценка работы агентов: что считать успехом и как мерить
Оценка у отдела записана пятью критериями в файле контролёра. Инструкция роли говорит только «пять критериев с цитатой», и контролёр взял их из задания писателя: крючок с числом, ровно три абзаца, вопрос в конце, числа только из fakty.md, числа без искажений. По каждому он печатает вердикт с цитатой из поста, внизу строку «ИТОГ: зачтено 5 из 5». Важна тут не сама пятёрка, а её граница: критерия, которого ты не записал, для контролёра не существует, и чем это кончается, видно в разделе про поломки
| Критерий контролёра | Как выглядит зачёт в ocenka.md | Чем перепроверить без агента |
|---|---|---|
| крючок с числом | ЗАЧТЕНО и цитата первой строки поста | head -1 post.md |
| ровно три абзаца | ЗАЧТЕНО с первыми словами каждого абзаца | grep -c . post.md минус крючок и вопрос |
| вопрос в конце | ЗАЧТЕНО с цитатой последней строки | tail -1 post.md |
| числа только из fakty.md | ЗАЧТЕНО, перечислены все числа поста | bash proverka.sh, строка «подтверждено фактами» |
| числа без искажений | ЗАЧТЕНО, сверка по позициям | та же проверка, строки «ЧИСЛА НЕТ В ФАКТАХ» |
Одному агенту-судье верить мало, поэтому рядом стоит машинная проверка. Заводится она той же вставкой:
cat > proverka.sh <<'EOF'
vsego=0; nashli=0
for n in $(grep -oE '[0-9][0-9 ]*[0-9]|[0-9]+' post.md | sed 's/ *$//' | sort -u); do
vsego=$((vsego+1))
if grep -qF "$n" fakty.md; then nashli=$((nashli+1)); else echo "ЧИСЛА НЕТ В ФАКТАХ: $n"; fi
done
echo "чисел в посте: $vsego, подтверждено фактами: $nashli"
echo "слов в посте: $(wc -w < post.md)"
EOF
bash proverka.sh
Что увидишь: две строки с числами, у меня вышло «чисел в посте 7, подтверждено фактами 7» и «слов в посте 132». Что это даёт: оценка перестаёт зависеть от настроения модели. Машина считает то, что считается, агент судит то, что считать нельзя
Мерить систему стоит одним числом за прогон: сколько критериев из пяти зачтено. Складывай его в журнал сразу после контролёра:
echo "$(date +%F) $(grep -o 'зачтено . из 5' ocenka.md)" >> zhurnal.txt
cat zhurnal.txt
Что увидишь: строку вида 2026-09-22 зачтено 5 из 5, а со временем столбик таких строк. Что это даёт: через неделю видно, какая правка ролей подняла результат, а какая его уронила, и спорить об этом уже не с чем
Что ломается
Главная поломка выглядит как успех. Я запустил ту же команду из другой папки, где ролей нет: Claude не сказал «агента не нашёл», а сделал работу сам и написал файл. Только это был другой файл: там, где роль позвалась, у каждой строки стоит пометка источника и внизу «ВСЕГО ФАКТОВ», а в чужой папке ни одной такой пометки
| Что на экране | Что это значит | Что сделать |
|---|---|---|
| файл появился, но правил роли в нём нет | команда запущена не из папки отдела | вернуться в свою папку и повторить, роли видны только внутри неё |
| «Мне нужно разрешение на запись файла», работа встала | подтверждение записи не выдано | подтвердить в диалоге или добавить --permission-mode acceptEdits |
| в папке ролей появился файл, которого ты не писал | позвал роль, которой нет: модель сочинила её на ходу и сделала работу ей | сверить ls .claude/agents со своим списком, лишнюю роль прочитать или переименовать |
| контролёр ставит «зачтено 5 из 5», а ошибка в тексте есть | критерия на эту ошибку просто нет | дописать шестой критерий и перезапустить контролёра |
You've hit your session limit | кончился лимит текущей сессии | дождаться времени сброса, оно печатается в той же строке |
Две строки таблицы я получил опытами, а не догадками. Позвал агента fakt вместо fakty: близкое имя модель подобрала сама, роль применилась, пометки источника в файле остались на месте. А когда позвал агента redaktor, которого в папке не было, ответа «такой роли нет» не пришло: в .claude/agents появился четвёртый файл redaktor.md с шапкой, которую придумала модель, и работу сделал он. Поэтому ls .claude/agents стоит время от времени сверять со своим списком
Отдельный случай это оценка, которая молчит. В одном из моих прогонов, где сырьём был кусок отчёта на три факта, писатель перенёс падение доли навыка как падение спроса, то есть сказал шире факта. Контролёр этого не заметил и поставил полный зачёт, потому что среди пяти критериев не было ни одного про точность формулировки. Так и работает оценка: она видит ровно то, что ты в неё записал
Что ещё почитать
Пришёл за профессией и зарплатами: тот разбор здесь, профессия промпт-инженер. Хочешь понять устройство систем из нескольких ролей целиком: мультиагентные системы простыми словами. Интересно, что умеют агенты внутри Claude: агенты Claude. Не хочешь писать роли сам, нужен готовый набор: 279 специалистов одной командой. Не уверен, что вообще отдавать роботу: какие задачи бизнеса реально отдать агенту. Нужна не команда ролей, а умения внутри одной головы: скиллы Claude
Источники
Адреса открыты живым запросом 21 сентября 2026 года; числа отчёта сняты с самого файла отчёта, а команды и тексты ошибок - с собственного прогона на своей машине
- Отчёт AI Index 2026 Стэнфордского института HAI - страница выпуска, состав глав и ссылка на полный файл
- Полный файл отчёта AI Index 2026 - в нём ровно 425 страниц, число снято двумя независимыми счётчиками страниц
- Разбор данных о вакансиях у Lightcast - чьи данные легли в главу про рынок труда: кластер agentic AI, рост доли, снижение доли навыков вокруг чат-ботов
- Обзор выпуска 2026 у IEEE Spectrum - пересказ ключевых выводов отчёта, объём назван приблизительно
- Субагенты в документации Claude Code - папка
.claude/agents, поля шапки роли, отдельный контекст у каждого агента и вызов по имени - Собственный прогон 21 сентября 2026 года: три роли, три вызова по 65, 62 и 100 секунд, машинная проверка «чисел в посте 11, подтверждено 11» и два опыта на поломку
Памятка: отдел из трёх агентов одной страницей
Собрать такую же систему на втором компьютере, не перечитывая статью
Сохрани себе
- проверить программу: claude --version, ответ вида 2.1.261 (Claude Code)
- положить сырьё: файл syrye.md со своими заметками и числами
- завести отдел одной вставкой: mkdir -p ~/moy-otdel/.claude/agents, дальше три строки printf -- > .claude/agents/<роль>.md
- шапка роли: name без пробелов, tools по минимуму, обычно хватает Read и Write
- запуск роли: claude -p "Используй агента <имя>: <задача>" --permission-mode acceptEdits
- передача: каждая роль читает файл предыдущей и пишет свой, руками ничего не переносишь
- оценка: пять критериев у контролёра плюс bash proverka.sh для чисел и длины
- мера: число зачтённых критериев за прогон, строкой в zhurnal.txt после каждого запуска
Про следующий шаг
Система из трёх ролей бесполезна, пока ты не отдал ей свою настоящую работу
Дальше начинается работа, которую вставка не делает: превратить свою недельную рутину в три роли и дописать критерии под свои ошибки. Мой контролёр пропустил «спрос просел» вместо «доля просела» ровно потому, что критерия про точность формулировки у него не было, и шестой критерий я дописывал руками
Под свою задачу критерии придётся собирать так же: смотреть, где система соврала, и превращать каждую ошибку в строку проверки. Это не разовая настройка, а несколько кругов
На Лагере мы берём твою задачу, режем её на шаги и за три дня доводим до работающего результата. Приходишь со своей задачей, уходишь с собранной вещью
Заявка в закрытый канал, одобряю сразу. Бот напишет первым и отдаст три дня Лагеря. Бесплатно
Частые вопросы
Нужно ли уметь программировать?
Нет. Все три роли это текстовые файлы, а запуск это одна строка в окне ввода команд. Из непривычного там только формат шапки файла: три дефиса, поля name, description, tools, снова три дефиса, ниже обычный текст инструкции
Сколько ролей нужно в системе?
Начинай с трёх: кто собирает материал, кто делает работу, кто её проверяет. Этого хватает, чтобы у системы появилась точка проверки, и при этом легко понять, кто именно ошибся. Роли добавляют потом, когда видно, на каком шаге результат проседает
Как дописать шестой критерий под свою ошибку?
Открой файл ocenka.md в папке ролей и допиши строку в список: «6. в посте нет слов, которых нет в фактах по смыслу, например «спрос» вместо «доля»». Формулируй её от конкретного промаха, который система уже допустила, а не от общего пожелания: критерий вида «текст должен быть точным» контролёр применить не сможет. После правки роль запускают заново той же строкой
Что такое оркестрация простыми словами?
Порядок передачи работы: кто с чего начинает, кому передаёт результат, где стоит проверка и что происходит, если проверка не пройдена. В моей цепочке оркестрация описана тремя командами и тем, какие файлы читает каждая роль
Можно ли собрать такое не в Claude Code?
Можно, идея одна и та же: роль описана текстом, передача идёт через файлы. Отличаться будет способ регистрации роли и команда запуска. Я проверял живьём только Claude Code, про каркасы вроде LangGraph или CrewAI знаю из отчёта и живьём их не ставил
Если дочитал до конца
Дальше я пишу в своём канале
Я работаю один, без команды и подрядчиков: всё собираю Claude, Claude Code и агентами. В канале показываю внутрянку: какие связки ролей прижились, где обещания из роликов расходятся с прогоном, что пришлось выкинуть через неделю. Разборов там заметно больше, чем доезжает до сайта
Это заявка на вход в мой закрытый канал, одобряю сразу. Бесплатно