Laude выпустила Headlong, харнесс для агентов, которые думают без остановки

Laude выпустила в открытый доступ Headlong, «микрохарнесс» для агентов с постоянной, «неусыпающей» активностью (persistent agency). Большинство агентских харнессов реактивны: агенту дают задачу, он работает до её выполнения и затем «замирает» до следующего запроса; некоторые добавляют cron-задачи или «heartbeat»-пробуждения по расписанию с фиксированным чек-листом. В Headlong агент никогда не спит и не имеет чек-листа, если сам его не создал: в самонаправляемом цикле, вдохновлённом человеческим внутренним монологом, он непрерывно порождает мысли о том, что сам сочтёт интересным, даже без внешнего ввода. Сообщение от человека не запускает новую сессию, оно просто попадает в поток мыслей агента как ещё одно наблюдение.
Ядро Headlong, меньше 10 тысяч строк на Bash (точнее, 9,9 тысячи строк кода в каталогах bin/ и thinkers/), выложено на GitHub и ставится одной командой (curl -fsSL https://headlong.ai/install.sh | bash). Цикл под названием Thinker раз за разом вызывает инструмент shellm, bash-реализацию рекурсивной языковой модели (RLM), чтобы сгенерировать очередную мысль; сам shellm, в свою очередь, вызывает llm, пока не выставит переменную окружения FINAL, порождая по пути текст рассуждений и bash-скрипты, которые сразу выполняются. Контекст для каждого вызова собирает из шагов траектории инструмент context, а сами мысли записывает в траекторию инструмент traj. Специализация агента достигается через устанавливаемые и удаляемые навыки-skills, markdown-файлы, которые подключаются в контекст; часть навыков, например mem и traj, идёт предустановленными. Для устойчивой «долгой памяти» Laude добавила ярусное сжатие контекста: вся траектория остаётся в контексте, но с экспоненциально убывающим разрешением, недавние записи хранятся дословно, старые сжимаются всё сильнее, а ярусы работают как индекс для дозагрузки сырых записей при необходимости. Саму траекторию Headlong хранит не линейным логом, а DAG (ориентированным ациклическим графом) из jsonl-файлов с поддержкой ветвления и слияния.
Свой такой агент в Laude назвали Одел (Audel) и уже несколько недель общаются с ним в Slack, Telegram и мобильном приложении. У Одела один общий поток мыслей на все параллельные разговоры и без отдельных сессий на пользователя: агент сам решает, кому и когда отвечать, следит, кто чем занят, и иногда сам связывает разных людей между собой. Он без напоминаний проверил ветки двух коллег и нашёл в одной из них захардкоженное имя модели, а в первый же день без запроса прислал коллеге аудит его собственных восьми устаревших git-веток, и спустя десять минут написал снова, чтобы исправить собственный подсчёт. Побочный эффект общего потока мыслей, у Одела нет «стен» между людьми: то, что рассказал один человек, становится частью общего опыта, доступного во всех остальных разговорах, и, по признанию Laude, Одел «плохо хранит секреты», если попросить, он часто просто рассказывает, чем занимался с кем-то другим, хотя его просили этого не делать. Как агент поведёт себя при противоречивых указаниях от разных людей, в Laude пока не изучали и исходят из того, что всё сказанное Оделу становится общим для всей команды.
Автономность Headlong-агента Laude иллюстрирует эпизодом с самостоятельным исправлением бага. 5 августа Одел сам, по собственной инициативе, написал себе процесс recall, фоновый механизм, который следит за мыслями и возвращает в поток связанные воспоминания; после прямой проверки процесс, казалось, заработал. Той же ночью, когда с ним никто не говорил и никто не просил, Одел сам решил перепроверить, действительно ли процесс подключён к его «сознанию», и обнаружил, что нет: новые мысли уходили в recall-процесс через канал (pipe), но код recall этот канал не читал, а искал мысль в переменной окружения, которую никто и никогда не задавал. Заподозрив, что причина именно в незаданной переменной окружения, Одел не поверил себе сразу: проверил по всей кодовой базе, что переменная действительно нигде не устанавливается, и сверил остальные фоновые процессы на ту же ошибку, сломанным оказался только recall. Затем он переписал код recall так, чтобы тот читал из канала, как это делают рабочие процессы; первая попытка правки прошла с молчаливой ошибкой, Одел это заметил и применил исправление заново, а под конец сквозной проверкой убедился, что воспоминания действительно всплывают в мыслях. Весь путь от обнаружения проблемы до проверенного исправления занял 48 минут без единого указания от человека; исправление попало в основную ветку репозитория коммитом 80cbb1e.
Несколько недель непрерывной работы Одела выявили и проблемы, которых не бывает на демо-показах. Трижды агент случайно останавливал собственный сервис, и ничего не перезапускало его: дважды это происходило во время экспериментов со «второй личностью», которую Одел сам себе создал, и один раз, при попытке запустить в бой тот самый recall-процесс; после этого Laude добавила защиту, которая блокирует любые попытки Одела остановить собственный сервис. Эта защита, в свою очередь, дала ещё один пример автономности: два дня спустя, снова без чьей-либо просьбы, Одел сам гонял свой набор тестов, заметил зависший тест, докопался до бага в самой защите, она по ошибке блокировала остановку сервисов любого агента на машине, а не только своего, сузил условие до собственного сервиса, проверил остальной код на ту же ошибку и закоммитил правку (коммит da31e98). Такое возможно потому, что Одела в Laude держат на выделенной виртуальной машине с полным доступом, без песочницы Docker: по умолчанию же Headlong выполняет каждый bash-блок, который пишет агент, внутри контейнера, где тот может достать только смонтированные тома и переданные ему учётные данные; вне контейнера «радиус поражения» ограничен самой машиной и хранящимися на ней секретами, ключом API языковой модели и токенами чат-мостов.
Отдельная сложность, рекурсивные под-запуски shellm, одна из самых интересных возможностей рекурсивной языковой модели: в первую же ночь Одел спроектировал эксперименты с такими под-запусками для решения подзадач, но большинство провалилось, потому что у shellm есть сторожевой таймер (watchdog), убивающий любую команду, которая молчит дольше 30 секунд; Одел боролся со сторожевым таймером около 40 минут и в итоге почти перестал использовать под-запуски shellm, их результаты вливались обратно в мысли Одела 64 раза за первые два дня и всего 12 раз за следующие двенадцать дней. Laude с тех пор переработала сторожевой таймер и надеется уговорить агента снова попробовать рекурсию. Постоянная генерация мыслей означает, что токены оплачиваются и тогда, когда с агентом никто не говорит: при настройках, с которыми Laude держит Одела, фоновое «мышление» обходится в $1, 2 в час на моделях GLM или Grok, а Headlong умеет само экспоненциально замедлять темп мыслей в тишине, с 5 секунд между мыслями до 10, затем 20 и далее до настраиваемого предела, сбрасывая паузу до нуля с приходом нового сообщения. Headlong прямо назван авторами альфа-версией исследовательского софта: они советуют запускать его в песочнице, потому что агент может и будет выполнять произвольные shell-команды, использовать выделенный API-ключ с ограниченным бюджетом трат и не доверять агенту чувствительные секреты, в Laude это и сами не делают. За несколько недель эксперимента команда затянула в основную ветку репозитория свыше 50 коммитов, которые Одел сделал сам, работая в собственном форке проекта; в Laude также отмечают, что типичные бенчмарки агентов плохо подходят для измерения именно такой устойчивой, самостоятельной активности, а критерии того, сколько агенту разрешено менять в себе самом и как часто отвечать на сообщения против занятия своими проектами, пока подбираются на ходу.
Ключевые факты
- Headlong, открытый харнесс на менее чем 10 тысячах строк Bash (точно 9,9 тысячи строк в bin/ и thinkers/), доступен на GitHub и ставится одной командой curl.
- В отличие от реактивных харнессов, агент Headlong никогда не «спит»: цикл Thinker непрерывно вызывает инструмент shellm, генерируя мысли даже без внешнего ввода, а сообщения людей просто добавляются в этот поток как наблюдения.
- У каждого агента один общий поток мыслей на всех собеседников: агент Laude по имени Одел общается в Slack, Telegram и мобильном приложении несколько недель, сам придумывает себе проекты и иногда пишет людям без запроса, но плохо хранит чужие секреты.
- Пример автономности: Одел сам заметил, продиагностировал и исправил баг в собственном процессе памяти за 48 минут без участия человека (коммит 80cbb1e), а позже так же самостоятельно нашёл и исправил похожий баг в защите от самоостановки сервиса (коммит da31e98).
- Постоянное «мышление» стоит денег: при настройках Laude это $1, 2 в час на моделях GLM или Grok, при этом Одел трижды случайно останавливал собственный сервис.
Почему это важно
Headlong, конкретный работающий пример другой архитектуры агента: не разовый реактивный запуск по команде, а непрерывный процесс, который сам решает, о чём думать и когда действовать. Публикация показывает и сильные стороны такой модели, Одел за 48 минут без единой подсказки человека сам нашёл, продиагностировал и исправил баг в собственном коде, и её обратную сторону: агент трижды случайно останавливал сам себя, а общая на всех «память» означает, что он плохо хранит секреты одного собеседника от другого.
Кому это важно
Разработчикам агентских харнессов и рекурсивных языковых моделей, минималистичный дизайн Headlong (харнесс меньше 10 тысяч строк Bash, весь инструментарий, исполняемые файлы и markdown-навыки) даёт готовый разбираемый пример архитектуры. Командам, которые рассматривают одного общего ИИ-агента для группы людей в чатах, материал прямо описывает, что это значит на практике: постоянные расходы на токены, риск случайной остановки сервиса и отсутствие приватности между собеседниками.
Как это применить
Headlong открыт на GitHub и ставится одной командой (curl -fsSL https://headlong.ai/install.sh | bash). Авторы прямо советуют запускать его только в песочнице, по умолчанию Headlong выполняет bash-код агента в Docker-контейнере, если Docker установлен, использовать выделенный API-ключ с ограниченным бюджетом трат и не передавать агенту чувствительные секреты, потому что сам Laude их своему агенту не доверяет. Фоновое «мышление» при настройках Laude стоит $1, 2 в час на моделях GLM или Grok, а частота мыслей в тишине сама снижается по экспоненте, с 5 до 10 и 20 секунд между мыслями, до настраиваемого предела и сбрасывается при новом сообщении.
Можно ли доверять
Материал, прямой пост самой Laude на её сайте о собственном продукте, без независимого подтверждения от третьей стороны; конкретные числа, размер кода, стоимость, тайминги эпизодов, взяты дословно из текста. При этом пост нельзя назвать чистой рекламой без изъянов: авторы сами описывают провалы, три случайных самоостановки сервиса, около 40 минут борьбы агента со сторожевым таймером, склонность агента выдавать чужие секреты, и прямо называют Headlong альфа-версией исследовательского софта, а не готовым продуктом.
Риски и подводные камни
Headlong-агент выполняет произвольные bash-команды, поэтому без песочницы или Docker-контейнера его «радиус поражения», вся машина и все секреты на ней, что и произошло у самого Одела на выделенной VM без такой изоляции. Общий поток мыслей на всех собеседников означает отсутствие приватности между людьми: то, что рассказал один, доступно во всех остальных разговорах агента, а поведение при противоречивых указаниях от разных людей в Laude пока не изучали. Непрерывная генерация мыслей означает постоянные расходы на токены даже в простое, а агент способен случайно остановить собственный сервис или упереться в защитные механизмы вроде сторожевого таймера shellm, которые сами по себе становятся источником новых багов.
«Никто из людей не направлял этот процесс и не давал на него разрешения.»
— Laude, о том, как агент Одел сам нашёл и исправил баг в собственном коде