AI Council — self-hosted платформа для команды разработчиков. Она сама разбирает репозитории в граф кода: стек, структуру, зависимости и циклы, вызовы, данные, архитектуру, DDD, паттерны, стиль, смеллы и качество по ISO 25010. Над графом лежит база знаний проекта — решения, заметки, диаграммы и журналы изменений; каждая запись привязана к месту в коде и к ветке и приходит агенту, когда он трогает нужный файл. Отдельно живут конвенции: правила трёх областей — к сущностям кода, к путям и ко всему проекту — с уровнями MUST/SHOULD, состояниями и проверкой перед правкой и по диффу. Вокруг этого собраны ревью с публикацией в MR, тикеты, задачи и компании с ролями и лицензией. Статический анализ кода модель не использует, но без модели остаётся только он: ревью, ревью знаний, AI-чат и рабочие пространства идут через хостовый воркер, бридж и вендорский CLI/OAuth. Модель живёт на хосте, а не в стеке Council.
Работать с Council можно двумя способами. На машине разработчика Claude Code подключается к нему через MCP и хуки: правила проекта приходят к каждому сообщению, контекст файла — на Read/Edit/Bash, а в конце — чек-лист. В рабочем пространстве задача идёт на VM в изолированном sysbox-контейнере, живёт днями и ведётся человеком из веб-интерфейса: от анализа и диффа до коммита, push и MR.
ouroboros — локальная надстройка над агентом, который уже стоит у разработчика (Claude Code, Codex и др.). Ведёт цепочку «интервью → спецификация → выполнение с проверкой → оценка → эволюция». Своей модели нет. Python, около 351 тыс. строк, один пользователь, один файл SQLite.
| AI Council | Q00/ouroboros | |
|---|---|---|
| Кто читает код | Council сам: разбирает репозитории и строит граф. Модель при анализе не вызывается | Сам не читает. Код читает хост-агент, находки приходят в интервью ответами [from-code] |
| Когда | При создании проекта, при push в main (опрос), по кнопке, ночью. После каждой правки файла агентом (Write/Edit) пересчитываются файл и зависимые от него | — (только распознаёт существующий проект по git или конфигу) |
| Что извлекает | Слои L0–L10: стек и гайды по фреймворкам; структура; зависимости и циклы; метрики и граф вызовов; слой данных (ORM, DDL); стиль архитектуры и запрещённые зависимости; паттерны проектирования; стиль кода; DDD (bounded contexts через кластеризацию Leiden, агрегаты, события); связь файлов по совместным правкам в git; смеллы; качество по ISO 25010 и fitness-функции; диаграммы (C4, зависимости, слои) | — |
| Языки | Python, PHP, TypeScript, JavaScript, Java, Kotlin, C#, C, C++ | Любой, на котором пишет хост-агент |
| Несколько репозиториев | Да, общий граф на проект | Один каталог |
| Внешние анализаторы | SonarQube: забирает найденное. Свой сканер: текстовые языки, JVM со сборкой, .NET, .NET Framework на Windows-воркере | — |
| История архитектуры | Рёбра версионируются после каждого прогона; architecture_as_of показывает архитектуру на дату | Только история своих прогонов |
| Поиск | По смыслу; regex (grep_code); find_usages, find_path, граф зависимостей, похожие реализации. ask_question отвечает выдержками из базы, а не пересказом модели | Своего нет |
| AI Council | Q00/ouroboros | |
|---|---|---|
| База знаний | Решения, заметки, диаграммы Mermaid (синтаксис проверяется при записи), журналы изменений. Каждая запись привязана к коду и приходит агенту, когда он трогает нужный файл | Нет; журнал своих прогонов |
| Актуальность | Запись держит место в коде на своей ветке. Она уходит на перепроверку, если: изменился код под ней (по отпечатку AST); изменилась сама запись; появилась похожая; ветку слили. Ревьюер-модель (токен только на чтение) обязан привести дословную цитату из исходника. Итог — пометка «устарела», «расходится с кодом», «оспорена» или «заменена»; текст записи не трогается. Точность ревьюера замеряется на известных ответах. Включение, модели и дневной бюджет — в настройках проекта | — |
| Ветки | Знания и граф хранятся по веткам. Агент видит свою ветку, родителя и слитое в них. При слиянии запись переезжает. Граф ветки считается отдельным слоем рядом с основным | Отдельный worktree на задачу |
| Откуда знания | Пишут агенты и люди. Тикеты из трекера автоматически разбираются в записи-историю (так в базу ouroboros попали сотни записей из его 882 тикетов). Черновики из истории MR. Документы из Google Drive | Спецификации и итоги своих прогонов |
| Правила | Конвенции трёх видов: к сущностям кода; к путям (действуют и на ещё не созданный файл); ко всему проекту. Уровни MUST/SHOULD, состояния «черновик», «отставлено», «удалено», набор по умолчанию. Проверка перед правкой и по диффу | Нет |
| Как доходит до агента | Хуки Claude Code. К каждому сообщению пользователя по очереди подмешиваются правила проекта. Перед действием — широкий канал (около 200 тыс. символов). На каждый Read/Edit/Bash — контекст файла. В конце хода — чек-лист. Гейт «сначала база»: агент не открывает код, пока не спросил базу; снять гейт может только человек. Напоминание «об этом уже есть запись». Правило доставляется целиком или не доставляется | Ставит в агента свои skills и инструкции (как пользоваться самим ouroboros) |
| MCP | Около 60 инструментов; профили (minimal / dev / review / ops); режимы на сессию; незнакомый аргумент отвергается; ответы в XML с ограничением размера | Около 40 инструментов ouroboros_*; долгие операции — фоновыми заданиями |
| Перенос знаний | Экспорт и импорт пакетом, копирование между проектами | — |
| AI Council | Q00/ouroboros | |
|---|---|---|
| Требования | Трассировка тестов к требованиям по меткам: покрытие и разрывы; «без теста» — тристейт, а не requirements-менеджмент | Ядро продукта: интервью до неоднозначности ≤ 0.20 → неизменяемая спецификация со скрытыми проверками. Интервью менеджера продукта с выдачей PRD |
| Тикеты | Jira (Cloud/DC), GitHub Issues, Redmine: чтение, разбор в знания, recommend_for_ticket (совет по графу без модели), find_tickets_for | Только выгрузка спецификации в GitHub issues (ooo publish) |
| Работа на своей машине | Агент — Claude Code разработчика. Council подаёт контекст и правила через хуки и MCP, пересчитывает граф после правок. Есть ревью локального диффа (review_local_changes), разбор диффа (brief_me_on_diff), проверка диффа на правила (check_diff_conventions) | Работает внутри хост-агента разработчика |
| Задачи в рабочем пространстве | Этапы «создана → анализ → в работе → MR → закрыта», задача может жить днями. Агент на VM: отдельный sysbox-контейнер и свой домашний каталог на задачу, окружение стенда (рецепт развёртывания, секреты), превью приложения. В чате интерфейса человек может вмешаться в идущий ход, ответить на вопрос агента, разрешить инструмент, остановить. Длина хода не ограничена: ход кончается, когда агент замолчал. История пишется по ходу; если сессия агента умерла — сводка для продолжения. Агент-наставник читает вывод и направляет | Автономно: критерии по уровням → параллельно фоновым агентам. Повторы, дробление, переход на другого агента, пауза при исчерпании квоты, worktree, коммит на каждый принятый критерий |
| Что уходит наружу | Дифф; сообщение коммита по конвенции; коммит; push с одноразовыми учётными данными, проверкой защиты ветки и роста критических смеллов; MR в GitHub / GitLab / Bitbucket; закрытие задачи при слиянии; отчёт по качеству изменений задачи | Локальные коммиты; issues через gh |
| AI Council | Q00/ouroboros | |
|---|---|---|
| Приёмка по спецификации | Нет. Есть ревью, отчёт по изменениям задачи и запрет push при росте критических смеллов | Самая сильная часть: семь слоёв проверки. Заявления агента сверяются с журналом его вызовов; скрытая verify_command после каждой попытки; отложенные проверки (held-out), собранные до старта агента и прогнанные на исходном коде; песочница (Landlock/seccomp, без сети). Модель может только запретить приёмку |
| Формальная оценка | — | Три стадии: автоматические проверки (mechanical.toml) → оценка по смыслу → консенсус. Одобряет только выполненная первая стадия. Консенсус по умолчанию — вручную или при отклонении/неуверенности > 0.3; голосующие видят только текст артефакта |
| Code review | Отдельный сервис. Смотрит только изменившееся в ветке, группы файлов раздаются волнами. Находка — суждение и ноль или больше мест; модель цитирует код, строка выводится из цитаты. Вердикт обязателен по каждому файлу («не смог» ≠ «чисто»). Второй проход снимает находку, только если доказано, что она неверна. Публикация в MR: комментарии на добавленные строки и общая заметка без дублей. MR обходятся автоматически, включая MR из форков. При смене правил прошлые результаты недействительны | Отдельного нет |
| Самоулучшение | Знания перепроверяются при изменении кода; граф сам исправляет расхождения | Цикл эволюции (поиск проблем → разбор → новая спецификация → выполнение → оценка) до сходимости, застоя или лимита. StagnationDetector написан, но не вызывается |
| Модели | Модель обязательна: на хосте два процесса работают через OAuth вендора: операторский AI-чат (Claude, Codex, Gemini) и шесть фоновых задач (ревью группы файлов, второй проход ревью, ревью знаний, разбор тикетов, загрузка документов, имя ветки). Ответ модели проверяется на отказ до использования | Модель — у агента-исполнителя. Три уровня цены (1/10/30) с эскалацией — принудительно только на Claude SDK, claude_mcp и Codex, на остальных лишь рекомендация. Доказательство экономии всегда «мало данных»; турнир нескольких реализаций — мёртвый код |
| Агенты | Claude Code (хуки, MCP); MCP доступен любому клиенту | Около 13 исполнителей: Claude Code, Codex, OpenCode, Copilot, Gemini, Hermes, Kiro, GJC, Goose, Pi, OMP, Zcode, Antigravity, Grok |
| AI Council | Q00/ouroboros | |
|---|---|---|
| Пользователи | Компании → участники → роли (можно на один проект) → права. API-ключи компании. Данные разделены по компаниям: запрос без компании отвергается. Лицензия на установку и лимиты мест | Один человек |
| Интерфейс | Около 50 страниц: дашборд, код, граф, ветки, качество, соблюдение правил, ревью, конвенции, знания, ревью знаний, тикеты, задачи с чатом и диффом, операторский AI-чат, MCP Live, администрирование, System Health | Два терминальных интерфейса, веб-канбан только для чтения (без входа по паролю, только с той же машины), веб-страница настроек |
| Мониторинг | Телеметрия каждого вызова MCP и события хука без персональных данных; повторный поиск агента — признак плохого первого ответа. Около 22 правил Prometheus с тестами; у каждого сигнала есть правило «за ним никто не следит». Экран System Health, трассировка | Журнал событий; анонимные события уходят в PostHog разработчиков (отключаемо) |
| Самовосстановление | Сверка Temporal с базой, уборка осиротевших данных перед анализом, удаление проекта пачками в фоне, ночной бэкап и еженедельная проверка восстановления, удаление старой телеметрии, проверка места на диске перед выкаткой | Восстановление прогонов из журнала, уборка осиротевших прогонов при старте |
| Хранилище | Neo4j, Qdrant, PostgreSQL по сервисам, Temporal, NATS, Redis | Один файл SQLite (только добавление событий) |
| Изоляция | На своей машине агент работает так, как его настроил разработчик. В рабочем пространстве — sysbox-контейнер на задачу, одноразовые учётные данные для push, exec по белому списку. Ревьюер знаний только на чтение, проверка прав в одном шлюзе, защита от SSRF, учётные данные зашифрованы | Исполнитель с полными правами хоста; песочница только для команд проверки |
| Поставка | Дистрибутив для self-hosted установки или SaaS; на машине разработчика — MCP и хуки | pip / uv / brew |
| Лицензия | Закрытая | MIT |
Council заметно шире:
architecture_as_of, SonarQube; телеметрия каждого вызова MCP и хука без PII, около 22 правил Prometheus, System Health, трассировка; сверка Temporal с базой, уборка осиротевших данных, бэкап с проверкой восстановления.ouroboros уже, но глубже в одном: автономно довести задачу от спецификации до приёмки, которую агент не может подделать. Это другая ось, и она реальна: у Council нет интервью со спецификацией и скрытых проверок приёмки.
Оба живут внутри агента разработчика через MCP и потому стыкуются. ouroboros сознательно отдаёт понимание кода хост-агенту — ровно это место занимает Council. В одной сессии Claude Code ouroboros может вести процесс (интервью, спецификация, приёмка), а Council — подавать код, правила и знания.
Итог: ouroboros сильнее в автономном доведении задачи и неподделываемой приёмке; Council — в понимании кода, знаниях, правилах, ревью и командной работе. Ни одна из осей не отменяет другую.
На живом демо покажем работу платформы на реальном проекте, а не шаблонную презентацию.