Главная / Сравнение / PR-Agent

AI Council и PR-Agent: что умеет каждый

Сравнение возможностей по коду и документации обоих проектов.

Коротко

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-состояние находок, контекст тикетов и честное покрытие диффа.

1. Понимание кода

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

2. Знания и правила

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. Пакета знаний нет

3. Требования и задачи

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 в комментариях, а не задача

4. Проверка и модели

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

5. Платформа

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:

  • 10 git-провайдеров и PR-действия: комментарии, inline-предложения, описание, метки, changelog-commit, check runs, треды;
  • /review с богатой схемой: risk, merge recommendation, effort, security, tests, failure modes, priority files, contribution time, ticket compliance;
  • чанкинг больших PR, консервативное слияние и coverage footer — усечённый дифф никогда не выдаётся за полный;
  • persistent finding state ACTIVE/RESOLVED/REOPENED с привязкой к head_sha и запретом резолюции при неполном покрытии;
  • /improve с self-reflection и валидацией anchor'ов, Python-синтаксиса и существующего кода;
  • контекст тикетов: GitHub, GitLab, Azure, Jira, Linear, Asana, acceptance criteria и sub-issues;
  • слоистые настройки с host-only границей, SSRF-guard, аутентификацией вебхуков и per-request изоляцией кредов;
  • CLI, plain-diff, local, GitHub Action, Lambda и A2A — работает и в hosted, и в air-gapped режиме;
  • MIT.

Где сильнее Council:

  • понимает проект, а не только дифф. Граф L0–L10: стек, структура, зависимости и циклы, вызовы, данные, архитектура и запрещённые зависимости, паттерны, стиль, DDD, co-change, смеллы, ISO 25010, диаграммы; статический анализ модель не вызывает. PR-Agent ревьюит дифф с LLM, но не строит граф проекта.
  • знания привязаны к коду и веткам. Запись живёт на ветке, приходит агенту при касании файла, уходит на перепроверку при изменении кода под ней; ревьюер обязан привести цитату. У PR-Agent есть контекст тикетов и repo-context, но нет базы знаний о решениях с проверкой против кода.
  • конвенции — авторитетные правила с проверкой. Три области (сущности, пути, проект), MUST/SHOULD, состояния, проверка перед правкой и по диффу; хуки доставляют правила к каждому сообщению и контекст файла на Read/Edit/Bash; гейт «сначала база» блокирует чтение кода до обращения к базе. PR-Agent читает repo-context, но не знает, какие правила обязательны и где они применяются.
  • ревью кода и знаний — сервис. Вердикт по каждому файлу, второй проход, публикация в MR без дублей; отдельное ревью знаний с цитатой и калибровкой. PR-Agent сильнее в PR-механике (10 провайдеров, inline-предложения, persistent findings), но его ревью не видит граф, знания и конвенции.
  • задачи на VM, тикеты, MR, команда. Задача в sysbox-контейнере живёт дни, человек ведёт из UI; тикеты Jira/GitHub/Redmine, трассировка требований, компании/роли/лицензия. PR-Agent — бот для PR, этого слоя у него нет.
  • MCP и хуки: контекст приходит агенту-разработчику. 61 инструмент, профили/режимы/XML-бюджет; правила к каждому сообщению, контекст файла на Read/Edit/Bash, чек-лист, гейт «сначала база». PR-Agent работает в PR, а не в сессии разработчика; MCP у него нет.
  • общий граф на несколько репозиториев, история архитектуры, SonarQube. architecture_as_of, версионирование рёбер, внешний анализатор; ask_question отдаёт выдержки с FQN. PR-Agent видит один PR и его дифф.
  • наблюдаемость и самовосстановление. Телеметрия каждого вызова MCP и хука без PII, около 22 правил Prometheus, System Health, трассировка; сверка Temporal с базой, уборка осиротевших данных, бэкап с проверкой восстановления. PR-Agent даёт метрики и логи, но не per-call наблюдаемость инструментов и не самовосстановление платформы.

Могут ли работать вместе. Да, и это разные роли в одном PR-процессе. PR-Agent — быстрый PR-бот: описание, ревью, предложения, вопросы по диффу, контекст тикетов и публикация. Council — источник истины о коде и правилах: граф, знания, конвенции, глубокое ревью и задачи. Оба публикуют в PR, поэтому нужна развязка: либо PR-Agent делает первый проход, а Council — глубокое ревью с графом и правилами, либо наоборот, но не два независимых комментария об одном и том же. Автоматической интеграции нет; у PR-Agent нет MCP, поэтому Council не может доставить ему знания и конвенции напрямую — их пришлось бы передавать через repo-context файлы или CI-артефакты.

Сравните на своём проекте

На живом демо покажем работу платформы на реальном проекте, а не шаблонную презентацию.