# Multi-AI code review: GPT и Gemini прямо в Claude Code

> Open-source MCP-фреймворк: параллельные консультации OpenAI, Gemini, Qwen, DeepSeek. Fallback-цепочки, без API-ключей, проверено на проде.
> Author: Roman Belov · Published: 2026-02-20 · Source: https://futurecraft.pro/ru/blog/claude-concilium-multi-agent-code-review/

Claude Code решает задачу. Первая попытка, вторая, третья. Тесты падают. Баг воспроизводится. Архитектурное решение выглядит нормально, но что-то не так. Один мозг уперся в стену.

Знакомая ситуация для всех, кто пишет код с AI-ассистентами. [Claude Code](/ru/blog/claude-code-complete-guide/) справляется с большинством задач, но у любой модели есть слепые зоны. Race condition, который она упорно не видит. Подход к оптимизации, который казался правильным три итерации назад. Архитектурный выбор, который нужно валидировать.

Claude Concilium решает это через параллельные консультации с другими LLM. Задаете вопрос, одновременно получаете ответ от OpenAI и Gemini, сравниваете, находите консенсус. Все через стандартный [MCP-протокол](/ru/blog/mcp-production-custom-servers/), без выхода из 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 и возвращает конкретный тип: квота, авторизация, неподдерживаемая модель, таймаут. Это позволяет принимать правильное решение: квота -- переключиться, авторизация -- переавторизоваться, таймаут -- процесс уже убит, идем дальше. Тот же принцип fallback, что и в [мультипровайдерной LLM-архитектуре](/ru/blog/multi-provider-llm-architecture/).

### Безопасность процессов

Каждый сервер запускает CLI через `spawn()` (не `exec()`), что исключает shell injection. Промпты передаются как аргументы, а не интерполируются в строку команды.

Для таймаутов используется паттерн SIGTERM/SIGKILL: сначала мягкий сигнал, через 5 секунд принудительное завершение. Буфер вывода ограничен 10 МБ, чтобы зависший процесс не съел память.

```javascript
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». Оба указали на одно и то же. Фикс очевиден.

## Быстрый старт

Установка занимает минуту:

```bash
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`:

```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:
```bash
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](https://github.com/spyrae/claude-concilium) -- MIT, три MCP-сервера, smoke test, документация, skill для Claude Code.

Каждый сервер можно использовать отдельно. Не нужен весь фреймворк, чтобы получить MCP-доступ к Gemini или OpenAI из Claude Code.

---

*Нужна помощь с мультиагентными AI-системами или code review pipeline? Я помогаю стартапам внедрять AI-решения и строить продукты — [belov.works](https://belov.works).*
