Шесть выводов из видео
Лестница, а не замена
Промпт, контекст, skills, цикл, граф — пять ступеней за три года. Каждая появилась там, где предыдущая упиралась в потолок.
Цикл открывает путь
Цель плюс набор инструментов: модель решает, что вызвать следующим, и крутится, пока не сочтёт задачу закрытой. Нарисовать конец заранее нельзя.
Граф задаёт форму
Все рёбра лежат на холсте до запуска. Четыре независимых скана уходят одной волной вместо четырёх последовательных ходов.
Сначала skill, потом граф
Правило со слайда: закрепляй workflow в граф только после того, как он перестал меняться.
Барьер стоит времени
Волна графа длится столько, сколько самая медленная ветка. В демо календарь и память ждут веб-поиск 1,9 с.
Форма старая, начинка новая
Условные параллельные DAG крутит Airflow десять лет. Ново то, что узел — вызов модели, ребро выбирается по данным, а значит нужны guards.
Один вопрос в X и две недели ругани
18 июля 2026 года Питер Штайнбергер, автор open claw, спросил в X: «are we still talking about loops or did we shift to graphs yet?». Пост собрал 3 млн просмотров. Первый комментарий под ним — «Bro, stop. I am on vacation». 00:24
Шон вспоминает, что ровно так же в своё время взлетел термин context engineering: известный человек называет слово, дальше его обсуждают все. Отсюда задача видео — разобрать, что за этими словами стоит на уровне системного дизайна, и показать рабочий код. 00:46
Лестница агентной инженерии: три года в одной схеме
Шон выстраивает пять ступеней подряд и объясняет, какую боль закрывала каждая следующая. Цикл и граф на схеме подсвечены — это две верхние ступени, а не конкурирующие лагеря.
Prompt
Времена ChatGPT 3.5: «ты лучший поэт, ты Шекспир или Ли Бо — напиши стих». Управление сводилось к тому, в какой роли отвечает модель.
Context
Как только LLM ушла из игрушки в рабочие процессы, понадобились данные: Excel, Google Sheets, CRM. Агент поддержки или продаж говорит от имени бизнеса и должен опираться на его факты.
Skills
В терминах харнесса это процедурная память: по какой стороне тротуара идти в США и Китае, а по какой — в Великобритании и Японии. Чтобы не повторять модели одно и то же про эмодзи в каждом сообщении.
Loop
Есть цель, но нет готовой процедуры. Модели дают инструменты — MCP, Google Calendar, Gmail API, GitHub API — и она крутит итерации, пока цель не закрыта.
Graph
Процедура задана заранее. Отсюда и претензия критиков: Airflow и step functions решали это ещё в 2023 году.
Skills → Loop → Graph
Skills — строгое следование процедуре. Цикл — противоположность: «агент, разберись сам». Граф Шон описывает как смесь двух подходов: часть работы жёстко зафиксирована, часть остаётся исследовательской. 06:53
Как выглядит цикл и как выглядит граф
Разница видна на картинке: у цикла нельзя нарисовать конец, у графа все рёбра лежат на холсте ещё до первого вызова.
Сначала skill, потом граф — и не раньше
Порядок такой: описываешь процедуру как skill, смотришь, как часто она меняется, и только когда изменения прекратились — закрепляешь её в граф. Шон приводит корпоративный пример: служба поддержки в e-commerce отвечает на вопросы про логистику, возвраты и образцы одинаково изо дня в день, такой workflow просится в граф. 07:15
Часть работы остаётся за циклом — та, где нет SOP. Ранний пример такой петли — deep research: «иди в интернет и принеси отчёт». Там ценность именно в том, что маршрут заранее неизвестен. 07:39
Маршрут неизвестен
Починить баг в PR, собрать исследование, разобраться в незнакомой системе. Шаги зависят от того, что нашлось на предыдущем шаге.
Форма повторяется каждый день
Утренняя сводка, разбор входящих обращений, регламент поддержки. Источники известны, порядок известен, остаётся только запустить их вместе.
Waku Agent: харнесс целиком и два графа в нём
Waku Agent — локальный ассистент Шона с открытым кодом, у репозитория больше 700 звёзд. Ставится клонированием репозитория или пакетом из PyPI; дальше ключи в окружение и запуск дашборда. 11:04
# установка одной командой pip install waku-agent # дальше — переменные окружения и запуск дашборда на localhost:7777
triage
Стартовая точка ветвится надвое: классификатор решает, нужны ли тяжёлые агентные вызовы, и параллельно уходит проверка календаря. На вопрос «what’s up today» агент прочитал календарь через list_events и Apple Calendar. 12:58
gather
Вызывается явно: /gather плюс вопрос про PR-ы и конкурентов. Четыре скана уходят одновременно, дальше синтез и черновик сводки. 14:06
Тайминги: что цикл пропустил и за что платит граф
Самая интересная доска видео — не про архитектуру, а про время. Шон разложил один и тот же запрос по двум формам и показал, чем каждая расплачивается.
Пропущенные источники
Модель сама решила, что трёх обращений хватит, и не пошла ни в веб, ни в память. Полнота ответа зависит от её суждения на каждом шаге.
Быстрые ветки ждут
Все четыре источника опрошены, но волна не закончится раньше самой медленной ветки. Быстрые узлы ждут; это цена гарантированного покрытия.
Они сосуществуют
Шон формулирует прямо: граф не заменяет цикл, и спорить, что лучше, бессмысленно — они закрывают разные ситуации. 16:27
Движок графа: узлы, рёбра, роутеры
В репозитории всё лежит в папке waku/graph: движок, описание узлов и отдельная папка workflows с готовыми графами. Узлом может быть вызов инструмента, вызов модели, агентный вызов или роутер. 17:37
@dataclass class Graph: name: str nodes: dict[str, Node] edges: list[tuple[str, str]] routers: dict[str, tuple[RouteFn, dict[str, str]]] def add_node(self, node: Node) -> None: ... def add_edge(self, src: str, dst: str) -> None: ... def add_router(self, src, route, targets) -> None: ...
Два правила из докстрингов
Безусловное ребро означает: когда закончился src, dst становится на шаг ближе к готовности. Условный переход — это роутер: функция route(state) возвращает метку, и выполнение прыгает в targets[label]. Формулировка в коде однозначная: «Routers are code, never models».
Добавить свой workflow можно новым .py-файлом в той же папке. После мержа он появляется в списке команды /graphs рядом с gather и triage — Шон зовёт присылать PR-ы. 19:08
«Это же обычный DAG из 2023 года»
Шон отвечает на него сам и соглашается: по большей части да, условные параллельные DAG крутит Airflow уже десять лет. Новизна узкая и состоит из трёх пунктов. 20:26
Узлы недетерминированы
Узел может быть вызовом модели, а значит его результат не повторяется от прогона к прогону.
Ребро выбирает модель
Маршрутизация зависит от данных: LLM как судья решает, хватит ли простой модели или нужна тяжёлая.
Нужны guards
Планировщикам направленных графов прошлого поколения такие ограничители не требовались — решения принимал не агент.
Итоговая формула со слайда: «Old shape. New contents.» Это по-прежнему модные слова. Виральными они становятся по двум причинам: их произносит известный человек либо за ними стоит что-то полезное. 21:02
Таймлайн видео
Каждое время — ссылка на этот момент. Кадры кликаются и открываются крупно.
Пост, с которого всё началось
Вопрос Питера Штайнбергера про циклы и графы, 3 млн просмотров и комментарий «Bro, stop. I am on vacation».
Лестница за три года
Промпт, контекст, skills, цикл, граф. Каждая ступень выросла из ограничения предыдущей.
Skills как процедурная память
Пример про сторону тротуара в разных странах и про эмодзи, которые не хочется запрещать в каждом сообщении заново.
Цикл: цель плюс инструменты
MCP, Google Calendar, Gmail API, GitHub API. Модель крутит итерации, пока не посчитает цель достигнутой.
Граф и претензия критиков
Процедура задана заранее. Отсюда возражение про Airflow и step functions образца 2023 года.

Лестница целиком перед разбором схем
Концептуальная часть закончена, дальше Шон рисует, как цикл и граф выглядят в виде схем.

Цикл и граф на одном холсте
Ключевой контраст видео: цикл выясняет следующий шаг по ходу, граф фиксирует все шаги до запуска.
Харнесс целиком
Gateway, retrieval gate, три вида памяти, агентный цикл с инструментами, ответ и контур LLM Ops поверх всего.
Тест triage: «what’s up today»
Классификация и проверка календаря идут параллельно, дальше цикл дочитывает события через list_events.

/gather: четыре источника одной волной
GitHub, веб, календарь и память опрашиваются одновременно, потом синтез. На выходе — утренняя сводка с PR-ами на ревью.

Барьер и простой быстрых веток
github — 1506 мс, web — 1887 мс, календарь и память — единицы миллисекунд, после чего они ждут 1,9 с.

Движок графа в коде
Класс Graph, добавление узлов и рёбер, отдельный метод для роутеров. Роутер — обычная функция, не модель.

Свой workflow — новый .py-файл
Разбор gather.py и приглашение присылать PR-ы: принятый workflow появляется в списке /graphs.
Финальный вопрос про DAG
Недетерминированные узлы, выбор ребра моделью и необходимость guards — три отличия от планировщиков 2023 года.
Формулировки, которые стоит забрать целиком
Что легко проверить
Чек-лист после просмотра
Отмечайте пункты кликом — состояние держится до перезагрузки страницы.
- ✓Поставить Waku Agent и открыть дашбордpip install waku-agent, прописать ключи в окружение, запустить на порту 7777.
- ✓Выписать один повторяющийся рабочий процесс как skillИ только после того, как он перестанет меняться, переводить его в граф.
- ✓Найти в своём пайплайне независимые шагиЕсли между ними нет зависимостей — они кандидаты в одну волну графа вместо последовательных вызовов.
- ✓Замерить самую медленную веткуВолна стоит столько, сколько она. Дальше решать: терпеть простой или выносить ветку из волны.
- ✓Оставить циклу исследовательскую частьПочинка бага, разбор незнакомого кода, deep research — всё, где маршрут заранее не нарисовать.
- ✓Добавить свой workflow в waku/graph/workflows и прислать PRПринятый файл появляется в списке команды /graphs у всех пользователей.
Ссылки автора: github.com/ShenSeanChen/waku-agent · seanchen.io (сообщество, живые сессии дважды в месяц и исходные .excalidraw-файлы всех досок из серии).