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.
PR-Agent — open-source AI-агент для pull request'ов. Он получает PR/MR из git-провайдера (GitHub, GitLab, Bitbucket Cloud и Server, Azure DevOps, Gitea, Gerrit, AWS CodeCommit) или «сырой» unified diff, собирает контекст (описание, коммиты, тикеты, repo-context файлы, skills, CI-артефакты), вызывает LLM через LiteLLM и публикует результат обратно: комментарий, inline-комментарии, описание PR, метки, commit в CHANGELOG, check run — либо в stdout, JSON или внешние sinks. Команды: /review, /describe, /improve, /ask, /ask_line, /add_docs, /generate_labels, /update_changelog, /similar_issue, /config, /help; /help_docs отключён. Есть CLI, GitHub Action, вебхук-серверы, polling, AWS Lambda, A2A-сервер MOSAICO и режимы plain-diff/local. MIT.
Это прямой конкурент review-сервиса Council и публикации в PR, но не конкурент его слою понимания кода и знаний. PR-Agent читает дифф и собранный контекст, а не весь репозиторий; он не строит граф, не держит базу знаний и конвенции и не ведёт задачи. Это самый сильный из сравнённых проектов именно в PR-механике: провайдеры, команды, inline-предложения, persistent-состояние находок, контекст тикетов и честное покрытие диффа.
| AI Council | PR-Agent | |
|---|---|---|
| Кто читает код | Council сам: разбирает репозитории и строит граф. Модель при анализе не вызывается | Модель читает промпт, собранный из диффа и контекста. PR-Agent не анализирует код статически: он получает патчи от провайдера, при необходимости догружает полные файлы (на GitHub — до 50 файлов), repo-context файлы (AGENTS.md по умолчанию, до 500 строк), skills, CI-артефакты и тикеты. Графа, индекса репозитория и слоёв нет |
| Когда | При создании проекта, при push в main (опрос), по кнопке, ночью; после правки файла агентом пересчитываются файл и зависимые | В момент события PR (открытие, synchronize, комментарий-команда), вызова CLI или A2A-запроса. Фонового анализа репозитория нет |
| Что извлекает | Слои L0–L10: стек, структура, зависимости и циклы, метрики и вызовы, данные (ORM, DDL), архитектура и запрещённые зависимости, паттерны, стиль, DDD, связь файлов по правкам, смеллы, качество ISO 25010, диаграммы | Дифф и патчи файлов, язык файлов, коммиты, описание PR, тикеты, repo-context, skills, CI-артефакты. Структуры кода, зависимостей, архитектуры, DDD, паттернов, стиля, смеллов и ISO 25010 нет |
| Чего нет | — | Графа кода и всего репозитория: PR-Agent видит PR и то, что влезло в промпт. Нет зависимостей, циклов, архитектурных слоёв, DDD, паттернов, метрик качества и диаграмм архитектуры |
| Языки | Python, PHP, TypeScript, JavaScript, Java, Kotlin, C#, C, C++ — с полным разбором слоёв | Язык определяется провайдером и картой расширений (language_extensions.toml); отдельного разбора по языкам нет — модель работает с текстом диффа. language_handler.py классифицирует файлы, но слоёв не строит |
| Несколько репозиториев | Проект из нескольких репозиториев с общим графом | Один PR за прогон. Sibling-репозитории читаются только по host-allowlist (repo_context_sibling_repos) и с проверкой доступа; общего графа между репозиториями нет |
| История | Рёбра версионируются после каждого прогона; architecture_as_of — архитектура на дату | Инкрементальный режим по коммитам (IncrementalPR, unreviewed_files_map) и persistent-состояние находок между прогонами. Истории архитектуры нет |
| Поиск | Поиск по смыслу и regex, find_usages, find_path, граф зависимостей, похожие реализации; ask_question — выдержки из базы без пересказа моделью | Поиска по коду нет: инструмент получает дифф и файлы. /similar_issue — векторный индекс issues (GitHub, LanceDB/Pinecone/Qdrant), а не кода. Остальное — вопросы по диффу через /ask и /ask_line |
| AI Council | PR-Agent | |
|---|---|---|
| База знаний | Решения, заметки, диаграммы Mermaid, журналы изменений. Каждая запись привязана к коду и приходит агенту, когда он трогает нужный файл | Базы знаний нет. Контекст существует только в промпте: описание PR, коммиты, тикеты, repo-context, skills, артефакты. Между прогонами в комментариях PR живёт узкое persistent-состояние: identity-маркеры, finding state, fingerprint'ы inline-комментариев, история suggestions. Это состояние ревью, а не знания о коде |
| Актуальность | Запись держит место в коде на своей ветке и уходит на перепроверку, когда меняется код под ней, сама запись, появляется похожая или ветку сливают. Ревьюер обязан привести цитату; итог — пометка | Находки сверяются с head_sha: ACTIVE → RESOLVED только при полном покрытии и смене head, повторно появившаяся → REOPENED. Это аккуратная свежесть находок, а не знаний; проверки «соответствует ли запись коду» вне ревью нет |
| Ветки | Знания и граф хранятся по веткам; агент видит свою ветку, родителя и слитое; при слиянии запись переезжает | Работа идёт на ветке PR; инкрементальный режим якорится на коммиты и вид проверки (review/suggestions). Знаний по веткам и слияния знаний нет |
| Правила | Конвенции трёх областей: к сущностям кода, к путям (действуют и на ещё не созданный файл), ко всему проекту. MUST/SHOULD, состояния «черновик», «отставлено», «удалено». Проверка перед правкой и по диффу | Движка конвенций нет. Есть слоистые .pr_agent.toml, prompt-TOML, skills (opt-in), prompt fragments, custom labels и extra instructions в команде. Репозиторий и комментарий ограничены allowlist'ами host-only ключей, но это граница безопасности, а не авторитетное правило с привязкой к сущностям и путям. Модель может следовать инструкции в ревью, но детерминированной проверки диффа на конвенции нет |
| Как доходит до агента | Хуки Claude Code: правила проекта к каждому сообщению, широкий канал перед действием, контекст файла на Read/Edit/Bash, чек-лист в конце; гейт «сначала база» | Хуков нет. PR-Agent вызывается событием PR, командой в комментарии, CLI или A2A-запросом; результат публикует в PR. Контекст агенту-разработчику он не подаёт |
| MCP | Сервер: около 60 инструментов, профили, режимы, XML с бюджетом | MCP-сервера нет. Интерфейсы: CLI, вебхуки, GitHub Action, Lambda, A2A (MOSAICO), REST-подобные серверы провайдеров |
| Перенос | Экспорт и импорт знаний пакетом, копирование между проектами | Переносится конфигурация: .pr_agent.toml, prompt-TOML, skills, repo-context. Пакета знаний нет |
| AI Council | PR-Agent | |
|---|---|---|
| Требования | Трассировка тестов к требованиям по меткам: покрытие и разрывы; «без теста» — тристейт, а не requirements-менеджмент | Связи «тест → требование» нет. Есть ticket compliance: модель проверяет, соответствует ли PR тикету, и возвращает ticket_compliance_check |
| Тикеты | Jira, GitHub Issues, Redmine: чтение, разбор в знания, совет по тикету из графа | GitHub Issues, GitLab issues, Azure work items, Jira Cloud, Linear, Asana: чтение описания и acceptance criteria, подтягивание sub-issues, проверка compliance. Тикеты не создаются и не ведутся |
| Работа на своей машине | Агент — Claude Code разработчика; Council подаёт контекст и правила через MCP и хуки; ревью локального диффа, разбор диффа, проверка диффа на правила | CLI pr-agent, режимы plain-diff (--stdin, --diff-file) и local (git-репозиторий на диске), doctor для проверки ключа и ping модели. MCP и хуков нет |
| Рабочее пространство | Задачи на VM в sysbox-контейнере, живут днями; человек ведёт из чата; наставник; дифф → коммит → push → MR | Задач и рабочего пространства нет: PR-Agent работает с уже открытым PR или готовым диффом |
| PR | Ревью с публикацией в MR (GitHub, GitLab, Bitbucket) | Это ядро продукта: 10 провайдеров, комментарии, inline-предложения, описание PR, метки, commit в CHANGELOG, check runs, треды, реакции. Шире Council по числу провайдеров и PR-действий |
| Процесс | Машина состояний задачи: создана → анализ → в работе → MR → закрыта; содержимое шага задаёт человек | Процесса задачи нет. Есть событийная модель: PR opened/synchronize/comment/review, auto-команды, push-триггеры, polling. Состояние — finding state в комментариях, а не задача |
| AI Council | PR-Agent | |
|---|---|---|
| Code review | Отдельный сервис: смотрит изменившееся, вердикт по каждому файлу, второй проход, публикация в MR без дублей; ревью знаний отдельно | /review — основной инструмент: key issues, security concerns, todo, can-be-split, effort 1–5, risk level, merge recommendation, failure modes, priority files, contribution time, score, relevant tests, ticket compliance. Большой PR чанкуется; результаты сливаются консервативно (union находок, минимум score, худший risk/merge); coverage footer честно перечисляет remaining/partial файлы. Есть persistent finding state ACTIVE/RESOLVED/REOPENED, inline key issues с проверкой публикации, дедуп по fingerprint. Графа и знаний о коде в ревью нет |
| Модели | Модель обязательна: на хосте два процесса через OAuth вендора: AI-чат и шесть фоновых задач (ревью, ревью знаний, разбор тикетов и др.). Без модели остаётся только статический анализ кода. | Своего LLM нет: LiteLLM, ключ провайдера или ambient-аутентификация (Azure AD, Bedrock, Vertex). Модели делятся на weak/regular/reasoning; default gpt-6.1-sol, fallback gpt-6-luna; цепочка fallback, точный токен-бюджет, prompt caching для Claude, extended/adaptive thinking, streaming. Один вызов на инструмент в норме; /improve добавляет self-reflection |
| Агенты | Claude Code (хуки, MCP); MCP доступен любому клиенту | PR-Agent сам является агентом для PR: GitHub App/Action, GitLab, Bitbucket Cloud/Server, Azure DevOps, Gitea, Gerrit, polling, Lambda, A2A/MOSAICO. Хуков Claude Code и MCP нет |
| Оценка | Телеметрия каждого вызова MCP и хука; повторный поиск агента — признак плохого первого ответа | 380 unit-файлов, около 145 тыс. строк; e2e с реальными провайдерами, health-smoke, CI. Прогон не выполнялся — зависимости не установлены. Публичного бенчмарка ревью в базе нет. Метрики кода Council: maintainability 0.68; из 7 fitness-функций проходят 3 (нет циклов, нет нарушений слоёв, naming 1.0); 39 god classes, 771 long method, 188 нарушений цикломатической сложности, покрытие типов 0.14, docstring 0.18, 985 смеллов |
| Гарантии | Гейты тестов, ревью, конвенции | Контрактные тесты: capability guard, config dead keys, config reference, обязательные методы провайдера и line link, регрессии на «тихие» ошибки, webhook verify before parse, лимит тела, docker hardening, упаковка help-документации. CI: build-and-test, docs, e2e, pre-commit, provider-smoke, CodeQL |
| AI Council | PR-Agent | |
|---|---|---|
| Пользователи | Компании → участники → роли (можно на проект) → права. API-ключи компании. Данные разделены: запрос без компании отвергается. Лицензия и лимиты мест | Self-hosted, без компаний, ролей и лицензии. Есть identity provider для права запускать команду (по умолчанию все ELIGIBLE) и restricted_mode для запрета push_code. Изоляция настроек — per-request, но многопользовательской платформы нет |
| Интерфейс | Около 50 страниц: код, граф, ветки, качество, правила, ревью, знания, тикеты, задачи, MCP Live, администрирование, System Health | CLI, 10 git-провайдеров, вебхук-серверы, GitHub Action, Lambda, A2A-сервер MOSAICO, сайт документации Docusaurus. Своего UI нет |
| Мониторинг | Телеметрия каждого вызова MCP и хука без PII; около 22 правил Prometheus с тестами; System Health, трассировка | OTel включён opt-in (otel.is_enabled=false), Prometheus exporter с multiprocess, RunDetails (модели, токены, стоимость, число вызовов), структурированные логи. По умолчанию телеметрии нет; System Health нет |
| Самовосстановление | Сверка Temporal с базой, уборка осиротевших данных, удаление проекта пачками, ночной бэкап и проверка восстановления, ретенция телеметрии | Повтор того же вызова, fallback-модели, chunk recovery следующей моделью, восстановление состояния из комментариев, публикация ошибок конфигурации, guard от повторной доставки вебхука. Ночного бэкапа и проверки восстановления нет |
| Хранилище | Neo4j, Qdrant, PostgreSQL по сервисам, Temporal, NATS, Redis | Своей БД у ядра нет: состояние живёт в комментариях PR; векторная БД — только для /similar_issue (LanceDB/Pinecone/Qdrant); настройки — TOML и env. Графовой БД и индекса кода нет |
| Изоляция | Sysbox-контейнер на задачу, одноразовые учётные данные для push, ревьюер знаний только на чтение, проверка прав в одном шлюзе, защита от SSRF | Per-request deepcopy настроек, снимок кредов в handler, contextvars, SSRF-guard для URL изображений и публичных диффов, HMAC/JWT/Basic-аутентификация вебхуков, лимит тела 5 MiB, контейнер под uid 10001. Песочницы и изоляции задачи нет; защита от prompt injection — границы в промпте, не sandbox |
| Поставка | Дистрибутив для self-hosted установки или SaaS; на машине разработчика — MCP и хуки | PyPI pr-agent, Docker с 12 target'ами, GitHub Action, Lambda, A2A; MIT |
| Лицензия | Закрытая | MIT |
PR-Agent — прямой конкурент review-сервиса Council и PR-публикации, но не конкурент его слою понимания кода и знаний. Он лучший из сравнённых в PR-механике: 10 провайдеров, богатая командная поверхность, точный токен-бюджет, чанкинг с честным покрытием, консервативное слияние, persistent-состояние находок, inline-предложения с проверкой anchor'ов, контекст тикетов и compliance. Council шире: граф кода, знания с привязкой к позициям и проверкой актуальности, конвенции, задачи на VM, команда и права.
Где сильнее PR-Agent:
/review с богатой схемой: risk, merge recommendation, effort, security, tests, failure modes, priority files, contribution time, ticket compliance;head_sha и запретом резолюции при неполном покрытии;/improve с self-reflection и валидацией anchor'ов, Python-синтаксиса и существующего кода;Где сильнее Council:
architecture_as_of, версионирование рёбер, внешний анализатор; ask_question отдаёт выдержки с FQN. PR-Agent видит один PR и его дифф.Могут ли работать вместе. Да, и это разные роли в одном PR-процессе. PR-Agent — быстрый PR-бот: описание, ревью, предложения, вопросы по диффу, контекст тикетов и публикация. Council — источник истины о коде и правилах: граф, знания, конвенции, глубокое ревью и задачи. Оба публикуют в PR, поэтому нужна развязка: либо PR-Agent делает первый проход, а Council — глубокое ревью с графом и правилами, либо наоборот, но не два независимых комментария об одном и том же. Автоматической интеграции нет; у PR-Agent нет MCP, поэтому Council не может доставить ему знания и конвенции напрямую — их пришлось бы передавать через repo-context файлы или CI-артефакты.
На живом демо покажем работу платформы на реальном проекте, а не шаблонную презентацию.