Claude Concilium: второе мнение от GPT и Gemini прямо в Claude Code
Что такое Claude Concilium?
Claude Concilium — open-source фреймворк для мультиагентных консультаций, который запускает параллельные запросы к GPT, Gemini, Qwen и DeepSeek прямо из Claude Code через три MCP-сервера. Позволяет разработчикам получать одновременные вторые мнения от нескольких LLM без API-ключей, используя трёхитерационный протокол для достижения консенсуса.
TL;DR
- -Claude Concilium запускает параллельные консультации GPT, Gemini и Qwen через 3 MCP-сервера — без API-ключей
- -Gemini CLI — до 1000 запросов в день бесплатно, OpenAI через ChatGPT Plus — weekly credits, оба без оплаты
- -Fallback-цепочки автоматически переключают провайдера при квоте или таймауте: OpenAI → Qwen → DeepSeek
- -Протокол из 3 итераций (сбор мнений → разрешение разногласий → финальный консенсус) исключает слепое согласие моделей
- -Когда использовать: баг не исправляется с третьей попытки, архитектурный выбор, критический code review
Claude Code решает задачу. Первая попытка, вторая, третья. Тесты падают. Баг воспроизводится. Архитектурное решение выглядит нормально, но что-то не так. Один мозг уперся в стену.
Знакомая ситуация для всех, кто пишет код с AI-ассистентами. Claude Code справляется с большинством задач, но у любой модели есть слепые зоны. Race condition, который она упорно не видит. Подход к оптимизации, который казался правильным три итерации назад. Архитектурный выбор, который нужно валидировать.
Claude Concilium решает это через параллельные консультации с другими LLM. Задаете вопрос, одновременно получаете ответ от OpenAI и Gemini, сравниваете, находите консенсус. Все через стандартный MCP-протокол, без выхода из Claude Code.
Зачем: один мозг vs несколько
У каждой LLM свои сильные стороны. GPT хорош в коротких точечных задачах. Gemini дает контекстное окно в 1M токенов для анализа больших diff. Qwen неплохо работает как запасной вариант. Когда два агента независимо друг от друга указывают на одну проблему, уверенность в находке резко растет.
На практике мульти-агентный подход помогает в четырех сценариях:
- Баг не ловится с третьей попытки. Claude Code ходит по кругу. Свежий взгляд от другой модели часто находит то, что первая пропустила.
- Архитектурное решение. Два подхода выглядят равноценно. Второе мнение дает дополнительные аргументы.
- Code review после фикса. Независимая проверка ловит edge cases, которые автор не заметил.
- Оптимизация. Когда цена ошибки высока, лучше потратить 30 секунд на второй запрос, чем час на отладку.
Как устроен Concilium
Три кастомных MCP-сервера оборачивают CLI-инструменты провайдеров:
Claude Code ──┬── mcp-openai (codex exec) ──► GPT
├── mcp-gemini (gemini -p) ──► Gemini
└── mcp-qwen (qwen -p) ──► Qwen
Каждый сервер — отдельный Node.js-процесс, который принимает MCP-вызовы и транслирует их в CLI-команды. Почему CLI, а не прямые API-вызовы? Потому что CLI сами обрабатывают OAuth: codex login авторизует через аккаунт ChatGPT, gemini через Google-аккаунт. Не нужны API-ключи для двух основных провайдеров.
Четвертый провайдер, DeepSeek, подключается через готовый npm-пакет deepseek-mcp-server. Для него нужен API-ключ, но он дешевый и всегда доступен.
Fallback-цепочки
Бесплатные тарифы имеют лимиты. OpenAI на ChatGPT Plus дает еженедельный кредит, Gemini — 1000 запросов в день. Когда лимит исчерпан, сервер возвращает структурированную ошибку QUOTA_EXCEEDED, и оркестратор переключается на следующий в цепочке:
OpenAI ──► (QUOTA?) ──► Qwen ──► (timeout?) ──► DeepSeek
Gemini ──► (QUOTA?) ──► Qwen ──► (timeout?) ──► DeepSeek
Каждый MCP-сервер детектирует ошибки по паттернам в выводе CLI и возвращает конкретный тип: квота, авторизация, неподдерживаемая модель, таймаут. Это позволяет принимать правильное решение: квота — переключиться, авторизация — переавторизоваться, таймаут — процесс уже убит, идем дальше.
Безопасность процессов
Каждый сервер запускает CLI через spawn() (не exec()), что исключает shell injection. Промпты передаются как аргументы, а не интерполируются в строку команды.
Для таймаутов используется паттерн SIGTERM/SIGKILL: сначала мягкий сигнал, через 5 секунд принудительное завершение. Буфер вывода ограничен 10 МБ, чтобы зависший процесс не съел память.
const timer = setTimeout(() => {
proc.kill("SIGTERM");
killTimer = setTimeout(() => {
if (!proc.killed) proc.kill("SIGKILL");
}, 5000);
}, timeoutMs);
Протокол консультации
Skill /ai-concilium описывает порядок работы:
Итерация 1: сбор мнений. Формулируете проблему коротко (до 500 символов), отправляете параллельно на OpenAI и Gemini. Сравниваете: что общего (высокая уверенность), в чем расхождения (нужно уточнить), какие новые идеи появились.
Итерация 2: разрешение разногласий. Если агенты дали противоположные рекомендации, отправляете уточняющий вопрос обоим: «Агент A предложил X, агент B предложил Y. Какой подход лучше для нашего контекста?»
Итерация 3: финальный консенсус. Для критичных решений: «Вот финальный план. Есть замечания?»
На практике 80% консультаций заканчиваются на первой итерации. Агенты соглашаются, и можно работать. Оставшиеся 20% требуют одного раунда уточнений.
Пример: code review
Типичный сценарий. Исправили race condition в edge function. Нужно проверить, что фикс корректный.
# Параллельно, два MCP-вызова:
mcp__openai__openai_chat:
prompt: "Code review: Fixed race condition in edge function.
Changed from parallel writes to sequential with lock.
Check: 1) fix correct? 2) new issues? 3) edge cases?"
timeout: 90
mcp__gemini__gemini_chat:
prompt: "Senior code reviewer. Review this diff:
[diff]
Focus on reliability, error handling, race conditions.
Verdict: APPROVE or REQUEST_CHANGES."
timeout: 90
OpenAI отвечает за 15 секунд: «Фикс корректный, но рассмотри случай, когда lock не освобождается при exception». Gemini за 20 секунд: «APPROVE с замечанием: добавь try/finally для гарантии освобождения lock». Оба указали на одно и то же. Фикс очевиден.
Быстрый старт
Установка занимает минуту:
git clone https://github.com/spyrae/claude-concilium.git
cd claude-concilium
cd servers/mcp-openai && npm install && cd ../..
cd servers/mcp-gemini && npm install && cd ../..
cd servers/mcp-qwen && npm install && cd ../..
# Проверка (CLI не нужны для этого шага)
node test/smoke-test.mjs
Если все три сервера отвечают PASS, добавляете их в .mcp.json:
{
"mcpServers": {
"mcp-openai": {
"type": "stdio",
"command": "node",
"args": ["/path/to/servers/mcp-openai/server.js"],
"env": { "CODEX_HOME": "~/.codex-minimal" }
},
"mcp-gemini": {
"type": "stdio",
"command": "node",
"args": ["/path/to/servers/mcp-gemini/server.js"]
}
}
}
Для авторизации:
- OpenAI:
codex login(нужна подписка ChatGPT Plus) - Gemini: запустите
geminiв терминале, авторизуйтесь через Google
Опционально: скопируйте skill для Claude Code:
cp skill/ai-concilium.md ~/.claude/commands/ai-concilium.md
Теперь /ai-concilium доступен как команда в Claude Code.
Что внутри каждого сервера
mcp-openai
Два инструмента:
openai_chat— отправить промпт на GPT черезcodex exec. Таймаут 90 секунд.openai_review— code review черезcodex review, работает с git diff. Таймаут 120 секунд.
Использует CODEX_HOME для отдельного минимального конфига (без загрузки MCP-серверов внутри codex, что ускоряет запуск).
mcp-gemini
Два инструмента:
gemini_chat— быстрый Q&A черезgemini -p. Таймаут 90 секунд.gemini_analyze— глубокий анализ с контекстом до 1M токенов. Таймаут 180 секунд.
Работает через Google OAuth, API-ключ не нужен. Gemini CLI дает до 1000 запросов в день бесплатно (на модели Flash; для Pro лимиты ниже).
mcp-qwen
Один инструмент:
qwen_chat— промпт черезqwen -p. Три модели:qwen-turbo(быстрый),qwen-plus(глубокий анализ),qwen-long(длинный контекст).
Работает через DashScope (API-ключ или qwen login).
Где сейчас используется
Concilium родился из production-рабочего процесса. В проекте JourneyBay (travel app на Flutter + Supabase) консультация с AI Concilium запускается автоматически:
- после каждого фикса — code review параллельно через OpenAI и Gemini;
- после третьей неудачной попытки решить баг — обязательная эскалация.
По нашему опыту, мульти-агентный review ловит примерно 15-20% проблем, которые основной агент пропустил. Чаще всего это edge cases в error handling и неочевидные race conditions.
Ограничения
- Зависимость от CLI. Если
codexилиgeminiне установлены или сломаны после обновления, сервер не работает. Smoke test проверяет MCP-протокол, но не CLI. - Лимиты бесплатных тарифов. ChatGPT Plus дает ограниченные еженедельные кредиты. Gemini — 1000 запросов в день. При активном использовании лимиты кончаются.
- Латентность. Каждый запрос — это запуск процесса, ожидание ответа от LLM-провайдера, парсинг. От 10 до 60 секунд. Для быстрых задач это оверкилл.
- Нет контекста между вызовами. Каждый MCP-вызов независимый. Сервер не хранит историю.
Репозиторий
github.com/spyrae/claude-concilium — MIT, три MCP-сервера, smoke test, документация, skill для Claude Code.
Каждый сервер можно использовать отдельно. Не нужен весь фреймворк, чтобы получить MCP-доступ к Gemini или OpenAI из Claude Code.
FAQ
Как контекстное окно Gemini в 1M токенов меняет экономику мультиагентного ревью по сравнению с GPT-4o?
Для ревью крупных pull request (10 000+ строк) инструмент gemini_analyze с таймаутом 180 секунд может принять весь контекст кодовой базы за один вызов, тогда как GPT-4o требует разбивки на части по ~128K токенов и нескольких последовательных запросов. На практике Gemini дешевле per-token на больших входных данных и анализирует полный контекст целиком — это снижает риск пропустить межфайловые проблемы. Преимущество GPT-4o — стабильность ответов и меньшая латентность на сфокусированных, хорошо ограниченных промптах до 10K токенов.
Что происходит с очередью консультаций, если одновременно исчерпаны дневные лимиты и OpenAI, и Gemini?
Обе цепочки проходят через Qwen, а затем через DeepSeek согласно fallback-конфигурации. DeepSeek требует API-ключ, но не имеет дневного бесплатного лимита — что делает его надёжным последним резервом. Если DeepSeek тоже недоступен (ошибка сети, невалидный ключ), оркестратор возвращает структурированную ошибку с перечислением упавших провайдеров и причин — сессия не зависает молча. В продакшн-использовании JourneyBay одновременное исчерпание квот у обоих основных провайдеров случалось примерно дважды в месяц в периоды интенсивного кодинга.
Почему протокол из 3 итераций именно предотвращает «слепое согласие» моделей, а не просто усредняет ответы?
Модели, обученные на схожих данных, склонны сходиться к одному уверенно звучащему неправильному ответу при одном и том же неоднозначном промпте — явление, которое иногда называют «эхо-камерой моделей». Вторая итерация протокола явно выявляет разногласия и просит каждую модель отстоять свою позицию против аргументов другой. Этот состязательный фрейм заставляет каждую модель рассуждать о конкретном контраргументе, а не независимо генерировать один и тот же шаблонный ответ. По внутренним тестам, пропуск итерации 2 снижал процент обнаружения тонких race conditions примерно на 40%.