Автономный агент на чистом Bash с непрерывным потоком мыслей

27 авг 2026
847
69
1
1 неделя

Большинство ИИ-агентов работают по принципу торгового автомата: бросил монетку-промпт, получил ответ, процесс завершился. Контекст сбрасывается или сохраняется в базу до следующего вызова. А что если агент никогда не засыпает, постоянно обдумывает задачи в фоновом режиме, а сообщения от людей воспринимает просто как очередные наблюдения во внешнем мире?

Именно так устроен Headlong — микрокаркас (microharness) для создания постоянных агентов, ядро которого написано целиком на Bash и укладывается примерно в 10 тысяч строк кода. Никакого Python, никаких тяжелых фреймворков. Только bash, curl, jq, Docker и стандартные утилиты Unix.

В чем идея постоянного агента

В традиционных архитектурах пользователь инициирует диалог. В Headlong агент непрерывно крутит цикл генерации мыслей. Он формулирует гипотезы, ставит себе фоновые задачи, читает файлы и выполняет команды.

Когда коллега пишет агенту в Slack, Telegram или локальный чат, входящее сообщение не создает отдельную изолированную сессию. Оно попадает в общий поток мыслей агента. Агент сам решает, ответить прямо сейчас, продолжить текущую задачу или объединить двух людей, если они задают смежные вопросы по кодовой базе.

У всей команды получается один общий собеседник с единой памятью. Если вы рассказали агенту о баге в приватном чате, он вполне может упомянуть это в обсуждении с другим разработчиком. Это похоже на живого коллегу в общем офисе, а не на изолированный сервис с сессиями.

Реклама

Как устроен разум из shell-скриптов

В основе проекта лежит концепция рекурсивных языковых моделей (RLM). Вместо сложных протоколов вызова инструментов и прослоек сериализации, агент думает на языке командной строки:

  1. Модель получает текущий контекст.
  2. В качестве действия она генерирует обычные bash-команды.
  3. Инструмент shellm выполняет эти команды внутри песочницы Docker.
  4. Вывод stdout и stderr возвращается модели как результат действия.

Вся система собрана по философии Кена Томпсона: набор маленьких утилит, каждая из которых решает одну задачу и соединяется с остальными через пайпы и файлы.

+-----------+       bash       +----------------+
|           | -------------->  | shellm / Docker |
|    LLM    |                  +----------------+
| (thinkers)| <--------------          |
+-----------+    stdout/stderr         v
      ^                          +-----------+
      |                          |   traj    | (DAG в jsonl)
      +------------------------- +-----------+
              context (сжатие)

В каталоге bin/ лежит несколько самостоятельных инструментов:

  • shellm — исполнительное ядро, которое связывает вызовы LLM и выполнение bash-скриптов.
  • llm — CLI-обертка над API Anthropic, OpenAI, Gemini и OpenRouter с единым интерфейсом.
  • traj — хранилище истории действий в виде направленного ациклического графа (DAG) из jsonl-файлов с поддержкой веток и слияний.
  • context — сборщик контекста для LLM, который динамически сжимает историю.
  • mem и skills — хранилище долговременной памяти и переиспользуемых навыков в markdown-файлах.

Работа с памятью и ветвлением

Самая большая проблема бесконечно работающего агента — переполнение контекстного окна. В Headlong применили ступенчатое сжатие (tiered compaction).

История действий агента никогда не перезаписывается на месте. Она сохраняется в DAG. Недавние события передаются модели дословно, а старые шаги постепенно суммаризируются. При этом сжатые уровни работают как оглавление: если агенту нужны детали пятидневной давности, он находит нужный узел графа и считывает сырые логи командой через traj.

Еще интереснее устроена работа с под-агентами. Когда задача требует изоляции, агент порождает дочерний процесс. Дочерний агент видит дерево рассуждений родителя: почему его создали, какие попытки провалились и чего от него ждут.

Агент даже может улучшать собственный исходный код. Он делает git fork репозитория Headlong, вносит правку в bash-скрипты, запускает тесты и, если все работает, готовит коммит. Разработчики из института Laude утверждают, что влили в основной репозиторий больше полусотни коммитов, написанных их собственным запущенным инстансом.

Быстрый старт и интерфейс

Установка выполняется одной командой:

curl -fsSL https://headlong.ai/install.sh | bash

Скрипт проверяет наличие bash 3.2+, git, curl, jq, предлагает выбрать провайдера LLM и настроить Docker-песочницу. Для работы веб-дашборда также понадобятся uv и Node.js (или Bun).

После инициализации имя агента становится командой в вашей системе:

# Отправить реплику и дождаться ответа
ada привет, над чем сейчас работаешь?

# Запустить интерактивный чат
ada

# Открыть веб-дашборд с визуализацией потока мыслей
ada dash

# Приостановить или возобновить работу
ada stop
ada start

Если агент ушел в неконтролируемый цикл или делает что-то странное, предусмотрена общая кнопка остановки: headlong-killall.

О чем стоит помнить перед запуском

Headlong — это экспериментальный исследовательский софт, и здесь есть нюансы, о которых нужно знать заранее.

Во-первых, расходы на API. Поскольку агент думает непрерывно, он постоянно тратит токены. В коде заложен экспоненциальный спад частоты циклов, когда с агентом никто не общается, но при активной работе на мощных моделях расходы составляют от $1 до $2 в час. Настоятельно рекомендую использовать отдельный API-ключ с жесткими лимитами расходов.

Во-вторых, безопасность. Агент выполняет произвольный код. Установщик по умолчанию настраивает запуск команд внутри изолированного контейнера Docker, и отключать эту изоляцию на рабочей машине точно не стоит.

Итоги

Проект понравится тем, кто устал от сотен слоев абстракций вокруг простых вызовов LLM. Headlong показывает, что полноценного агента с памятью, ветвлением задач и веб-интерфейсом можно построить на базовых утилитах Unix и лаконичном Bash.

Если вы исследуете автономных агентов или ищете необычного ассистента для командного чата, развернуть Headlong в Docker на отдельной виртуалке — отличный эксперимент на выходные.

🍪 Мы используем файлы cookie и сервис аналитики Яндекс.Метрика, чтобы сайт работал лучше. Продолжая пользоваться devtrends.ru, вы соглашаетесь с обработкой данных согласно Политике конфиденциальности.