Что такое M.A.V.E.N Teams
M.A.V.E.N Teams - это то, чем становится M.A.V.E.N, когда им пользуется больше одного человека. M.A.V.E.N - плоскость управления (control plane) вашим собственным парком агентов: каждый движок, каждое приложение - на вашей машине. В одиночку это работает и разваливается в момент, когда подключается второй человек, потому что ничто из этого не знает, кто что сделал, в каком порядке и на какой машине.
Teams отвечает на это одним решением, принятым один раз: всё, что происходит, - это событие, дописанное в хеш-связанный журнал и подписанное. Сообщение, патч, прогон CI, согласование, вход агента в комнату. Нет второго источника истины, который нужно сверять, и нет вопроса «кто это согласовал и когда», на который журнал не ответит спустя месяцы.
Это отдельный продукт на отдельном порту - ~/maven-teams, http://localhost:3400,
состояние в ~/.maven-teams - и работает он на Next.js 16, React 19 и Node 22.
Что внутри
Заголовок раздела «Что внутри»| Чат | Один чат для всех движков - то же объединение, которое M.A.V.E.N сделал в v6.14, минус OmniRoute. |
| Каналы | Комнаты, где люди и агенты работают вместе; сообщения, патчи, прогоны CI и согласования - в одной ленте. |
| AI Мастермайнд | ASK, DISCUSS и MoA, сохранённые отдельным приложением - совет, который вы созываете, а не комната, в которой живёте. |
| Hermes | Среда выполнения агентов со своими вкладками (агенты, рой, канбан, цели, …), повышенная до собственного пункта рейла. |
| Доска | Доска рабочего пространства, свёрнутая из журнала; карточку, отданную агенту, забирает та машина, которая может его запустить. |
| Git и ревью | Очередь патчей с CI, ревью и согласованием - слияние является решением с аудиторским следом. |
| Воркфлоу | Триггеры, шаги и гейты. То, чем Loop, Пайплайн и Канбан были под капотом. |
| Поиск | Полнотекстовый поиск по всему журналу - на английском, украинском и русском. |
| Журнал аудита | Реестр, обе колонки хешей показаны, чтобы цепочку можно было проверить глазами. |
| Settings → Relay | Какие машины в рабочем пространстве, какие доступны сейчас и как это соединено. |
| Local / Cloud | Где выполняется каждая возможность - решается для каждой отдельно. |
| Приложения Forge | Ad, D, G, M, N, P, R, S, SEO, VC и X - перенесены целиком. |
В рейле четыре группы - WORKSPACE, BUILD, FORGE, SYSTEM - и в нём нет ни агентов, ни моделей. Модели живут в Менеджере моделей, доступном с верхней панели; агенты живут внутри Hermes.
Четыре решения, из которых следует всё остальное
Заголовок раздела «Четыре решения, из которых следует всё остальное»1. Журнал - это истина, и это файл
Заголовок раздела «1. Журнал - это истина, и это файл»$MAVEN_STATE_DIR/events/log.jsonl - один JSON-объект на строку, дописывается, никогда
не переписывается. Каждая строка несёт SHA-256-хеш своего содержимого и хеш предыдущей
строки, а затем подпись Ed25519. Правка строки ломает все хеши после неё - видимо,
на экране аудита. tail -f по нему - живая лента рабочего
пространства; формат, который можно прочитать через cat, переживёт программу, которая его писала.
2. Kinds - целые числа, и они постоянны
Заголовок раздела «2. Kinds - целые числа, и они постоянны»У каждого события есть kind - 1001 сообщение, 2001 патч, 3001 создан канал.
Читатель, который не распознаёт kind, пропускает его, а не падает - именно это позволяет
трём машинам работать на трёх немного разных сборках. Kind никогда не перенумеровывается
и никогда не переиспользуется. Полосы несут смысл:
1000-1999 conversation - messages and what attaches to them2000-2999 work - patches, runs, approvals, decisions3000-3999 the workspace - channels, membership, agents4000-4999 the machine - alerts, health, updates9000-9999 ephemeral - presence and typing. NOT stored, NOT hashed, NOT audited.3. Одна цепочка на машину, и слияние - это дописывание
Заголовок раздела «3. Одна цепочка на машину, и слияние - это дописывание»Каждая машина ведёт собственную цепочку в собственном файле. Слияние - это: спросить у пира,
что он записал после последнего события, которое вы видели, проверить каждое по цепочке
и подписи, дописать. Два человека, открывавшие комнаты офлайн, сходятся при повторном
подключении без какого-либо разрешения конфликтов. Порядковый номер уникален только внутри
машины - всё, что на него опирается, опирается на (machine, seq). Pull, никогда не push.
4. Индекс - производный, и его можно выбросить
Заголовок раздела «4. Индекс - производный, и его можно выбросить»Плоский файл идеален для дописывания и бесполезен для запросов, поэтому есть индекс -
SQLite через node:sqlite с FTS5 - и он производный: удалите его, и он перестроится
из журнала, ничего не потеряв. Ни миграций, ни истории резервного копирования сложнее, чем
копирование двух файлов. Каналы, доски и прогоны воркфлоу сворачиваются из журнала одинаково,
поэтому сервер, убитый посреди прогона, не может оставить файл статуса с надписью «running».
- Установка - что и куда ставить, и где живут разговоры.
- Отличия от M.A.V.E.N - что перенесено, что свёрнуто, что осталось.