00:00:00Ральф Виггам просто разрывает всё вокруг. В прошлом году мы выпустили об этом видео, и с тех пор
00:00:04в Твиттере только об этом и говорят. Мэтт Покок сделал кучу роликов на эту тему,
00:00:09Райан Карсон написал очень популярную статью, а Razmike дополнил всё это своим
00:00:13bash-скриптом Ralphie. Но что, если все делают это неправильно? Создатель уже заявил,
00:00:19что некоторые реализации некорректны.
00:00:21Так как же делать правильно? И почему Ralph сейчас — это лучший способ создавать ПО
00:00:26с помощью ИИ? Подписывайтесь, и давайте разбираться.
00:00:30Цикл Ralph (Ralph loop) был создан Джеффом Хантли, и он писал о нем еще в июне прошлого года.
00:00:35По сути, это bash-цикл, который снова и снова скармливает ИИ-агенту один и тот же запрос.
00:00:40Но это гениально сразу по нескольким причинам, ведь так агент работает в самом «умном»
00:00:46режиме — когда у него минимум контекста. Посмотрите на это.
00:00:51Представим, что это всё окно контекста агента. От 0 до примерно 30% —
00:00:57это так называемая «умная зона», где агент работает лучше всего. От
00:01:0130 до 60% он всё еще справляется отлично. А начиная с 60% — то есть 60, 70, 80, 90 —
00:01:08результаты начинают деградировать. Назовем это «зоной тупости». Эти цифры не высечены
00:01:12в камне и меняются от модели к модели. Для кого-то умная зона может быть и 40–50%,
00:01:16но обычно после 80% заполнения окна контекста начинается та самая тупость.
00:01:21Например, для Claude Sonnet или Opus типичное окно контекста — 200 000 токенов. Можно
00:01:28сказать, что первые 60к — это умная зона. Следующие 60к всё еще ничего, но уже хуже первых.
00:01:33А последние 80к токенов работают заметно слабее. Опять же, это мой личный
00:01:38опыт работы с данной моделью, у вас он может быть другим. Причина в том,
00:01:43что сама модель является авторегрессионной — ей нужно смотреть на
00:01:47предыдущие токены, чтобы предсказать следующий. И если токенов слишком много, ей
00:01:52приходится перебирать огромный массив данных, чтобы найти важные детали для текущей задачи.
00:01:56Давайте сфокусируемся на первых 30%. Еще до вашего первого промпта
00:02:01в окно контекста автоматически добавляется ряд вещей. Сначала системный промпт,
00:02:06затем системные инструменты. В типичной модели Claude это занимает 8,3% и 1,4% контекста.
00:02:12То есть почти 10% из этих 30. Еще могут добавиться «навыки» (skills),
00:02:16а также кастомные инструменты MCP. Наконец, файл agent.md тоже идет туда.
00:02:21И чем больше любой из этих элементов (например, файл .md), тем больше
00:02:25токенов он съедает. И всё это происходит еще до того, как вы написали свой запрос. Поэтому
00:02:30лучше держать этот раздел максимально компактным: меньше инструментов,
00:02:35меньше навыков и лаконичный agent.md, чтобы модель работала в своем
00:02:40оптимальном состоянии. Чтобы вы понимали, 60к токенов — это примерно
00:02:44весь сценарий фильма «Звездные войны: Новая надежда» (около 54к в GPT-5).
00:02:51Вы спросите: а как же сжатие (compaction)? Разве оно не помогает? Об этом
00:02:56мы поговорим чуть позже. А сейчас перейдем к тому, как именно Ralph решает проблему.
00:03:00Преимущество Ralph в том, что вы фокусируетесь на одной цели за одно окно контекста.
00:03:05Все 200к токенов мы выделяем под одну цель или задачу. Для этого
00:03:10мы пишем промпт, который первым делом изучает файл plan.md. В нем
00:03:15прописаны задачи: создать фронтенд, создать бэкенд, настроить базу данных
00:03:19и так далее. Это очень упрощенный пример. В реальности Ralph требует
00:03:23большей детализации, но для примера сойдет. Итак, этот промпт
00:03:28велит агенту выбрать самую важную задачу и внести изменения. После этого
00:03:33нужно запустить код, сделать коммит, пуш и прогнать тесты.
00:03:38Когда тесты пройдены, агент отмечает задачу как выполненную в
00:03:42файле plan.md и повторяет цикл. Он будет искать следующую важную
00:03:46задачу, пока не закроет весь список. Хотя, я возьму свои слова назад,
00:03:52потому что цикл Ralph можно крутить бесконечно, даже если все задачи выполнены.
00:03:57Плюс в том, что агент может найти баги или придумать фичи,
00:04:02которых не было в плане. А если он начнет «галлюцинировать» или творить дичь,
00:04:08вы можете в любой момент остановить процесс, поправить prompt.md и запустить всё заново.
00:04:12С Ralph это элементарно, потому что весь процесс выполняется в одном bash-цикле while.
00:04:16Тут он просто выводит содержимое prompt.md через cat (то есть передает его агенту)
00:04:22и запускает Claude в режиме «YOLO». Конечно, флаг называется не YOLO,
00:04:26а «dangerously skip permissions», но для краткости я написал так.
00:04:31Особенность Ralph в том, что он находится вне контроля модели. Модель
00:04:36не может сама его остановить. Она просто продолжает работу. И это гарантирует,
00:04:41что когда запускается новая задача или триггерится промпт, контекст
00:04:46остается таким же чистым, как при первом открытии агента. Никакого сжатия,
00:04:50никакого лишнего мусора. Каждая задача получает максимум чистого контекста,
00:04:55и модель всегда работает в оптимальном состоянии. К слову, сжатие (compaction) —
00:05:01это когда агент просматривает все написанные токены и выбирает то,
00:05:05 что кажется ему важным для следующего шага. Но он лишь предполагает,
00:05:11что важно, а что нет. Поэтому при сжатии можно потерять критическую информацию,
00:05:16и проект перестанет работать. Теперь, когда мы разобрали каноничную реализацию
00:05:21цикла от автора, становится ясно, чем отличаются другие подходы. Взглянем
00:05:27на вариант от Anthropic: там используется слэш-команда для запуска Ralph внутри
00:05:33кода Claude, есть лимит итераций и «обещание завершения». Проблема этого
00:05:38плагина «Ralph Wiggum» в том, что он сжимает данные при переходе к новой задаче.
00:05:43Вместо полной очистки окна контекста после завершения этапа,
00:05:48он упаковывает старую информацию, из-за чего могут потеряться важные детали.
00:05:54Также смущают лимиты итераций — иногда полезно просто
00:05:59дать Ralph волю. Он может найти интересные решения, о которых вы и не думали.
00:06:04А если вы при этом наблюдаете за процессом (human-in-the-loop), вы заметите
00:06:08паттерны поведения модели, которые можно подправить в исходном промпте.
00:06:14Если разобрать подход Райана Карсона, то он не совсем
00:06:19каноничный, потому что на каждом круге цикла есть возможность
00:06:24редактировать или дополнять файл agents.md. По моему опыту,
00:06:29модели по умолчанию бывают очень многословными. И если на каждой
00:06:33итерации вы раздуваете agents.md, который подгружается в начало каждого
00:06:39пользовательского запроса, вы просто забиваете окно контекста лишними токенами,
00:06:44толкая модель в ту самую «зону тупости». Но тот факт, что люди
00:06:48создают свои скрипты на базе простого bash-цикла Ralph, доказывает,
00:06:53насколько эта идея проста и понятна. И хотя есть «каноничный» Ralph,
00:06:57это нормально, когда разработчики и компании адаптируют его под себя.
00:07:03Например, мне нравится, что в скрипте Ralphie от RazMike можно
00:07:08запускать параллельные процессы Ralph и использовать браузерный инструмент
00:07:13агента для тестов. А в версии Мэтта Покока
00:07:18задачи добавляются как GitHub Issues. Цикл Ralph выбирает
00:07:23самую приоритетную, отрабатывает её и закрывает Issue перед переходом
00:07:28к следующей — это очень остроумно. Сила и простота Ralph
00:07:32означают, что он задержится надолго. Мы увидим еще много
00:07:37улучшений и итераций этой идеи. Мне нравится вектор развития Джеффри
00:07:42в его проекте Loom and Weaver — он хочет сделать разработку ПО автономной
00:07:47и безошибочной. Но когда столько «Ральфов» клепают софт автономно,
00:07:52нужен способ отслеживать ошибки и исправлять их. И тут на помощь приходит
00:07:56Better Stack: он умеет не только собирать логи и фильтровать ошибки,
00:08:01но и отслеживать баги на фронтенде. С помощью этого MCP-сервера
00:08:06вы можете попросить агента вытащить конкретные ошибки фронтенда или бэкенда
00:08:11вместо чтения всего лога целиком, что, в свою очередь, экономит контекст.
00:08:16Так что зацените Better Flux и делитесь мнением в комментариях.
00:08:17So go and check out Better Flux, and let me know what you think in the comments.