Пять агентов ведут разработку четырёх проектов: board, CadLink, RRS и само ядро. Каждый живёт в своём контейнере на сервере 178.104.104.64.
Разработчик берёт задачу из очереди Linear, заводит ветку, правит код, открывает заявку, дожидается автомержа и выкатывает на стенд. Потом переводит задачу в проверку — тому, кто её создал.
Аналитик работает до разработчика: берёт задачу из бэклога, задаёт постановщику вопросы одним комментарием, дожидается ответа и только после подтверждения оформляет задание. Сейчас есть у board и разбирает задачи Саши.
Приёмщик работает после: проверяет на стенде, что задача действительно решена, а не что выкатка прошла. Был у RRS отдельной службой, переносится в ядро.
| Что | Где |
|---|---|
| Настройки агентов | /etc/devbot/<проект>.yaml |
| Секреты | /etc/devbot/<проект>-secrets.env |
| Состояние: очереди, счётчики | /var/lib/devbot/<проект>/ |
| Рабочие копии проектов | /home/bot/projects/ |
| Запуск контейнеров | /home/bot/devsystem/docker-compose.yml |
Из консоли — agentctl:
agentctl status кто на какой версии, занят ли
agentctl update v0.23.0 обновить всех
agentctl update v0.23.0 rrs обновить одного
agentctl rollback board откатить к прежней версии
Обновлять только через agentctl. Обычный docker compose up подставит запасную версию из настроек и откатит агента назад — так уже случалось дважды.
Из Telegram — кнопки в чате с каждым агентом: очередь, запустить верхнюю, автоочередь, стенд. У агента ядра есть ещё обновление соседей. Личные чаты с ботами работают так же, как темы в группе.
Агент ядра себя не обновляет. Обновление оборвало бы его посреди работы, а негодную версию нечем было бы чинить. Поэтому в списке для выкатки его нет, а сам он выкатку не делает вовсе — задача считается сделанной, когда заявка смержена.
Живость claude проверяется настоящим запросом, а не показом версии. 13 сентября негодная сборка исправно печатала версию и падала на всём остальном — на поиск причины ушла ночь.
При необъяснимом падении инструмента первым делом перекачать образ. Испорченный при скачивании файл выглядит как ошибка в коде и уводит поиск совсем не туда.