Занятие 3 - Хуки, Субагенты
0. Перед оркестрацией: три сюжета с разбора домашних работ
0.1. Два экстремума в работе с ИИ (и золотая середина)
Прежде чем уходить в технику, зафиксируем рабочую философию, потому что без неё все субагенты бесполезны.
Полюс 1 — человек умеет работать с ИИ, но по привычке делает руками то, что давно пора делегировать («да я по старинке»). Полюс 2 (сейчас встречается всё чаще) — человек делает всё через ИИ, но не читает то, что ИИ произвёл: сгенерировал файл, не глядя переслал, не проверил. Здоровая середина: делегируй максимально много, но либо проверяй сам, либо строй систему агентов, которая проверит за тебя.
Это не лирика, а прямой мостик к теме урока: когда у вас на машине параллельно работают 3–4 агента и часть задач вы не можете провалидировать лично (не хватает экспертизы), вы выстраиваете отдельный слой агентов-валидаторов. Ровно это мы сегодня и научимся делать.
Полюс 1 — мастер, который не доверяет роботам и точит каждую деталь напильником вручную. Полюс 2 — мастер, который запустил конвейер и ушёл пить кофе, не поставив на выходе ни одного контролёра ОТК; с ленты едет брак, а он не знает. Золотая середина — конвейер работает на полную, но в конце стоит робот-контролёр с лазерным сканером, который отбраковывает мусор. Сегодня мы собираем этого робота-контролёра.
0.2. Какие задачи идеально ложатся на skills (на примере разобранных работ)
Из десятков присланных учениками скиллов (skills) виден один общий паттерн, по которому стоит сверяться.
повторяющийся вход → повторяющийся выход. Примеры из разбора: подготовка тендерных документов в закупках, анализ юридических договоров, адаптация резюме под вакансию (CV Tailor), генерация QR-кодов под каждую новую группу курса, перевод узкоспециализированных текстов с сохранением терминологии, оценка DISC-профиля кандидата против профиля команды, диагностика проблем в Linux по выводу команды. Каждый раз: одинаковая форма запроса, одинаково качественная обработка.
Два практических нюанса, которые прозвучали:
- Скилл — это не «просто промпт». На старте кажется, что скилл = текстовая инструкция «сделай вот так». Но скилл умеет запускать код: профессиональные скиллы автора почти все дёргают Python-скрипты (
python), а значит могут генерироватьmp3, картинки,qr-коды, парсить таблицы — всё, что умеет код. - Слабое место LLM — написание текста. Парадокс: «большие языковые модели» (large language models) хуже всего справляются именно с художественным/живым текстом. Самые сложные и так и не доведённые до идеала скиллы автора — те, что связаны с writing (написанием).
Skill — переиспользуемая упаковка из инструкции (Markdown), вспомогательных материалов и иногда рабочих скриптов, которую агент сам подхватывает, когда задача совпадает с описанием скилла. Минимально валидный скилл — это файл SKILL.md с обязательными полями name (имя) и description (описание) в строго заданном формате; всё остальное опционально.
0.3. Самоулучшающиеся скиллы (self-improving skills)
Прозвучала концепция от компании Cognee1: скиллы, которые сами себя чинят по результатам работы.
flowchart LR
A["1️⃣ Загрузка всех скиллов<br/>в граф знаний<br/>(семантика + связи)"] --> B["2️⃣ Наблюдение<br/>задача · какой скилл выбран ·<br/>успех/ошибка · фидбэк юзера"]
B --> C["3️⃣ Анализ<br/>прошлые запуски, ошибки,<br/>повторяющиеся слабые места"]
C --> D["4️⃣ Создание изменений<br/>сужаем триггер · меняем шаги ·<br/>правим формат вывода"]
D --> E["5️⃣ Ревью + эволюция тестами<br/>человек или авто-режим"]
E -->|результат лучше| F["6️⃣ Обновление скилла<br/>до новой версии"]
F -.->|цикл повторяется| B
бесконтрольная мутация: скилл правится слишком сильно и ломается. Поэтому ключевой и обязательный этап — прогон эвалов (evals, тесты-эталоны). Без автоматических тестов на каждом шаге самоулучшение превращается в генератор хаоса.
иммунная система для ваших скиллов. Она следит, какие «антитела» (скиллы) против каких «вирусов» (задач) сработали слабо, мутирует антитело — и обязательно прогоняет его через чашку Петри (эвалы), прежде чем впрыснуть в кровь. Без чашки Петри вы рискуете вколоть себе мутацию, которая убьёт весь иммунитет.
1. Микро-фича CLI: переключение между сессиями стрелкой влево
Маленькая, но удобная новинка именно в Claude Code CLI (терминальной версии).
стрелки влево (←) открывает меню всех параллельных сессий. Из одного окна терминала вы прыгаете в любую сессию и обратно, а сессии в это время продолжают работать в фоне. Вы дали задание одной, ушли в другую, вернулись — первая уже что-то сделала.
не управление агентами, а управление сессиями. И на момент лекции фича работала только в CLI (не в desktop-версии) и появилась буквально за неделю до занятия. Реальная польза — для тех, у кого одновременно крутится 6–8 сессий (так работают, например, сами разработчики Claude Code: восемь окон на двух мониторах). Если вы, как автор, держите «миксы» (одна сессия Claude Code в терминале + Codex в приложении + Cowork), эта фича вам почти не нужна.
CCTV-мониторов в киберпанк-небоскрёбе. Раньше у каждой камеры был свой пульт. Теперь — один джойстик и стрелка влево листает камеры. Пока вы смотрите на камеру №3, камеры №1, 2, 4 продолжают писать. Вы не управляете тем, что в кадре, — вы просто переключаете взгляд.
2. Субагенты (Subagents) — главный рабочий инструмент
2.1. Техническое погружение
Субагент — изолированный экземпляр Claude, которого запускает ваш главный агент-оркестратор (тот, с кем вы общаетесь). У субагента своё, чистое контекстное окно, свой системный промпт, свой набор инструментов и свои разрешения. Он уходит, делает узкую задачу в своём окне, и возвращает главному агенту только финальное сообщение — короткую выжимку. Вся «грязь» (прочитанные файлы, логи, результаты поиска) остаётся внутри субагента и никогда не попадает в ваш основной диалог.
Зачем это нужно — на конкретном примере. Допустим, вам надо: (а) проанализировать код, (б) поискать в интернете, как решается такая задача, (в) сходить в документацию.
Как было ДО субагентов:
flowchart TD
M["🧠 Главный агент<br/>(одно контекстное окно)"]
M --> R1["📖 читает код<br/>+50% окна забито"]
R1 --> R2["🌐 ищет в интернете<br/>+30% окна забито"]
R2 --> R3["📚 читает документацию<br/>окно почти полное"]
R3 --> X["⚠️ срочно компактить контекст<br/>детали теряются"]
style X fill:#ff6b6b,stroke:#c92a2a,color:#fff
Как стало С субагентами:
flowchart TD
M["🧠 Главный агент<br/>(окно остаётся чистым)"]
M -->|"задача: разберись в коде"| S1["🤖 Субагент A<br/>своё окно забивает кодом"]
M -->|"задача: найди в вебе"| S2["🤖 Субагент B<br/>своё окно забивает поиском"]
M -->|"задача: прочти доки"| S3["🤖 Субагент C<br/>своё окно забивает доками"]
S1 -->|"короткий ответ"| M
S2 -->|"короткий ответ"| M
S3 -->|"короткий ответ"| M
M --> OUT["✅ В окне главного:<br/>3 вопроса + 3 коротких ответа.<br/>Идеально эффективно."]
style OUT fill:#51cf66,stroke:#2f9e44,color:#000
В окне главного агента вместо мегабайтов документации остаётся лишь «вопрос → короткий ответ». Это и есть суть изоляции контекста.
сами, без вашего ведома. Вы можете явно попросить («обязательно запусти субагентов»), но обычно главный агент додумывается сам. Классические триггеры: параллельное исследование нескольких тем, изучение большого кода, узкоспециализированные задачи (полазить в SQL-базе, прогнать security-проверку) — то, что нужно делать скрупулёзно и что «съест» кучу контекста.
2.2. Сильный приём: субагент как беспристрастный судья (LLM as a judge)
LLM as a judge (модель в роли судьи). Проблема: если результат оценивает ваш основной агент, он делает это с грузом всего своего контекста. Оценка получается предвзятой — не обязательно плохой, но точно не трезвой и не объективной.
Решение: запустить отдельного субагента с чистым контекстом и одной задачей — «прочитай этот текст/код и дай честное мнение». Он приходит «новеньким», его ничто не предубеждает, и он отвечает честно. Та же логика — для code review и skill review.
судья — это подсудимый, который весь день сам с собой обсуждал дело. Он физически не может судить непредвзято. Поэтому вы вызываете присяжного из криокамеры (субагент с чистым контекстом): его только что разморозили, он не слышал ни слова из прений, ему показывают улики — и он выносит холодный, честный вердикт. Чистота контекста = беспристрастность.
2.3. Ограничения субагентов (с экспертными правками!)
Автор перечислил ограничения. Часть из них устарела — фиксируем актуальную картину.
На текущий момент это уже не так. Согласно официальной документации Claude Code, начиная с версии v2.1.172, субагент может запускать собственных субагентов, а вложенность поддерживается до пяти уровней в глубину. Используется это, когда делегированная задача сама распадается на параллельные подзадачи (например, агент-ревьюер раздаёт по верификатору на каждую найденную проблему), и промежуточный вывод не доходит до основного диалога. Так что историческое ограничение, на котором автор строил аргумент про тестирование, снято — хотя обходной приём через claude -p (см. ниже) по-прежнему рабочий и иногда удобнее.
Task). Уточнение: в версиях до v2.1.63 делегирование шло через инструмент Task, сейчас оно идёт через инструмент Agent. На поведение для вас это почти не влияет, но если читаете чужие старые гайды и видите Task tool — это он же, переименованный.
Остальные ограничения, которые автор назвал, — актуальны:
- Субагенты не общаются друг с другом. Они докладывают только главному агенту, между собой связи нет. (Это ключевое отличие от Agent Team, см. раздел 3.)
- Расход токенов ~ в 4–7 раз выше обычной сессии. ✅ Подтверждено: независимые источники называют ориентир «примерно ×7 токенов» для субагент-нагруженных воркфлоу, потому что каждый субагент держит своё контекстное окно и отдельного биллинга при этом нет — платите объёмом токенов. На не-
Maxплане лимиты выгорают быстро; 2 субагента — норм, 12 — уже больно. - Работают в фоне. Вы не видите «изнутри», что они делают.
- Для простых задач не нужны. Не плодите субагентов на каждый чих.
/btw Для быстрого вопроса по тому, что уже есть в диалоге, субагент избыточен. В Claude Code есть лёгкая команда /btw (от «by the way»): она видит ваш полный контекст, но не имеет доступа к инструментам, а её ответ не добавляется в историю. Дёшево и чисто.
дрон-разведчик, посланный в токсичное болото данных. Он заходит по уши в жижу (забивает своё окно логами и файлами), выковыривает один золотой самородок, сжигает себя и отправляет вам самородок по запаянной пневмопочте. Ваши руки (контекст главного) остаются стерильными. Раньше у дрона был запрет «не клонировать себя» — теперь запрет сняли, и дрон может отрастить пять поколений дронов-внуков, чтобы прочесать болото параллельно.
3. Agent Team (Команды агентов) — экспериментальный режим
3.1. Чем команда агентов отличается от субагентов
Agent Team — экспериментальный режим, где несколько полноправных, независимых сессий Claude Code работают вместе. В отличие от субагентов (которые «сходил-доложил-исчез»), участники команды — это самостоятельные агенты со своими контекстными окнами, общим списком задач и возможностью напрямую общаться друг с другом через общий «почтовый ящик» (mailbox).
flowchart TB
subgraph TEAM["👥 AGENT TEAM — равноправная команда"]
direction LR
TL["🧭 Team Lead<br/>координирует, ставит задачи"]
A1["🤖 Агент Frontend"]
A2["🤖 Агент Backend"]
A3["🤖 Агент QA"]
A1 <-->|"переговоры:<br/>«подожди, я доделаю,<br/>чтоб не сломать тебе»"| A2
A2 <-->|общий список задач| A3
TL --> A1
TL --> A2
TL --> A3
end
subgraph SUB["🛰️ SUBAGENTS — подчинённые дроны"]
direction LR
M["🧠 Главный агент"]
S1["🤖"] -->|доклад| M
S2["🤖"] -->|доклад| M
S3["🤖"] -->|доклад| M
M --> S1
M --> S2
M --> S3
end
style TEAM fill:#e7f5ff,stroke:#1971c2
style SUB fill:#fff4e6,stroke:#e8590c
Самое яркое отличие — переговоры. Агенты в команде реально обсуждают спорные задачи: один может сказать другому «давай я подожду, пока ты закончишь, чтобы не сломать твою работу». Один пилит фронт, другой — бэк, третий контролирует качество, и они сами делят общий список задач между собой. Это эксклюзив Claude — на момент лекции такого не было ни у кого, кроме Claude (субагенты-то есть много где).
3.2. Включение и стоимость
settings.json. Автор называет её как «claude code experimental agent teams».
Уточнение по факту: переменная окружения называется CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1, и для работы требуется Claude Code v2.1.32+. По умолчанию режим выключен.
сразу ×10 и больше по токенам. На Pro-плане нет смысла даже пробовать — лимит выгорит мгновенно.
3.3. Как это увидеть глазами (демо)
В обычной работе команда агентов выглядит никак: всё происходит в фоне, главный агент лишь периодически пишет «сейчас посмотрю, что они делают». Чтобы увидеть их в отдельных окнах, на Mac автор использует терминальный мультиплексор cmux2.
«Запусти команду из трёх agent-team, пусть каждый погуглит про X, и обязательно запусти их в сплит-окнах (split windows)». Без волшебной фразы «в сплит-окнах» агенты уйдут в фон, как обычные субагенты. С ней — Claude раскидывает по агенту на отдельное окно cmux (School Researcher, Teacher Researcher, Cross Researcher), они параллельно ищут, и по завершении главный их закрывает.
в реальной работе он Agent Team не использует — «не было ещё ни одного проекта, где бы я его по-настоящему применил». Технология сырая и нестабильная (на занятии она ломалась). Когда доходит до по-настоящему сложных проектов, он идёт другим путём (см. раздел 6).
Dynamic Workflows (динамические воркфлоу). Вместо того чтобы вручную городить cmux со сплит-окнами или писать bash-циклы, Claude сам пишет JavaScript-скрипт оркестрации, разворачивает десятки–сотни параллельных субагентов, валидирует и итерирует до сходимости. План оркестрации и промежуточные результаты живут в переменных скрипта, а не в контексте модели — это даёт масштаб без потери смысла. Иными словами, многие «эксперименты со сплит-окнами» сегодня — это скорее наглядная демонстрация, чем продакшен-инструмент: нативная оркестрация ушла вперёд.
рой одноразовых дронов с одной королевой: слетали, отдали мёд, испарились. Agent Team — это команда взломщиков сейфа из киберпанк-боевика. Каждый — полноценный оперативник со своей рацией. Они переговариваются вживую: «Не вскрывай вентиляцию, пока я не вырублю сигнализацию». У них одна доска с задачами на всех. Свободы больше — но и топливо (токены) они жгут как реактивный ранец, а не как карманный фонарик.
4. Практика: скилл, который оркестрирует субагентов
Это сердцевина занятия и основа домашки. Делаем скилл-исследователь (research skill): он принимает запрос, дробит его и запускает трёх субагентов, каждый ищет в своём источнике.
4.1. Архитектура
flowchart TD
U["👤 Пользовательский запрос<br/>(тема для ресёрча)"] --> SK["📜 Skill-оркестратор<br/>(SKILL.md)"]
SK -->|декомпозиция на 3 подзапроса,<br/>параллельный запуск в одном сообщении| P{{"параллельно"}}
P --> W["🌐 Web Researcher<br/>инструменты: Tavily MCP,<br/>Tavily CLI, WebFetch"]
P --> H["📰 Hacker News Researcher<br/>инструменты: Hacker News API,<br/>Tavily"]
P --> T["🐦 Twitter Researcher<br/>инструмент: Bird CLI"]
W -->|JSON-структура| AGG["🧮 Главный агент:<br/>фильтрует · дедуплицирует ·<br/>кластеризует по темам"]
H -->|JSON-структура| AGG
T -->|JSON-структура| AGG
AGG --> MD["📄 Итоговый Markdown-отчёт"]
style SK fill:#e7f5ff,stroke:#1971c2
style AGG fill:#fff3bf,stroke:#f08c00
style MD fill:#d3f9d8,stroke:#2f9e44
каждого субагента — своя инструкция по фильтрации. Один ищет в статьях конкретные use-кейсы, второй — треды с обсуждениями, третий — твиты с конкретными примерами. Каждый возвращает чистую JSON-структуру, а главный агент их сводит, выкидывает дубли и кластеризует. На выходе — один аккуратный отчёт вместо трёх мегабайтов сырых выдач.
4.2. Из чего состоит субагент (файлово)
Субагенты лежат рядом со скиллом в папке agents/, каждый — отдельный Markdown-файл.
research/ ← папка скилла
├── SKILL.md ← главный скилл-оркестратор
└── agents/
├── web-researcher.md
├── hacker-news-researcher.md
└── twitter-researcher.md
В настройках каждого субагента (в YAML-шапке файла) можно задать:
model— какую модель использует субагент:Haiku,SonnetилиOpus. Если модель не указана — субагент наследует модель главного (у автора этоOpus). Для простого поиска часто разумно поставитьSonnet(дешевле/быстрее); для глубоких рассуждений —Opus.tools— доступ только к нужным инструментам.- При желании — свои хуки (см. раздел 5) и доступы.
Tavily — поисковый сервис/MCP для веба и тематических сайтов. WebFetch — стандартный веб-поиск/загрузка страниц. Hacker News API — доступ к обсуждениям на Hacker News. Bird CLI (в речи также «BERT CLI») — неофициальный command-line interface (интерфейс командной строки) для Twitter, работающий с вашими cookies (то есть от вашего авторизованного аккаунта). Apify (в речи «Epify») — мощный, но платный сервис парсинга/поиска.
/agents (посмотреть установленных или create new agent). Но автор справедливо отмечает: проще попросить Claude создать субагента словами — он всё сделает сам. Ручное создание оправдано редко.
эвалы (evals) — но их прогон очень долгий. Автор честно говорит: создание хорошего скилла с тестами может занимать часы; сложные он иногда оставляет на ночь — Claude выжигает один 5-часовой лимит, утром получает «продолжай» и выжигает следующий. Это нормально: качественный комплексный скилл рождается долго.
диспетчер новостной редакции в день сенсации. Он не бежит сам по всем источникам. Он раздаёт трём репортёрам по заданию: один роет архив (Web), второй сидит на форумах (Hacker News), третий мониторит соцсети (Twitter). Каждый приносит уже отжатую заметку (JSON), а редактор сшивает их в одну полосу, вычёркивая повторы. Магия не в том, что один супер-журналист всё знает, а в том, что трое работают параллельно и каждый держит свою грязь при себе.
4.3. «У ИИ нет ограничений на объяснение»
Важная мета-мысль из практики: если вам что-то непонятно (код, архитектура, чужой скилл) — просто попросите агента объяснить. Он нарисует схему, разложит логику, покажет, как работает каждый субагент (какие у него инструменты, какой формат ответа). Не нужно стесняться «непонятных» мест — попросите визуализацию, и поймёте всё (см. также раздел 8 про HTML-артефакты).
5. Хуки (Hooks) — детерминированная автоматизация жизненного цикла
5.1. Техническое погружение
Hook — автоматическое действие (shell-команда, HTTP-endpoint или промпт к LLM), которое срабатывает на конкретное событие в жизненном цикле Claude Code: до/после использования инструмента, на отправку промпта пользователем, на старт сессии, до/после компакта контекста и т. д. В отличие от инструкций в промпте (которые модель может интерпретировать или проигнорировать), хук выполняет детерминированный код — он не может «нагаллюцинировать».
Хуки вызываются через /hooks. Автор сначала говорит «их пять… ой, больше», и это правда: событий несколько десятков (порядка двух-трёх десятков точек жизненного цикла). Их удобно сгруппировать вокруг ключевых моментов:
flowchart LR
SS["SessionStart<br/>старт сессии"] --> UP["UserPromptSubmit<br/>юзер отправил промпт"]
UP --> PRE["PreToolUse<br/>ПЕРЕД инструментом"]
PRE --> TOOL["🛠️ Инструмент<br/>(напр. Bash)"]
TOOL --> POST["PostToolUse<br/>ПОСЛЕ инструмента"]
POST --> PC["PreCompact / PostCompact<br/>до/после сжатия контекста"]
PC --> STOP["Stop / SubagentStop<br/>агент решил, что закончил"]
style PRE fill:#ffe3e3,stroke:#e03131
style STOP fill:#fff3bf,stroke:#f08c00
5.2. Реальные применения хуков
- Блокировка опасных команд.
PreToolUseперехватываетrm -rf(удаление всего с диска) до выполнения и блокирует её. Так строится «защита от себя». - Автоформатирование кода. После редактирования файла (
PostToolUse) автоматически запускается Prettier или Ruff — код всегда отформатирован. - Уведомления и звуки. Claude закончил работу или кончаются токены — приходит push/голос/звук. (Фан-фаворит автора — звуки из Warcraft, «нужно больше золота», когда заканчиваются токены.)
- Сканер безопасности. Можно встроить маленькие ML-модельки, проверяющие каждую команду на prompt injection (внедрение вредоносной инструкции).
- Логирование и аудит. Каждая команда пишется в лог с временной меткой.
- Проверка качества кода. Запуск
ESLint,TypeCheckerи подобных. Stop Hook— «не дать остановиться». Claude решил, что закончил, → хук спрашивает LLM: «а тесты прошли? все задачи точно сделаны?» Если нет — Claude продолжает. ⚠️ Обязательно опишите условие выхода, иначе цикл не закончится никогда (это фундамент Ralph Loop — см. раздел 6).- Связь субагентов хуками — теоретически возможно, но автор честно называет это костылём.
профессиональная разработческая история. Если вы строите весь рабочий процесс вокруг агентов, они незаменимы. Но автор (по собственному признанию — не профессиональный разработчик) использует их «совсем чуть-чуть». Если перечисленные термины (ESLint, Prettier, git hook) вам ничего не говорят — возможно, хуки вам пока просто не нужны. Хуки, кстати, появляются и в других инструментах (в Codex тоже).
спинномозговой рефлекс, вшитый в нервную систему агента. Когда рука летит к раскалённой плите (rm -rf перед выполнением), мозг (LLM) ещё ничего не успел подумать — а рефлекторная дуга (хук) уже отдёрнула руку. Рефлекс не «думает» и потому не может ошибиться в интерпретации: он либо срабатывает, либо нет. Промпт — это уговор с мозгом («постарайся не трогать плиту»), а хук — это сухожилие, которое физически не даст её коснуться.
6. Автономная разработка: Ralph Loop → Ralphix → Compound Engineering
Это «другой путь», которым автор идёт для по-настоящему сложных проектов вместо Agent Team. Три уровня, от примитивного к мощному.
6.1. Ralph Loop — гениальная тупость
Ralph Loop — паттерн автономной разработки: один и тот же промпт подаётся агенту заново снова и снова, пока задача не будет выполнена. Назван в честь Ральфа Уиггама (Ralph Wiggum) из «Симпсонов»3 — потому что это не «умная» система, а брутфорс: не клевер, а упорство.
flowchart TD
P["📝 Один и тот же prompt<br/>+ completion-promise<br/>+ max-iterations"] --> WORK["⚙️ Claude работает:<br/>пишет код, гоняет тесты"]
WORK --> TRY["Claude думает, что закончил →<br/>пытается завершить сессию"]
TRY --> SH{"🪝 Stop Hook:<br/>completion-promise<br/>выполнен?"}
SH -->|"ДА"| DONE["✅ Задача завершена"]
SH -->|"НЕТ"| P
style DONE fill:#d3f9d8,stroke:#2f9e44
style SH fill:#fff3bf,stroke:#f08c00
Запуск (после установки официального плагина):
/ralph-loop "<твой промпт>" --max-iterations 50 --completion-promise "DONE"
Каждая итерация — свежая сессия с чистым контекстом, но она видит изменённые файлы и git-историю прошлых прогонов. Память живёт не в окне модели, а во внешних файлах (progress.txt, git).
--completion-promiseненадёжен сам по себе: он использует точное строковое совпадение, что легко срывается. Реальной страховкой является--max-iterations— всегда его ставьте, иначе цикл может крутиться бесконечно (и жечь токены/деньги).- Автор техники — Geoffrey Huntley (он же придумал и название «Ralph Wiggum»). В лекции упомянут только мультяшный источник имени, но не сам изобретатель. Хантли же сформулировал девиз паттерна: «Лучше предсказуемо провалиться, чем непредсказуемо преуспеть» — то есть детерминированно-плохой подход в недетерминированном мире надёжнее, потому что ошибки становятся данными для следующей итерации.
золотая рыбка с амнезией и бесконечным упрямством. Каждый круг по аквариуму она забывает всё (чистый контекст), читает стикеры на стекле (git и progress.txt), снова бьётся о задачу. Она не гениальна — она просто никогда не сдаётся. И именно тупая предсказуемость делает её надёжной: вы заранее знаете, что она будет долбить стену, пока та не рухнет (или пока не кончатся max-iterations).
6.2. Ralphix — Ralph Loop + взаимный код-ревью с Codex
На основе Ralph Loop работает то, что использует автор, — Ralphix4.
flowchart TD
PLAN["📋 Фаза 0: Планирование<br/>подробный план задач"] --> CREATE["🏗️ Фаза 1: Создание<br/>git-ветка; по каждой задаче —<br/>свежая сессия → тесты/линтер → commit"]
CREATE -->|все задачи готовы| INT["🔍 Фаза 2: Внутренний ревью<br/>Claude сам тестирует:<br/>качество, корректность"]
INT --> EXT["🔁 Фаза 3: Внешний ревью<br/>Codex читает работу Claude,<br/>предлагает правки → диалог"]
EXT -->|"Claude и Codex сошлись во мнении"| FIN["🏁 Финализация"]
EXT -.->|"итерации правок"| EXT
style FIN fill:#d3f9d8,stroke:#2f9e44
Ключевые особенности:
- Вся схема — полностью автономна и работает в Docker-изоляции (изолированные виртуальные контейнеры), куда подключены и Claude Code, и Codex.
- Codex как ревьюер — лучший инструмент для ревью кода (по мнению автора). Claude и Codex переговариваются, Claude правит замечания, пока оба не решат «всё ок» (или не упрутся в тупик — на практике у автора всегда сходились).
- Рассчитано на часы автономной работы. Один из багфиксов в официальном Ralphix — авторства самого лектора: Claude Code в связке с Ralphix нашёл баг, а лектор попросил агента «по-человечески» написать о нём создателю проекта (Умпутуну).
гигантский расход токенов. Без Max 200 пробовать не рекомендуется. Это плата за «дал план — ушёл — вернулся к готовому коду».
6.3. Compound Engineering — приумножение знаний
Самый мощный фреймворк, который автор лично использует и которому учит профессиональных разработчиков. Сделан компанией Every5.
Compound здесь — это накопление с эффектом сложного процента: вы складываете частички знаний слой за слоем, и из них образуется нечто большее. Каждый цикл разработки делает следующий цикл быстрее, потому что накапливает документированные находки, паттерны и решения.
Шесть ключевых этапов (подключается через /plugins → compound-engineering):
flowchart TD
I["1️⃣ Ideate /ce ideate<br/>критическая оценка сырой идеи →<br/>артефакт ranked ideation"] --> B["2️⃣ Brainstorm /ce brainstorm<br/>AI задаёт вопросы, вы отвечаете →<br/>ключевые концепции"]
B --> P["3️⃣ Plan<br/>запускает 6–7 субагентов +<br/>субагент-перепроверщик плана<br/>🔥 токены начинают улетать"]
P --> W["4️⃣ Work<br/>новый git worktree,<br/>пошаговая имплементация → pull request"]
W --> R["5️⃣ Review<br/>28 ревью-агентов под разные языки<br/>(Python, TypeScript, Swift…)<br/>🔥 ещё больше токенов"]
R --> C["6️⃣ Compound<br/>AI создаёт артефакты по всем находкам:<br/>проблемы, решения, архитектура"]
C -.->|"следующий проект<br/>читает Compound-артефакты<br/>и стартует уже 'умным'"| I
style C fill:#d0bfff,stroke:#7048e8
style P fill:#ffe8cc,stroke:#f76707
style R fill:#ffe8cc,stroke:#f76707
Разбор этапов:
- Ideate (
/ce ideate) — для самой ранней стадии, когда есть лишь сырая идея. AI поможет её критически оценить. Результат —markdown-артефактranked ideation. Если идея уже есть — этап можно пропустить. - Brainstorm (
/ce brainstorm) — классический брейншторм: AI задаёт вопросы, вы отвечаете, рождаются ключевые концепции. Это ещё не план. - Plan — здесь токены начинают улетать: запускается ~6–7 параллельных субагентов, плюс отдельный субагент перепроверяет ваш план. Дороже, но точнее.
- Work — создаётся новый
git worktree, идёт пошаговая имплементация плана, результат — pull request. - Review — 28 разных ревью-агентов под разные языки (Python, TypeScript, Swift) и аспекты (соответствие плану, схема БД, API-контракты). Каждый проверяет своё. Тут токены тоже улетают.
- Compound — финал, в честь которого назван фреймворк. AI анализирует все прошлые шаги и создаёт артефакты по находкам: с какими проблемами столкнулись, как решили, какие архитектурные решения приняли. В следующий раз AI прочитает эти артефакты и стартует, уже зная всю историю проекта.
планирование и review — это самые долгие этапы. Главный артефакт — сам план (очень продуманный, с правильной структурой папок). На Pro-плане пробовать бессмысленно: лимит кончится мгновенно. Чтобы это работало, нужно реально вкладываться в процесс.
сложный процент, но для знаний. Обычная разработка: каждый проект начинаете с нуля, как Сизиф с пустыми руками. Здесь — каждый проект роняет в хранилище «кристаллы уроков» (артефакты Compound). Следующий проект ваш AI открывает это хранилище и начинает уже богатым: «ага, в прошлый раз мы напоролись вот на это и решили вот так». Это снежный ком, катящийся с горы и набирающий массу, — а не белка в колесе.
7. Тарификация: разделение interactive vs programmatic (с критической правкой!)
Автор предупреждает о грядущей с 15 июня смене правил оплаты. Тема важна, но требует актуализации по состоянию на конец июня 2026.
Interactive use (интерактивное использование) — когда за пультом сидит человек и работает с агентом вживую (терминальный Claude Code, чат, Cowork). Programmatic use (программное использование) — когда процесс запускает код, а не человек: claude -p (headless-режим), Claude Agent SDK, Claude Code GitHub Actions, сторонние приложения на SDK. Простое правило: если человек жмёт Enter — это interactive; если Enter за вас жмёт робот — это programmatic.
Что было анонсировано на 15 июня 2026:
- Programmatic-использование перестаёт расходовать вашу подписку и переезжает на отдельный месячный кредит, тарифицируемый по полным API-ценам.
- Размер кредита: $20 на
Pro, $100 наMax 5x, $200 наMax 20x(для Team — $20/$100 за место). Кредиты не переносятся на следующий месяц. После исчерпания —usage creditsпо API-ценам, которые можно включать/выключать. - Interactive-использование (терминальный Claude Code, чат, Cowork) — без изменений.
до 15 июня и подаёт это разделение как свершившийся факт. Но 15 июня 2026 Anthropic приостановила (paused) это изменение — прямо в день, когда оно должно было вступить в силу. На текущий момент claude -p, Agent SDK и GitHub Actions по-прежнему расходуют обычные лимиты вашей подписки; отдельный кредитный пул не активен. Help-страница Anthropic теперь открывается уведомлением о паузе.
⚠️ Что при этом всё же произошло 15 июня (и осталось в силе): были сняты с поддержки два старых ID моделей (запросы к ним возвращают ошибку), а сам SDK переименован: claude-code-sdk → claude-agent-sdk. Если у вас код на старом пакете или старых model-ID — это нужно обновить независимо от паузы по биллингу. Подробный разбор тарификации — тема следующего занятия курса.
ошибочным — мол, они «отворачиваются от сообщества программистов». Он же отмечает, что Умпутун (создатель Ralphix, в прошлом огромный фанат Claude Code) переписывает Ralphix под Codex. С учётом правки №5 эта тревога оказалась преждевременной: на практике пул так и не включили, и для интерактивной работы (как у большинства слушателей) вообще ничего не поменялось.
одной трубой воды, из которой пьёте и вы (interactive), и ваш автоматический поливальный робот в саду (programmatic). Робот по ночам качал воду часами и опустошал бак, рассчитанный на «человека с кружкой». Anthropic решила протянуть роботу отдельный счётчик с дорогим тарифом… а потом, в день запуска, перекрыла этот счётчик и оставила всё как было. Старая труба работает по-прежнему. Поменяли лишь бирку на самом роботе (claude-code-sdk → claude-agent-sdk) и отключили пару устаревших насосов (старые model-ID).
8. Бонус: HTML-артефакты как способ всё понять
Финальная практическая мысль, отвечающая на вопрос «как делать схемы со стрелочками и цветными ячейками».
мыслить категориями того, что агент может вывести в HTML и показать. Вам не нужен особый инструмент — достаточно сказать: «Создай мне HTML-артефакт, где наглядно разложена вся логика работы нашего агента. Красиво, в HTML». Есть готовый скилл Playground для этого, но он не обязателен.
Это большой новый тренд: агент отвечает вам не «стеной текста», а красивым интерактивным HTML-артефактом, который объясняет что-то именно вам. Цель — не «лучше донести инфу до модели», а чтобы модель лучше объяснила вам. Не понимаете код — попросите визуализацию.
голографический проектор: он на лету рисует в воздухе светящуюся 3D-схему вашего агента, со стрелками и цветными блоками. Та же информация, но теперь она влетает через глаза, а не пробивается через абзацы.
✅ Домашнее задание
скилл, который обязательно оркестрирует группу субагентов (хотя бы 2–3, не больше — берегите лимиты). Это может быть скилл комплексного исследования, сложной обработки документов или любая задача на ваш выбор. Загрузите его, как делали раньше, и обязательно опишите словами, что именно ваш скилл делает.
Смысл задания — потренироваться создавать субагентов, которые параллельно решают разные подзадачи. На следующем занятии будем встраивать Claude Code в другие инструменты и подробно разбирать новую тарификацию.
🧭 Карта занятия одним взглядом
flowchart LR
CTX["🎯 Управление контекстом<br/>(суть всего)"]
CTX --> SUB["🤖 Субагенты<br/>изоляция · доклад · судья"]
CTX --> TEAM["👥 Agent Team<br/>переговоры · общий список<br/>(дорого, экспериментально)"]
CTX --> HOOK["🪝 Хуки<br/>детерминированные рефлексы"]
SUB --> SKILL["📜 Скилл-оркестратор<br/>3 субагента → отчёт"]
HOOK --> RALPH["🔁 Ralph Loop<br/>брутфорс-цикл"]
RALPH --> RX["🐳 Ralphix<br/>+ ревью Codex, Docker"]
RX --> CE["📈 Compound Engineering<br/>6 этапов, накопление знаний"]
CE --> BILL["💳 Тарификация<br/>interactive vs programmatic<br/>(пауза с 15 июня!)"]
style CTX fill:#1971c2,color:#fff,stroke:#0b4884
style BILL fill:#e8590c,color:#fff,stroke:#9c3a06
Footnotes
-
Cognee — компания/опенсорс-проект, специализирующийся на «памяти» для ИИ-агентов через графы знаний (knowledge graph). Идея графа знаний — хранить факты не плоским списком, а сетью узлов и связей, чтобы по ней можно было эффективно семантически искать. В лекции название звучит на слух как «когни», а «когни-граф» — это их граф навыков/памяти. ↩
-
cmux — терминальный мультиплексор (как
tmux), адаптированный для одновременной работы с несколькими ИИ-агентами в сплит-панелях. Работает только на Mac/Unix. Не путать сtmux— классическим мультиплексором терминала, на идеях которого построено множество подобных инструментов. ↩ -
Ральф Уиггам (Ralph Wiggum) — второстепенный персонаж «Симпсонов», добрый, но недалёкий сын шефа полиции. Имя стало нарицательным для «гениально-простого» решения: не за счёт ума, а за счёт упрямого повторения. Автор техники — инженер Geoffrey Huntley. ↩
-
Ralphix — надстройка над паттерном Ralph Loop, добавляющая структурированные фазы (планирование → создание → внутренний ревью → внешний ревью силами Codex) и Docker-изоляцию. Создана разработчиком, известным в русскоязычном IT как Умпутун (давно живёт в США). В официальном репозитории Ralphix есть багфикс авторства самого лектора курса. ↩
-
Every (EveryInc) — медиа- и продуктовая компания, одни из самых заметных людей в области AI-разработки. Их методология Compound Engineering распространяется как официальный плагин для Claude Code (
compound-engineering-plugin) и используется ими в собственной разработке. ↩