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.
Mem0 — слой памяти для AI-приложений и агентов. Он берёт сообщения, одним вызовом LLM извлекает из них факты, предпочтения и процедуры, складывает их в векторное хранилище со скоупом user_id/agent_id/run_id, а потом ищет гибридно: семантика + BM25 + буст по сущностям. Есть Python- и TypeScript-SDK, два CLI, self-hosted FastAPI-сервер с pgvector и Next.js-дашбордом, плагины для Claude Code, Cursor, Codex, Kimi, Antigravity, OpenCode, OpenClaw, Pi и DeepSeek, интеграции Vercel AI SDK, n8n, Zapier, Hermes и Strands. Записи можно скоупить, задавать им срок жизни, обновлять и удалять; процедурная память оформлена отдельным типом. Hosted Platform добавляет то, чего нет в OSS: нативный граф памяти, затухание, temporal reasoning, Dream-консолидацию, профили, вебхуки, экспорт, batch, app_id, организации и проекты. OSS эти возможности явно отвергает ошибкой. Apache-2.0.
Это слой памяти, а не понимания кода. Mem0 хранит то, что агент узнал о пользователе, проекте или ходе работы; Council хранит знания о коде, привязанные к позициям, и авторитетные правила команды. Пересечение — доставка памяти агенту через хуки и MCP и гибридный поиск.
| AI Council | Mem0 | |
|---|---|---|
| Кто читает код | Council сам: разбирает репозитории и строит граф. Модель при анализе не вызывается | Никто: Mem0 не анализирует код. Он извлекает память из сообщений LLM-вызовом и сущности spaCy; графа кода, слоёв и метрик нет. Плагины кодинг-агентов дополнительно собирают эпизод сессии: прочитанные и изменённые файлы, команды, поиски, ветку и SHA — но это метаданные работы, а не структура кода |
| Когда | При создании проекта, при push в main (опрос), по кнопке, ночью; после правки файла агентом пересчитываются файл и зависимые | В момент add или flush из плагина; поиск — в момент search и инъекции в промпт. Фонового анализа кода нет; Dream на Platform — фоновая консолидация памяти, а не кода |
| Что извлекает | Слои L0–L10: стек, структура, зависимости и циклы, метрики и вызовы, данные (ORM, DDL), архитектура и запрещённые зависимости, паттерны, стиль, DDD, связь файлов по правкам, смеллы, качество ISO 25010, диаграммы | Память: текст факта, предпочтения или процедуры, attributed_to, хэш, lemmatized-текст, скоуп, срок жизни, метаданные; сущности PROPER/QUOTED/TOPIC/IDENTIFIER в sidecar-коллекцию. Эпизод кодинг-сессии: задача, выводы, результаты сабагентов, инструменты, файлы, команды, provenance (repo, branch, SHA) |
| Чего нет | — | Графа кода, зависимостей, архитектуры, DDD, паттернов, стиля, смеллов, ISO 25010, диаграмм. «Граф памяти» Platform — это co-occurrence сущностей, а не типизированные связи и не граф кода |
| Языки | Python, PHP, TypeScript, JavaScript, Java, Kotlin, C#, C, C++ — с полным разбором слоёв | Не применимо: память язык-агностична. Плагины работают с любым репозиторием, который читает агент |
| Несколько репозиториев | Проект из нескольких репозиториев с общим графом | Плагины скоупят память по app_id/project_id, вычисленному из git-remote; общего графа между репозиториями нет |
| История | Рёбра версионируются после каждого прогона; architecture_as_of — архитектура на дату | История памяти — SQLite history (ADD/UPDATE/DELETE); истории кода и архитектуры нет |
| Поиск | Поиск по смыслу и regex, find_usages, find_path, граф зависимостей, похожие реализации; ask_question — выдержки из базы без пересказа моделью | Гибрид: семантические кандидаты с over-fetch max(4k, 60), BM25-буст с сигмоидой, буст по сущностям; threshold применяется к семантическому score до смешивания. BM25 и сущности не добавляют кандидатов. Без spaCy и fastembed — только семантика. Графовых запросов нет |
| AI Council | Mem0 | |
|---|---|---|
| База знаний | Решения, заметки, диаграммы Mermaid, журналы изменений. Каждая запись привязана к коду и приходит агенту, когда он трогает нужный файл | Память: факты, предпочтения, процедуры, эпизоды кодинг-сессий. Скоупы user_id/agent_id/run_id, на Platform ещё app_id. Записи не привязаны к позициям в коде; связь с кодом — только метаданные плагина (repo, dirs, branch, SHA) |
| Актуальность | Запись держит место в коде на своей ветке и уходит на перепроверку, когда меняется код под ней, сама запись, появляется похожая или ветку сливают. Ревьюер обязан привести цитату; итог — пометка | OSS: expiration_date скрывает запись из search и get_all после даты; дедуп по MD5 в окне top-10; извлечение только добавляет и не переписывает старое. Platform: затухание 0.3–1.5× (opt-in), Dream (supersede/merge всегда, synthesis — Pro+), temporal reasoning. Проверки «соответствует ли запись коду» нет |
| Ветки | Знания и граф хранятся по веткам; агент видит свою ветку, родителя и слитое; при слиянии запись переезжает | Плагины фиксируют ветку и SHA в метаданных и скоупят по repo/app_id; версионирования знаний по веткам и слияния нет |
| Правила | Конвенции трёх областей: к сущностям кода, к путям (действуют и на ещё не созданный файл), ко всему проекту. MUST/SHOULD, состояния «черновик», «отставлено», «удалено». Проверка перед правкой и по диффу | Движка конвенций нет. Есть custom_instructions и agent_custom_instructions — текст, который подмешивается в промпт извлечения, категории и project/personal instructions плагинов. Уровней MUST/SHOULD, привязки к сущностям и путям, проверки диффа нет |
| Как доходит до агента | Хуки Claude Code: правила проекта к каждому сообщению, широкий канал перед действием, контекст файла на Read/Edit/Bash, чек-лист в конце; гейт «сначала база» | Нативные плагины: хуки SessionStart, UserPromptSubmit (на первом промпте — до 5 памятей), PostToolUse/PostToolUseFailure, Stop, PreCompact, SessionEnd; всё fail-open. MCP — один read-only search_memories в Python-плагинах. Запись идёт фоном и ничего не блокирует; гейта «сначала база» нет |
| MCP | Сервер: около 60 инструментов, профили, режимы, XML с бюджетом | Python-плагины: 1 инструмент search_memories. TS-хосты богаче: OpenCode — 10 инструментов, OpenClaw и Pi — 6, DeepSeek — 2. Плюс REST API, CLI и SDK |
| Перенос | Экспорт и импорт знаний пакетом, копирование между проектами | В OSS экспорта нет. На Platform — schema-driven export, batch и webhooks. Плагины держат локальный evidence.sqlite3 и flush на Platform; пакета знаний нет |
| AI Council | Mem0 | |
|---|---|---|
| Требования | Трассировка тестов к требованиям по меткам: покрытие и разрывы; «без теста» — тристейт, а не requirements-менеджмент | — |
| Тикеты | Jira, GitHub Issues, Redmine: чтение, разбор в знания, совет по тикету из графа | — |
| Работа на своей машине | Агент — Claude Code разработчика; Council подаёт контекст и правила через MCP и хуки; ревью локального диффа, разбор диффа, проверка диффа на правила | Это основной режим: плагины для Claude Code, Cursor, Codex, Kimi, Antigravity, OpenCode, OpenClaw, Pi и DeepSeek; библиотека в процессе приложения; MCP |
| Рабочее пространство | Задачи на VM в sysbox-контейнере, живут днями; человек ведёт из чата; наставник; дифф → коммит → push → MR | Задач и рабочего пространства нет: только память и захват сессии |
| PR | Ревью с публикацией в MR (GitHub, GitLab, Bitbucket) | — |
| Процесс | Машина состояний задачи: создана → анализ → в работе → MR → закрыта; содержимое шага задаёт человек | Процесса задачи нет. Есть петля capture → flush → extract → search/inject; на Platform add асинхронный (event_id и polling). Dream — фоновая консолидация памяти, а не задача |
| AI Council | Mem0 | |
|---|---|---|
| Code review | Отдельный сервис: смотрит изменившееся, вердикт по каждому файлу, второй проход, публикация в MR без дублей; ревью знаний отдельно | ИИ-ревью кода нет. Плагины записывают неудачные инструменты и команды как свидетельства, сервер — request_logs. Ревью памяти нет; неодобренных правил нет |
| Модели | Модель обязательна: на хосте два процесса через OAuth вендора: AI-чат и шесть фоновых задач (ревью, ревью знаний, разбор тикетов и др.). Без модели остаётся только статический анализ кода. | Своего LLM нет: нужен ключ провайдера. Извлечение — 1 вызов LLM на add; эмбеддинги — провайдер; опционально реранкер. 18 LLM, 11 эмбеддеров, 25 хранилищ, 5 реранкеров; по умолчанию OpenAI gpt-5-mini и text-embedding-3-small, локальный Qdrant в Python и in-memory в TS. Self-hosted образ несёт только OpenAI/Anthropic/Gemini (LLM) и OpenAI/Gemini (эмбеддер) |
| Агенты | Claude Code (хуки, MCP); MCP доступен любому клиенту | 5 нативных плагинов, portable-плагин и 4 TS-хоста; интеграции Vercel AI SDK, n8n, Zapier, Hermes, Strands; SDK, CLI, REST |
| Оценка | Телеметрия каждого вызова MCP и хука; повторный поиск агента — признак плохого первого ответа | Тесты: pytest, jest/vitest; один обязательный CI Gate. Прогон не выполнялся — зависимости не установлены. Публичного бенчмарка памяти в базе нет. Метрики кода Council: maintainability 0.75; из 7 fitness-функций проходят 2; 36 god classes, 905 long methods, 5 циклов, покрытие типов 0.52 |
| Гарантии | Гейты тестов, ревью, конвенции | Один обязательный CI Gate, релизный роутер по префиксу тега, PR-гейт «принятый issue», vouch, CLA; регрессионный тест сначала. 15 классов исключений и явные режимы деградации |
| AI Council | Mem0 | |
|---|---|---|
| Пользователи | Компании → участники → роли (можно на проект) → права. API-ключи компании. Данные разделены: запрос без компании отвергается. Лицензия и лимиты мест | Platform: организации, проекты и участники, app_id. OSS: один локальный конфиг. Self-hosted: пользователи и API-ключи, но память single-tenant — любой валидный ключ читает любую память. Ролей на проект, лицензии и мест в OSS нет |
| Интерфейс | Около 50 страниц: код, граф, ветки, качество, правила, ревью, знания, тикеты, задачи, MCP Live, администрирование, System Health | Python- и TS-SDK, два CLI (mem0-cli на Typer и @mem0/cli на Commander), плагины агентов, дашборд Next.js (requests, memories, entities, API keys, configuration, settings; analytics, categories, export и webhooks — locked-заглушки), REST и OpenAI-совместимый прокси |
| Мониторинг | Телеметрия каждого вызова MCP и хука без PII; около 22 правил Prometheus с тестами; System Health, трассировка | PostHog включён по умолчанию (MEM0_TELEMETRY=false выключает), request_logs и X-Request-ID, логи плагинов, статусы flush; Prometheus и System Health нет |
| Самовосстановление | Сверка Temporal с базой, уборка осиротевших данных, удаление проекта пачками, ночной бэкап и проверка восстановления, ретенция телеметрии | Карантин битого SQLite плагина, повтор flush (до 5 попыток), повтор вставки по одной, guard от повторного батча в delete_all, single-use refresh JTI. У сервера нет откатa конфига; ночного бэкапа и проверки восстановления нет |
| Хранилище | Neo4j, Qdrant, PostgreSQL по сервисам, Temporal, NATS, Redis | OSS: векторное хранилище — источник истины, SQLite history/messages, sidecar {collection}_entities. Server: pgvector и PostgreSQL mem0_app. Platform: managed |
| Изоляция | Sysbox-контейнер на задачу, одноразовые учётные данные для push, ревьюер знаний только на чтение, проверка прав в одном шлюзе, защита от SSRF | OSS: процесс приложения, песочницы нет. Плагины: локальный evidence store, fail-open. Server: JWT и API-ключи, но авторизация памяти single-tenant; org/project — только Platform |
| Поставка | Дистрибутив для self-hosted установки или SaaS; на машине разработчика — MCP и хуки | pip mem0ai, npm mem0ai, Docker Compose сервера, плагины, CLI, Platform SaaS; Apache-2.0 |
| Лицензия | Закрытая | Apache-2.0 (OSS); Platform закрыта |
Mem0 — слой памяти, а не понимания кода. Он хорошо делает то, чего у Council нет как отдельного продукта: универсальную память для приложений и агентов со скоупами, сроками жизни, гибридным поиском и готовыми плагинами для девяти агентских хостов. Council делает другое: сам разбирает код, держит знания, привязанные к позициям, авторитетные конвенции, ревью и задачи. Пересечение — доставка памяти агенту через хуки и MCP и гибридный поиск; понятия истины разные: Council проверяет запись против кода, Mem0 — против срока жизни и консолидации (на Platform) или никак (в OSS).
Где сильнее Mem0:
user_id/agent_id/run_id (на Platform ещё app_id) с защитой метаданных от подмены скоупа;explain, порогом и опциональным реранком;expiration_date) и на Platform — затухание, temporal reasoning, Dream-консолидация, профили, вебхуки, экспорт, batch;Где сильнее Council:
architecture_as_of, версионирование рёбер, SonarQube; ask_question отдаёт выдержки с FQN, а не пересказ моделью. Mem0 хранит память, но не архитектуру проекта.Могут ли работать вместе. Да, и это разные слои. Mem0 хранит память о пользователе, проекте и ходе сессии; Council — знания о коде и правила команды. Оба работают через хуки Claude Code и MCP, поэтому могут жить в одной сессии. Пересечение — инъекция контекста на первом промпте и перед инструментом: Mem0 подмешивает воспоминания, Council — правила и знания по файлу. Автоматической интеграции нет; практическая связка — Mem0 как память предпочтений и эпизодов, Council как источник истины о коде.
На живом демо покажем работу платформы на реальном проекте, а не шаблонную презентацию.