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.
skillmem — локальный слой процедурной памяти для кодирующих агентов (Claude Code, Codex CLI, Cursor, Windsurf, Gemini CLI, opencode). Он хранит не факты о пользователе, а процедуры: триггер, шаги, результат, уроки. Запись стоит $0: нет LLM-вызовов на write/read, данные лежат в SQLite, семантика — локальная ONNX-модель на 384 измерения. Петля продукта: learn → recall → reinforce → decay. Силу двигает только внешнее свидетельство (тест прошёл, diff принят, человек подтвердил); самооценка агента — нет. Ночное затухание уводит записи active → stale → archived. Есть модель доверия (origin, trusted_at, owner_seal, рамка UNTRUSTED), пять хуков Claude Code (авто-recall, tool-recall, session-recap, pending-rules), 9 MCP-инструментов, HTTP API с токенами, CLI, экспорт в Markdown и 16 инвариантов с property-тестами. Apache-2.0.
Это ближайший к Council по слою памяти и доставки, но не по пониманию кода: skillmem хранит процедуры и заметки, а не знания, привязанные к позициям в коде. Council строит граф и проверяет знание о коде; skillmem проверяет происхождение текста и одобрение владельца.
| AI Council | skillmem | |
|---|---|---|
| Кто читает код | Council сам: разбирает репозитории и строит граф. Модель при анализе не вызывается | Никто: skillmem не анализирует код. Он хранит текстовые процедуры и заметки; код в них может быть цитатой, но индекса кода нет |
| Когда | При создании проекта, при push в main (опрос), по кнопке, ночью; после правки файла агентом пересчитываются файл и зависимые | В момент записи процедуры агентом (mem_learn) или recap-ом; никакого разбора кода |
| Что извлекает | Слои L0–L10: стек, структура, зависимости и циклы, метрики и вызовы, данные (ORM, DDL), архитектура и запрещённые зависимости, паттерны, стиль, DDD, связь файлов по правкам, смеллы, качество ISO 25010, диаграммы | Ничего о структуре кода: только trigger/steps/outcome/lessons, заметки, feedback и recap-выжимки сессий |
| Языки | Python, PHP, TypeScript, JavaScript, Java, Kotlin, C#, C, C++ — с полным разбором слоёв | Не применимо: память язык-агностична |
| Несколько репозиториев | Проект из нескольких репозиториев с общим графом | Поле project в записи; общего графа нет |
| История | Рёбра версионируются после каждого прогона; architecture_as_of — архитектура на дату | История записи — hash-chain в memory_history; истории кода нет |
| Поиск | Поиск по смыслу и regex, find_usages, find_path, граф зависимостей, похожие реализации; ask_question — выдержки из базы без пересказа моделью | Гибридный поиск по памяти: FTS5 BM25 + Snowball + локальные эмбеддинги, RRF k=60, дедупликация recap-записей ×0.5, бонус силы. По коду не ищет |
| AI Council | skillmem | |
|---|---|---|
| База знаний | Решения, заметки, диаграммы Mermaid, журналы изменений. Каждая запись привязана к коду и приходит агенту, когда он трогает нужный файл | Процедурная память: skill (trigger/steps/outcome/lessons), feedback, user, note, reference, project, document, session-recap. Записи не привязаны к позициям в коде; есть project, topics, tags |
| Актуальность | Запись держит место в коде на своей ветке и уходит на перепроверку, когда меняется код под ней, сама запись, появляется похожая или ветку сливают. Ревьюер обязан привести цитату; итог — пометка | Устаревание — по бездействию: сила ×0.85 за порог, active → stale (>30 дней) → archived (>90 дней и сила на полу). Архив исключён из поиска, но восстановим. Проверки «соответствует ли код» нет |
| Ветки | Знания и граф хранятся по веткам; агент видит свою ветку, родителя и слитое; при слиянии запись переезжает | Поле project; знаний по веткам и слияния нет. Рабочая копия — один SQLite |
| Правила | Конвенции трёх областей: к сущностям кода, к путям (действуют и на ещё не созданный файл), ко всему проекту. MUST/SHOULD, состояния «черновик», «отставлено», «удалено». Проверка перед правкой и по диффу | Правила — это записи user/feedback; они не имеют уровней MUST/SHOULD, привязки к сущностям и путям и проверки диффа. Доверие к ним — trusted_at (явное одобрение владельца), owner_seal (не снимается) и рамка UNTRUSTED для неодобренного |
| Как доходит до агента | Хуки Claude Code: правила проекта к каждому сообщению, широкий канал перед действием, контекст файла на Read/Edit/Bash, чек-лист в конце; гейт «сначала база» | Пять хуков Claude Code: SessionStart (mcp-guard, inject, session-history), UserPromptSubmit (verify-gate, auto-recall), PreToolUse (tool-recall), Stop (session-recap, pending-rules), SessionEnd (session-recap). Recall бюджетный (1500/1000 символов), fail-open, tool-recall — только лексический (без модели) |
| MCP | Сервер: около 60 инструментов, профили, режимы, XML с бюджетом | Сервер: 9 инструментов — mem_search, mem_get, mem_list, mem_write, mem_update, mem_learn, mem_recall, mem_reinforce, mem_pin |
| Перенос | Экспорт и импорт знаний пакетом, копирование между проектами | export-all в Markdown-дамп с манифестом, import-vault, migrate из auto-memory, packs из SKILL.md; round-trip проверяется инвариантом |
| AI Council | skillmem | |
|---|---|---|
| Требования | Трассировка тестов к требованиям по меткам: покрытие и разрывы; «без теста» — тристейт, а не requirements-менеджмент | — |
| Тикеты | Jira, GitHub Issues, Redmine: чтение, разбор в знания, совет по тикету из графа | — |
| Работа на своей машине | Агент — Claude Code разработчика; Council подаёт контекст и правила через MCP и хуки; ревью локального диффа, разбор диффа, проверка диффа на правила | Это основной режим: память для Claude Code, Codex CLI, Cursor, Windsurf, Gemini CLI, opencode через хуки и MCP |
| Рабочее пространство | Задачи на VM в sysbox-контейнере, живут днями; человек ведёт из чата; наставник; дифф → коммит → push → MR | Задач и рабочего пространства нет: только память |
| PR | Ревью с публикацией в MR (GitHub, GitLab, Bitbucket) | — |
| Процесс | Машина состояний задачи: создана → анализ → в работе → MR → закрыта; содержимое шага задаёт человек | Процесса задачи нет; есть петля learn → recall → reinforce → decay и ночное обслуживание |
| AI Council | skillmem | |
|---|---|---|
| Code review | Отдельный сервис: смотрит изменившееся, вердикт по каждому файлу, второй проход, публикация в MR без дублей; ревью знаний отдельно | ИИ-ревью кода нет. Ревью есть только у памяти: pending-rules показывает владельцу неодобренные правила, одобряю ставит trusted_at; recap-суммаризатор запускается без инструментов |
| Модели | Модель обязательна: на хосте два процесса через OAuth вендора: AI-чат и шесть фоновых задач (ревью, ревью знаний, разбор тикетов и др.). Без модели остаётся только статический анализ кода. | На write/read — ни одного LLM-вызова: локальная ONNX-модель 384d и BM25. Recap вызывает claude -p (Haiku по умолчанию) с обязательными --tools "" и --strict-mcp-config; если CLI не знает safety-флаг — recap не запускается |
| Агенты | Claude Code (хуки, MCP); MCP доступен любому клиенту | Хуки и MCP для Claude Code, Codex CLI, Cursor, Windsurf, Gemini CLI, opencode; CLI и HTTP API |
| Оценка | Телеметрия каждого вызова MCP и хука; повторный поиск агента — признак плохого первого ответа | LongMemEval: hit@5 0.871 (0.889 после 0.13), MRR 0.622, n=479; A/B по исходу: с recall 17–18/18, без — 6–7/18. Выборки малые, БД авторская — заявлено в базе |
| Гарантии | Гейты тестов, ревью, конвенции | 16 инвариантов (docs/INVARIANTS.md), property-тесты на Hypothesis, release gate требует, чтобы новый регрессионный тест падал на родителе |
| AI Council | skillmem | |
|---|---|---|
| Пользователи | Компании → участники → роли (можно на проект) → права. API-ключи компании. Данные разделены: запрос без компании отвергается. Лицензия и лимиты мест | Один пользователь, локально. HTTP API умеет несколько токенов с visibility public/shared/private, но организаций, ролей и лицензии нет |
| Интерфейс | Около 50 страниц: код, граф, ветки, качество, правила, ревью, знания, тикеты, задачи, MCP Live, администрирование, System Health | CLI skillmem (~40 команд), MCP (9 инструментов), HTTP FastAPI, хуки, плагин Claude Code; отдельного UI нет |
| Мониторинг | Телеметрия каждого вызова MCP и хука без PII; около 22 правил Prometheus с тестами; System Health, трассировка | hooks-status (runs/skips/failed), doctor, логи хуков, бенчмарки; Prometheus и System Health нет |
| Самовосстановление | Сверка Temporal с базой, уборка осиротевших данных, удаление проекта пачками, ночной бэкап и проверка восстановления, ретенция телеметрии | Fail-open хуки с watchdog, атомарные записи, недельный export-all в vault, import-vault, ночное обслуживание (decay/sweep/бэкап), изоляция БД по db_id, JSONL-бэкап архива |
| Хранилище | Neo4j, Qdrant, PostgreSQL по сервисам, Temporal, NATS, Redis | Один SQLite (schema v12) + body-файлы, content-addressed + Markdown vault + локальная ONNX-модель |
| Изоляция | Sysbox-контейнер на задачу, одноразовые учётные данные для push, ревьюер знаний только на чтение, проверка прав в одном шлюзе, защита от SSRF | Локальная БД, scrub секретов на записи, рамка UNTRUSTED, owner-гейты по TTY, токены 0600, конфайнмент путей; песочницы нет — TTY назван защитой от случайности, не стеной |
| Поставка | Дистрибутив для self-hosted установки или SaaS; на машине разработчика — MCP и хуки | pip install 'skillmem[semantic]', install.sh/install.ps1, плагин Claude Code, MCP Registry, Docker; Apache-2.0 |
| Лицензия | Закрытая | Apache-2.0 |
skillmem — ближайший к Council по слою памяти и доставки, но не по пониманию кода. Он хранит процедуры и уроки, а Council — знания о решениях, привязанные к позициям в коде, и правила команды. Понятия истины у них разные: Council проверяет запись против кода цитатой ревьюера; skillmem проверяет происхождение текста и явное одобрение владельца. Оба подхода дополняют друг друга.
Где сильнее skillmem:
origin, trusted_at, owner_seal, рамка UNTRUSTED, owner-гейты по TTY; неодобренный текст не становится правилом;import-vault, packs, migrate с round-trip;Где сильнее Council:
architecture_as_of, версионирование рёбер, внешний анализатор; ask_question отдаёт выдержки с FQN. skillmem работает с текстом, не с архитектурой.Могут ли работать вместе. Да, и это разные слои. skillmem хранит «как делать» — процедуры, уроки, подтверждённые правила; Council хранит «почему так» — решения, привязанные к коду, и конвенции команды. Оба работают через хуки Claude Code и MCP, поэтому могут жить в одной сессии. Пересечение — доставка на промпт/инструмент: skillmem подмешивает процедуры и feedback, Council — правила и знания по файлу. Автоматической интеграции нет, но их легко подключить к одному агенту.
На живом демо покажем работу платформы на реальном проекте, а не шаблонную презентацию.