Обзоры инструментов

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 неплохо работает как запасной вариант. Когда два агента независимо друг от друга указывают на одну проблему, уверенность в находке резко растет.

На практике мульти-агентный подход помогает в четырех сценариях:

  1. Баг не ловится с третьей попытки. Claude Code ходит по кругу. Свежий взгляд от другой модели часто находит то, что первая пропустила.
  2. Архитектурное решение. Два подхода выглядят равноценно. Второе мнение дает дополнительные аргументы.
  3. Code review после фикса. Независимая проверка ловит edge cases, которые автор не заметил.
  4. Оптимизация. Когда цена ошибки высока, лучше потратить 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%.