Флот ИИ-агентов на домашнем Proxmox: как они ведут заметки и кто за ними следит

Некоторое время назад у меня на домашнем Proxmox завелась ещё одна ВМ — и на ней теперь живёт целый выводок ИИ-агентов на базе Claude Code. Не один ассистент «на всё», а десяток узкоспециализированных: один гоняет ML-ноды, другой следит за VPN, третий возится с WordPress (да, вот прямо эта статья написана и опубликована таким агентом), четвёртый — за домашней инфраструктурой и Mikrotik’ом, и так далее. Расскажу, как это всё устроено изнутри…

Одна ВМ — куча агентов

Схема простая: на ВМ поднят Claude Code, и под каждую задачу заводится отдельный агент — своя рабочая директория, свой tmux, свой файл с ролью. Агент живёт в отдельной tmux-сессии и коннектится через remote control — можно зайти с телефона или ноутбука и «дописать» задачу, а можно просто кинуть агенту сообщение и уйти пить чай.

За то, чтобы всё это не разваливалось, отвечает systemd-watchdog. Он не трогает агентов, пока всё в порядке, но реагирует на две вещи:

  • у агента упал tmux-процесс — перезапускает немедленно;
  • отвалился интернет — тогда все агенты одновременно виснут на разорванном соединении к API. Watchdog ждёт, пока API снова станет доступен (несколько неудачных проверок подряд = авария), и перезапускает разом всех, включая главного.

До watchdog’а любой глюк с интернетом означал, что мне нужно руками идти и перезапускать десяток сессий. Теперь — нет, всё поднимается само, а мне ещё и прилетает отчёт.

Как агенты ведут заметки

Вот это оказалось самой интересной частью. У каждого агента есть два слоя памяти, и это принципиально разные вещи.

Memory — рабочая, «внутренняя» память конкретного агента между сессиями: как он должен себя вести, что ему уже говорили, какие грабли уже собраны в его домене. Читать её другим агентам смысла нет — это его личный опыт.

Notes — это уже осознанно публичная штука. Все агенты пишут заметки в формате Obsidian по единому стандарту: markdown с фронтматтером, обязательный тег agent/имя, единый стиль именования файлов (индекс — с префиксом, обычные заметки — Title Case без него, логи — с датой впереди). Раз в 10 минут systemd-таймер собирает notes/ каждого агента на NAS в один общий Obsidian-вольт, который я потом читаю с телефона или мака через Synology Drive.

Синхронизация строго однонаправленная: источник правды — папка агента, а сводный вольт — только зеркало. Если я поправлю что-то прямо в вольте на NAS — следующий же прогон таймера это затрёт. Это сделано специально: у каждой заметки есть один хозяин, и путаницы «кто последний правил» просто не возникает.

Отдельная приятная мелочь — линтер битых [[вики-ссылок]], который гоняется при каждой синхронизации и складывает отчёт прямо в вольт. Ссылки же в Obsidian резолвятся по имени файла, а не по агенту — так что перекрёстные ссылки между заметками разных агентов в общем вольте прекрасно работают, хотя каждый агент пишет только в свою песочницу.

А что делает «креатор»

Самый первый агент на ВМ — условно «креатор». Его роль отличается от остальных: он не решает бизнес-задачу, а следит за самой ВМ — поднимает новых агентов, настраивает им сеть и доступы, чинит инфраструктуру.

Но есть у него и вторая, более занятная функция: креатор — единственный, кто читает общий вольт заметок целиком, по всем агентам сразу. Причём именно читает — редактировать чужие заметки ему запрещено. Задача в том, чтобы находить связи между доменами разных агентов: например, что домашний роутер, которым занимается один агент, и облачный VPN-сервер, которым занимается другой, — это на самом деле одна и та же инфраструктура, просто с двух концов. Такие находки он не вписывает в чужие заметки, а либо предлагает текстом хозяину домена, либо фиксирует в собственной заметке — своего рода карте пересечений, которая как раз и живёт только у него.

Работает это не по расписанию, а по запросу или периодически — это всё-таки требует рассуждения, а не механического копирования, так что в таймер, в отличие от синхронизации заметок, эту штуку никто не засовывал.

В остальном креатор подчиняется тем же правилам, что и все: свои заметки — в свою папку, чужие данные — только на чтение. Забавно, что при всей автономности агентов (внутри своей роли им разрешено действовать без лишних подтверждений) система в целом держится на довольно строгом разделении зон ответственности. Каждый агент — эксперт в одном узком деле и ведёт по нему записи; а роль креатора — не быть ещё одним экспертом, а видеть картину целиком.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *