Rufler: Делаем из Claude Code автономный рой через один YAML-конфиг

от автора

Все началось пару месяцев назад, когда я всерьез увлекся темой автономных агентов. Если вы следите за индустрией, то наверняка слышали про ruflo — это мощнейший движок для оркестрации Claude Code. Он позволяет создавать настоящие «ульи» из агентов, которые сами пишут код, сами его проверяют и сами деплоят.

Но когда я попытался внедрить это в реальный проект, я столкнулся с суровой реальностью.

Предыстория: Командная строка превращается в лапшу

Представьте: вы хотите, чтобы один агент набросал архитектуру, второй написал код, а третий прогнал тесты. В ruflo это превращается в квест. Сначала ты инициализируешь демона, потом настраиваешь гибридную память, потом создаешь топологию роя, потом конфигурируешь автопилот…

К середине процесса мой history в терминале выглядел как древнее заклинание на латыни. А самое веселое начиналось, когда нужно было передать агентам задачу. Мне приходилось вручную склеивать огромные текстовые файлы с промптами, где я объяснял: «Ты — архитектор, он — кодер, не начинай, пока он не закончит».

Одна опечатка в bash-скрипте — и твой «рой» превращается в кучу запутавшихся агентов, которые жрут токены и ничего не делают. После третьего такого вечера я понял: мне нужен не просто оркестратор, мне нужен Docker Compose для ИИ.

Так появился Rufler.


Идея: Один YAML, чтобы править всеми

Я хотел, чтобы всё описание проекта, ролей и зависимостей лежало в одном месте. Чтобы можно было просто написать rufler run и уйти пить кофе, пока система сама разворачивает всю инфраструктуру ruflo под капотом.

Вот к чему я пришел в итоге. Теперь мой рабочий процесс выглядит так:

project:  name: fullstack-mcp-demo  description: |    Создание сервиса с бэкендом на Go и фронтендом на React.    Используем фигму для дизайна и кастомные скиллы для качества кода.# 1. Настройки памяти и «коллективного разума»memory:  backend: hybrid      # Смешиваем локальный контекст и долгосрочную память  namespace: project-x# 2. Прокачка агентов (Custom Skills)skills:                                                                                                                                    enabled: true                                                                                                             custom:                                                                         - npx skills add https://github.com/samber/cc-skills-golang --skill golang-error-handling    - npx skills add https://github.com/samber/cc-skills-golang --skill golang-code-style                    # 3. Конфигурация роя (Swarm)swarm:  topology: hierarchical # Лид-агент раздает команды, остальные исполняют  max_agents: 6  strategy: specialized  # Каждый агент занимается строго своим делом  consensus: raft         # Механизм принятия решений внутри роя# 4. Самое вкусное: Авто-декомпозиция задачиtask:  multi: true            # Разрешаем несколько подзадач  decompose: true        # Включаем ИИ-планировщик (Claude сам разобьет цель на шаги)  decompose_count: 5     # На сколько этапов делить проект  run_mode: sequential   # Выполняем строго по порядку (сначала архитектура, потом код)  autonomous: true       # Полная автономия  main: |    Разработай сервис сокращения ссылок.     Бэкенд: Go (Echo), хранение в PostgreSQL.     Фронтенд: React + Tailwind.     Важно: Подключись к Figma (ID макета в конфиге), возьми оттуда стили и сделай     дизайн максимально адаптивным.# 5. Режим «Не беспокоить»execution:  non_interactive: true  # Не спрашивать подтверждения на каждый чих  yolo: true             # Да, я доверяю агенту выполнять команды в терминале  background: true       # Запустить и забыть (мониторим через rufler follow)# 6. Команда профессионаловagents:  - name: architect    type: system-architect    seniority: lead      # Самый главный, его решения — закон    prompt: Проектируй API и структуру БД.  - name: coder    type: coder    seniority: senior    prompt: Пиши логику на Go и React компоненты.  - name: designer    type: coder # Используем кодера с навыками дизайнера    role: specialist    prompt: Ты — Senior UI/UX. Твоя задача — сделать конфетку по макетам из Figma.  - name: tester    type: tester    prompt: Пиши тесты (Testcontainers для БД).# 7. Внешние инструменты (MCP)mcp:  servers:    - name: figma      command: npx      args: ["-y", "figma-developer-mcp", "--figma-api-key=YOUR_KEY", "--stdio"]

Что Rufler делает за меня (и за вас)

1. Автоматическая сборка «мозгов»

Больше не нужно руками писать objective prompt. Rufler берет ваш YAML, смотрит на дерево зависимостей (depends_on) и сам генерирует инструкции для агентов. Он объясняет им, кто за кем стоит и в какой момент передавать эстафету.

2. Кнопка «Пауза» и «Продолжить»

Если у вас упал интернет или вы сами решили остановить процесс, Rufler запоминает, на какой задаче он остановился. Когда вы снова введете rufler run, он не будет переделывать то, что уже готово. Он просто скажет: «Ок, задачи 1 и 2 приняты, погнали делать третью». Экономия токенов и нервов — колоссальная.

3. Человеческий мониторинг

Смотреть в сырые логи ruflo — это как читать матрицу. В Rufler я добавил TUI-дашборд (rufler follow). Это такая красивая панель в терминале, где в реальном времени видно:

  • О чем агент «думает» прямо сейчас.

  • Какой инструмент он вызвал (запись файла, поиск и т.д.).

  • Сколько баксов/токенов мы уже потратили.

5. Менеджмент задач и прозрачность (Task Registry) Rufler ведет себя как взрослый планировщик задач. Каждый запуск и каждая подзадача регистрируются в локальной базе. Это дает вам полный контроль над тем, что происходит в «черном ящике» ИИ:

  • rufler ps — показывает список всех запущенных и завершенных сессий (как в Docker).

  • rufler tasks — выводит детальную таблицу: какая задача сейчас в статусе running, какая queued, а какая failed.

  • rufler tokens — позволяет увидеть четкий отчет по токенам в разрезе каждой задачи, чтобы понять, какой этап «сожрал» бюджет. Больше не нужно гадать, чем занят ваш рой — вы видите жизненный цикл каждой задачи от создания до финального коммита.

4. Менеджмент MCP серверов

Если проекту нужны специфические инструменты (доступ к БД, браузер, специфические API), вы просто описываете их в том же YAML. Rufler сам «подружит» их с Claude Code перед запуском.


Для кого это?

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

Как попробовать:

Я выложил проект в опенсорс, так что залетайте, пробуйте.

git clone https://github.com/lib4u/rufler.gitcd rufler && pip install -e .rufler initrufler run

GitHub: github.com/lib4u/rufler

Буду рад фидбеку и идеям.

ссылка на оригинал статьи https://habr.com/ru/articles/1023958/