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.
opencode — open-source AI coding agent (лицензия MIT). Это не анализатор и не база знаний, а сам исполнитель: он читает файлы, правит их, запускает команды и разговаривает с моделью. Живёт на машине разработчика — CLI и терминальный интерфейс, плюс веб-приложение, Electron-десктоп, расширение VS Code и HTTP API/SDK. Один серверный процесс обслуживает один или несколько каталогов; история сессий и вложения лежат в одном SQLite, снапшоты файлов — в теневом git. Модель — своя: ключ провайдера, OAuth-подключение или управляемый провайдер через Console. Репозиторий — монорепозиторий на Bun: 35 пакетов, 4 сервиса, около 8 900 файлов.
Это не конкурент Council по знаниям: opencode занимает ровно то место, где в рабочем пространстве Council стоит вендорский CLI агента. Поэтому сравнение имеет смысл в одном общем месте — как устроена работа агента с кодом, и что каждый даёт сверх неё.
| AI Council | opencode | |
|---|---|---|
| Кто читает код | Council сам: разбирает репозитории и строит граф. Модель при анализе не вызывается | Сам агент: модель вызывает инструменты чтения, поиска и оболочки. Фонового разбора нет |
| Когда | При создании проекта, при push в main (опрос), по кнопке, ночью. После каждой правки файла агентом (Write/Edit) пересчитываются файл и зависимые от него | В момент хода, по запросу модели. Между сессиями не хранится ничего, кроме истории, снапшотов и инструкций |
| Что извлекает | Слои L0–L10: стек и гайды по фреймворкам; структура; зависимости и циклы; метрики и граф вызовов; слой данных (ORM, DDL); стиль архитектуры и запрещённые зависимости; паттерны проектирования; стиль кода; DDD (bounded contexts через Leiden, агрегаты, события); связь файлов по совместным правкам в git; смеллы; качество по ISO 25010 и fitness-функции; диаграммы | Только то, что модель прочитала: файлы, результаты ripgrep, вывод команд, диффы. Постоянного графа, слоёв, метрик и смеллов нет |
| Языки | Python, PHP, TypeScript, JavaScript, Java, Kotlin, C#, C, C++ — с полным разбором слоёв | Любой, который умеет читать модель. Своего разбора кода нет; tree-sitter используется для разбора shell-команд (bash, PowerShell) и для подсветки синтаксиса в TUI, а не для построения графа |
| LSP | — (свой разбор и граф) | Настройки LSP и права на операции уже есть, но рантайма ещё нет: в edit и write стоит TODO «Add LSP notification and diagnostics after LSP runtime exists» |
| Несколько репозиториев | Проект из нескольких репозиториев с общим графом | Один сервер обслуживает несколько Location (каталогов), у каждого свой конфиг, права и инструменты. Проект — каталог с .git/.hg; workspace и worktree дают дополнительные копии. Общего графа между репозиториями нет |
| Внешние анализаторы | SonarQube: забирает найденное; свой сканер (текстовые языки, JVM, .NET, .NET Framework на Windows) | — |
| История | Рёбра версионируются после каждого прогона; architecture_as_of — архитектура на дату | История — журнал событий сессии и снапшоты файлов (теневой git) для undo и диффа шага. Истории архитектуры нет |
| Поиск | Поиск по смыслу и regex, find_usages, find_path, граф зависимостей, похожие реализации; ask_question — выдержки из базы без пересказа моделью | grep и glob по ripgrep, read, shell; webfetch и websearch. Семантического поиска по коду нет |
| AI Council | opencode | |
|---|---|---|
| База знаний | Решения, заметки, диаграммы Mermaid, журналы изменений. Каждая запись привязана к коду и приходит агенту, когда он трогает нужный файл | Отдельной базы нет. Есть инструкции (файлы вроде AGENTS.md), skills (SKILL.md, до 10 файлов), слэш-команды, агенты и references. Память — история сессий, компакция и инструкции на диске |
| Актуальность | Запись держит место в коде на своей ветке и уходит на перепроверку, когда меняется код под ней, сама запись, появляется похожая или ветку сливают. Ревьюер-модель (только чтение) обязан привести дословную цитату; итог — пометка, текст не трогается | Не перепроверяется: инструкции читаются из файлов на диске, их актуальность отслеживает человек или сам агент |
| Ветки | Знания и граф хранятся по веткам; агент видит свою ветку, родителя и слитое; при слиянии запись переезжает | Сессии привязаны к проекту и каталогу; workspace и worktree дают изоляцию. Знаний по веткам нет |
| Правила | Конвенции трёх областей: к сущностям кода, к путям (действуют и на ещё не созданный файл), ко всему проекту. Уровни MUST/SHOULD, состояния «черновик», «отставлено», «удалено». Проверка перед правкой и по диффу | AGENTS.md-инструкции, права allow/ask/deny, политики провайдеров и интеграций, слои конфига. Движка правил с привязкой к сущностям и путям нет |
| Как доходит до агента | Хуки Claude Code: правила проекта к каждому сообщению пользователя; широкий канал перед действием; контекст файла на каждый Read/Edit/Bash; чек-лист в конце хода. Гейт «сначала база»: код не открыть, пока не спросил базу; снять гейт может только человек | Собирает контекст сам, изнутри: system prompt, инструкции, skills и определения инструментов. Плагин-хуки работают в процессе. Внешних хуков, как у Claude Code, нет |
| MCP | Сервер: около 60 инструментов, профили, режимы на сессию, ответы в XML с ограничением размера | Клиент: серверы stdio/socket/remote, OAuth, prompts/resources, elicitation. Своих встроенных инструментов около 15 |
| Перенос | Экспорт и импорт знаний пакетом, копирование между проектами | Экспорт и импорт сессий и auth; конфиг слоями. Переноса знаний нет |
| AI Council | opencode | |
|---|---|---|
| Требования | Трассировка тестов к требованиям по меткам: покрытие и разрывы; «без теста» — тристейт, а не requirements-менеджмент | — |
| Тикеты | Jira, GitHub Issues, Redmine: чтение, разбор в знания, совет по тикету из графа | — (GitHub-автоматика только в своём репозитории: triage-боты в CI) |
| Работа на своей машине | Агент — Claude Code разработчика; Council подаёт контекст и правила; ревью локального диффа, разбор диффа, проверка диффа на правила | Это и есть режим работы: CLI, TUI, веб-приложение, десктоп, VS Code. Ход ведёт человек в терминале или в браузере |
| Рабочее пространство | Задачи на VM в sysbox-контейнере, живут днями; человек ведёт агента из чата интерфейса; наставник; дифф → коммит → push → MR | Один сервер на машине, несколько клиентов. Сессии с очередью ввода (steer/queue), прерыванием, вопросами и подтверждениями прав; subagent'ы и фоновые jobs. Изоляции задачи на отдельной VM нет |
| PR | Ревью с публикацией в MR (GitHub, GitLab, Bitbucket) | Публикации MR нет; агент может позвать gh через shell, если попросить |
| AI Council | opencode | |
|---|---|---|
| Code review | Отдельный сервис: смотрит изменившееся, вердикт по каждому файлу, второй проход, публикация в MR без дублей | Нет; есть просмотр диффа сессии и снапшоты для undo |
| Модели | Модель обязательна: на хосте два процесса работают через OAuth вендора: AI-чат и шесть фоновых задач (ревью, ревью знаний, разбор тикетов и др.). Без модели остаётся только статический анализ кода. | Свой ключ или OAuth на десятки провайдеров: OpenAI, Anthropic, Google/Vertex, Bedrock, Azure, xAI, Groq, OpenRouter, DeepSeek, Mistral, Moonshot и др.; кастомные и локальные endpoint'ы — через generic openai-compatible/anthropic-compatible. Каталог models.dev даёт модели, цены и лимиты; есть кэш промптов и компакция |
| Управление моделями | Модель и бюджет — настройками проекта | Управляемый провайдер через Console: организация задаёт политики provider.use, tool.use, integration.use; Console отдаёт утверждения клиенту |
| Агенты | Claude Code (хуки, MCP); MCP доступен любому клиенту | Один агент с режимами (build, plan, свои агенты и subagent'ы) и ACP-мост для редакторов. Это сам исполнитель, а не набор из десятка CLI |
| AI Council | opencode | |
|---|---|---|
| Пользователи | Компании → участники → роли (можно на один проект) → права. API-ключи компании. Данные разделены по компаниям: запрос без компании отвергается. Лицензия на установку и лимиты мест | Один разработчик. Server mode включается явно; без пароля сервер работает без аутентификации — так записано в SECURITY.md. Console добавляет организационные политики для управляемых провайдеров |
| Интерфейс | Около 50 страниц веб-интерфейса: код, граф, ветки, качество, правила, ревью, знания, тикеты, задачи, MCP Live, администрирование, System Health | TUI (SolidJS + OpenTUI), веб-приложение, Electron-десктоп, расширение VS Code, HTTP API/SDK (около 139 эндпоинтов), ACP для редакторов |
| Мониторинг | Телеметрия каждого вызова MCP и хука без персональных данных; повторный поиск агента — признак плохого первого ответа. Около 22 правил Prometheus с тестами; экран System Health, трассировка | Логи и команды debug, сервис stats (аналитика использования), OpenTelemetry в утилитах. Prometheus, System Health и панелей наблюдения нет |
| Самовосстановление | Сверка Temporal с базой, уборка осиротевших данных, удаление проекта пачками в фоне, ночной бэкап и еженедельная проверка восстановления, удаление старой телеметрии | Claim и журнал событий: ход после краха возобновляется с бюджетом попыток; осиротевшие tool-вызовы и компакции закрываются; фоновые jobs и persistent PTY восстанавливаются. Бэкапа и проверки восстановления нет |
| Хранилище | Neo4j, Qdrant, PostgreSQL по сервисам, Temporal, NATS, Redis | Один SQLite (Drizzle) + теневой git для снапшотов + файлы вывода инструментов; вложения — blob'ы в SQLite |
| Изоляция | Sysbox-контейнер на задачу, одноразовые учётные данные для push, ревьюер знаний только на чтение, проверка прав в одном шлюзе, защита от SSRF | Не песочница (SECURITY.md): права — UX-помощник, а не изоляция. Каталоги изолированы по Location; CodeMode не даёт сети, файлов и процессов; плагины доверяются как конфиг; сторонние MCP-серверы вне границы доверия. Отдельной защиты исходящих URL в модели угроз нет |
| Поставка | Дистрибутив для self-hosted установки или SaaS; на машине разработчика — MCP и хуки | Bun/npm, бинарники, десктоп, Nix, расширение VS Code; CI на GitHub Actions, инфраструктура SST (Cloudflare, AWS) |
| Лицензия | Закрытая | MIT |
opencode — не конкурент Council по знаниям и правилам. Это ровно тот слой, который Council в рабочем пространстве занимает вендорским CLI: сам агент, который читает код, зовёт инструменты, говорит с моделью и держит сессию. Поэтому «кто сильнее» имеет смысл только в одном общем месте — как устроена работа агента с кодом.
Где сильнее opencode:
@opencode/sdk собирает Client + Core + Server в чужом процессе.Где сильнее Council — глубина и всё, что вокруг агента:
Могут ли работать вместе. Да, но не так полно, как с Claude Code. opencode — MCP-клиент, поэтому инструменты Council (brief_me_on, list_knowledge, search_code, check_diff_conventions и остальные) ему доступны: достаточно добавить MCP-сервер Council в конфиг. А вот хуков Council — рулбука на каждый промпт, контекста файла на каждый Read/Edit, гейта «сначала база» — в opencode нет: у него свой способ собирать контекст. Чтобы Council доставлял правила в opencode так же, как в Claude Code, нужен плагин opencode (у него есть хуки в процессе) или отдельная интеграция. Сейчас её нет.
На живом демо покажем работу платформы на реальном проекте, а не шаблонную презентацию.