Доска и воркфлоу
Доска команды, по адресу /kanban, нигде не хранится: это журнал событий, сгруппированный.
Одна машина пишет карточку - и она есть у каждой машины, без какой-либо синхронизации базы
данных; именно поэтому она существует отдельно от собственного канбана Hermes (который -
SQLite-файл, хранимый CLI Hermes на одной машине).
Четыре колонки, и карточка переходит, называя колонку, в которую переходит, а не перетаскиванием - одно событие с именем в журнале вместо потока координат.
Карточку можно отдать машине или агенту. Отдайте её агенту - и та машина, которая действительно может запустить этого агента, забирает карточку, делает работу, публикует результат комментарием и переносит её в REVIEW - на ревью, а не в «готово»: агент, закончивший задачу, - это то, на что надо посмотреть, а не то, чему надо верить. Побеждает самая ранняя заявка, при равенстве - по имени машины, вычисляется одинаково везде из одних и тех же событий - ни выборов, ни координатора. Без заявки каждая машина, способная запустить Claude, выполнила бы одну и ту же карточку, и одна задача вернулась бы с четырьмя счетами.
Агент также может действовать: написать сообщение в комнату, открыть карточку, передвинуть её. Ничего, что запускает команду или трогает файл, - для этого у агента уже есть целая машина. «Никто» - полноценный исполнитель.
Воркфлоу
Заголовок раздела «Воркфлоу»Воркфлоу, по адресу /workflows, - упорядоченный список шагов, часть из которых
останавливается и ждёт человека. Это то, чем Loop, Пайплайн и Канбан были под капотом -
три пункта боковой панели, делающие одно дело на трёх словарях.
| Было | Стало |
|---|---|
| Цикл Loop | Шаг с onFail, указывающим на более ранний шаг, и ограничением на повторы |
| Гейт Пайплайна | Шаг gate |
| Колонка Канбана | Текущий шаг прогона |
| Карточка Канбана, назначенная агенту | Шаг agent |
Виды шагов
Заголовок раздела «Виды шагов»- shell - выполняет команду от имени того, кто запускает сервер, с теми же полномочиями, которые уже есть у агентов. Прочитайте воркфлоу перед включением - как прочитали бы скрипт.
- agent - записывает промпт, который подхватит агент. Не блокирует.
- gate - останавливает прогон и спрашивает человека. Approve - продолжить; reject - завершить.
- note - записывает строку и идёт дальше.
Повторы, с ограничением
Заголовок раздела «Повторы, с ограничением»Любой шаг, кроме гейта, может назвать шаг, к которому вернуться при сбое, и максимальное число раз - по умолчанию три. Ограничение не опционально: цикл «собрать - оценить - починить» без ограничения - это авария, а не функция.
Триггеры
Заголовок раздела «Триггеры»- Manual - кнопка.
- Schedule - интервал в минутах (cron - это язык, и ничему здесь он не нужен). В первый раз срабатывает немедленно, потому что оператор, который что-то включил и час ничего не видит, решает, что оно сломано.
- Event - один раз на каждое новое событие выбранного kind: падение CI, приземление патча. При первом включении действует только на самое новое событие, так что включение не прогонит его по году истории.
То, что уже сработало, хранится на диске, поэтому перезапуск не перезапускает всё заново. Гейты сидят вверху экрана: гейт прямо сейчас блокирует чью-то работу.
У прогона нет собственного состояния
Заголовок раздела «У прогона нет собственного состояния»Он свёрнут из журнала, поэтому сервер, убитый посреди прогона, не может навсегда оставить файл статуса с надписью «running» - а на вопрос «кто это согласовал и когда» можно ответить спустя месяцы, потому что согласование - подписанное событие с пометкой.
Миграция с M.A.V.E.N
Заголовок раздела «Миграция с M.A.V.E.N»Существующее состояние Loop, Пайплайна и Канбана не конвертируется - те доски были черновым пространством каждой машины, и конвертеру пришлось бы выдумывать историю, которой в журнале никогда не было. Пересоздайте те, что вам ещё нужны, как определения воркфлоу; это занимает минуту на каждый.