mcp-sage
Сервер MCP (Model Context Protocol), который предоставляет инструменты для отправки запросов либо в модель O3 OpenAI, либо в Gemini 2.5 Pro от Google на основе количества токенов. Инструменты встраивают все указанные пути к файлам (рекурсивно для папок) в запрос. Это полезно для получения вторых мнений или подробных обзоров кода из модели, которая может точно обрабатывать множество контекстов.
Обоснование
Я активно использую Claude Code. Это отличный продукт, который хорошо подходит для моего рабочего процесса. Новые модели с большим объемом контекста кажутся действительно полезными для работы с более сложными кодовыми базами, где требуется больше контекста. Это позволяет мне продолжать использовать Claude Code в качестве инструмента разработки, одновременно используя возможности большого контекста O3 и Gemini 2.5 Pro для расширения ограниченного контекста Claude Code.
Related MCP server: Gemini Thinking MCP Server
Выбор модели
Сервер автоматически выбирает подходящую модель на основе количества токенов и доступных ключей API:
Для меньших контекстов (≤ 200 тыс. токенов): использует модель O3 OpenAI (если установлен OPENAI_API_KEY)
Для больших контекстов (> 200 тыс. и ≤ 1 млн токенов): использует Gemini 2.5 Pro от Google (если установлен GEMINI_API_KEY)
Если содержимое превышает 1 млн токенов: возвращает информационную ошибку.
Резервное поведение:
Резервный ключ API :
Если OPENAI_API_KEY отсутствует, Gemini будет использоваться для всех контекстов в пределах лимита в 1 млн токенов.
Если GEMINI_API_KEY отсутствует, с помощью O3 можно обрабатывать только меньшие контексты (≤ 200 тыс. токенов)
Если оба ключа API отсутствуют, возвращается информационная ошибка.
Резервное сетевое подключение :
Если API OpenAI недоступен (ошибка сети), система автоматически возвращается к Gemini.
Это обеспечивает устойчивость к временным сбоям в работе сети у одного провайдера.
Для работы резервного варианта требуется установить GEMINI_API_KEY
Вдохновение
Этот проект черпает вдохновение из двух других проектов с открытым исходным кодом:
simonw/files-to-prompt для сжатия файлов
asadm/vibemode за идею и предложение отправить весь репозиторий в Gemini для предложений по оптовому редактированию
PhialsBasement/Chain-of-Recursive-Thoughts вдохновение для инструмента sage-plan
Обзор
В этом проекте реализован сервер MCP, предоставляющий три инструмента:
sage-opinion
Принимает в качестве входных данных приглашение и список путей к файлам/каталогам.
Упаковывает файлы в структурированный формат XML
Измеряет количество токенов и выбирает подходящую модель:
O3 для ≤ 200 тыс. токенов
Gemini 2.5 Pro для > 200 тыс. и ≤ 1 млн токенов
Отправляет объединенную подсказку + контекст в выбранную модель
Возвращает ответ модели
sage-review
Принимает в качестве входных данных инструкцию по изменению кода и список путей к файлам/каталогам.
Упаковывает файлы в структурированный формат XML
Измеряет количество токенов и выбирает подходящую модель:
O3 для ≤ 200 тыс. токенов
Gemini 2.5 Pro для > 200 тыс. и ≤ 1 млн токенов
Создает специализированную подсказку, указывающую модели форматировать ответы с использованием блоков ПОИСК/ЗАМЕНА
Отправляет объединенный контекст + инструкцию выбранной модели
Возвращает предложения по редактированию, отформатированные как блоки ПОИСК/ЗАМЕНА для легкой реализации
sage-plan
Принимает в качестве входных данных запрос на план внедрения и список путей к файлам/каталогам.
Упаковывает файлы в структурированный формат XML
Организует многомодельные дебаты для разработки высококачественного плана внедрения
Модели критикуют и совершенствуют планы друг друга в ходе нескольких раундов.
Возвращает выигрышный план внедрения с подробными шагами
sage-plan - Многомодельные и самостоятельные рабочие процессы
Инструмент sage-plan не запрашивает план у одной модели. Вместо этого он организует структурированные дебаты , которые длятся один или несколько раундов, а затем просит отдельную модель-судью (или ту же модель в режиме CoRT) выбрать победителя.
1. Многомодельный поток дебатов
Ключевые этапы дискуссии о мультимоделях:
Фаза настройки
Система определяет доступные модели, выбирает судью и распределяет бюджеты токенов.
Раунд 1
Фаза генерации — каждая доступная модель (A, B, C и т. д.) параллельно пишет свой собственный план внедрения.
Фаза критики — каждая модель рассматривает все другие планы (но не свои собственные) и параллельно выдает структурированную критику.
Округляет от 2 до N (N по умолчанию равно 3)
Фаза синтеза — каждая модель улучшает свой предыдущий план, используя полученные критические замечания (модели работают параллельно).
Проверка консенсуса — модель судьи оценивает сходство между всеми текущими планами.
Если оценка ≥ 0,9, дебаты прекращаются раньше времени и переходят к суждению.
Фаза критики — если консенсус не достигнут И мы не в финальном раунде, каждая модель снова критикует все остальные планы (параллельно)
Фаза суждения
После завершения всех раундов (или достижения раннего консенсуса) модель судьи (по умолчанию O3):
Выбирает один лучший план ИЛИ объединяет несколько планов в один лучший
Предоставляет оценку достоверности для своего выбора/синтеза
2. Поток самообсуждения — доступна одна модель
Когда доступна только одна модель, используется подход «Цепочка рекурсивных мыслей» (CoRT) :
Начальный всплеск — модель генерирует три отдельных плана, каждый из которых использует свой подход.
Раунды уточнения — для каждого последующего раунда (от 2 до N, по умолчанию N=3):
Модель рассматривает все предыдущие планы
Он критикует их изнутри, выявляя сильные и слабые стороны.
Создает один новый улучшенный план, который устраняет ограничения более ранних планов.
Окончательный выбор — последний сформированный план становится окончательным планом реализации.
Что на самом деле происходит в коде (краткая справка)
Фаза/Функциональность | Расположение кода | Примечания |
Генерация подсказок | prompts/debatePrompts.generatePrompt | Добавляет заголовок «# План внедрения (Модель X)» |
Критические подсказки | prompts/debatePrompts.critiquePrompt | Использует разделы «## Критика плана {ID}» |
Подсказки по синтезу | prompts/debatePrompts.synthesizePrompt | Модель пересматривает свой план |
Проверка консенсуса | дебатыOrchestrator.checkКонсенсус | Модель судьи возвращает JSON с
|
Суждение | prompts/debatePrompts.judgePrompt | Судья возвращает "# Окончательный план реализации" + уверенность |
Самостоятельная дискуссия | подсказки/debatePrompts.selfDebatePrompt |
Соображения производительности и стоимости
⚠️ Важно: инструмент sage-plan может:
Выполнение займет значительное время (5–10 минут для нескольких моделей)
Потребление значительных токенов API из-за многочисленных раундов дебатов
Более высокие затраты, чем при подходах с одной моделью
Типичное использование ресурсов:
Многомодельные дебаты: в 2–4 раза больше токенов, чем при подходе с одной моделью
Время обработки: 5-10 минут в зависимости от сложности и доступности модели.
Стоимость API: 0,30–1,50 долл. США за генерацию плана (зависит от используемых моделей и сложности плана)
Предпосылки
Node.js (v18 или более поздняя версия)
Ключ API Google Gemini (для более масштабных контекстов)
Ключ API OpenAI (для меньших контекстов)
Установка
Переменные среды
Установите следующие переменные среды:
OPENAI_API_KEY: ваш ключ OpenAI API (для модели O3).GEMINI_API_KEY: Ваш ключ API Google Gemini (для Gemini 2.5 Pro)
Использование
После сборки с помощью npm run build добавьте в конфигурацию MCP следующее:
Вы также можете использовать переменные окружения, заданные в другом месте, например, в профиле оболочки.
Подсказка
Чтобы получить второе мнение по какому-либо вопросу, просто попросите высказать второе мнение.
Чтобы получить обзор кода, попросите провести обзор кода или экспертную оценку.
Оба варианта выигрывают от предоставления путей к файлам, которые вы хотите включить в контекст, но если они не указаны, то хост-LLM, вероятно, сам определит, что именно следует включить.
Отладка и мониторинг
Сервер предоставляет подробную информацию о мониторинге через возможность ведения журнала MCP. Эти журналы включают:
Статистика использования токенов и выбор модели
Количество файлов и документов, включенных в запрос
Метрики времени обработки запроса
Информация об ошибке при превышении лимита токенов
Журналы отправляются с помощью метода notifications/message протокола MCP, что гарантирует, что они не будут мешать коммуникации JSON-RPC. Клиенты MCP с поддержкой журналирования будут отображать эти журналы соответствующим образом.
Примеры записей журнала:
Использование инструментов
мудрец-мнение Инструмент
Инструмент sage-opinion принимает следующие параметры:
prompt(строка, обязательно): запрос для отправки выбранной модели.paths(массив строк, обязательно): список путей к файлам для включения в качестве контекста
Пример вызова инструмента MCP (с использованием JSON-RPC 2.0):
Инструмент sage-review
Инструмент sage-review принимает следующие параметры:
instruction(строка, обязательно): Конкретные необходимые изменения или улучшения.paths(массив строк, обязательно): список путей к файлам для включения в качестве контекста
Пример вызова инструмента MCP (с использованием JSON-RPC 2.0):
Ответ будет содержать блоки SEARCH/REPLACE, которые вы можете использовать для реализации предлагаемых изменений:
Инструмент мудреца-плана
Инструмент sage-plan принимает следующие параметры:
prompt(строка, обязательно): Описание того, для чего вам нужен план внедренияpaths(массив строк, обязательно): список путей к файлам для включения в качестве контекста
Пример вызова инструмента MCP (с использованием JSON-RPC 2.0):
Ответ содержит подробный план реализации, включающий:
Обзор архитектуры высокого уровня
Конкретные шаги по внедрению
Необходимы изменения в файле
Стратегия тестирования
Потенциальные проблемы и пути их смягчения
Этот план использует коллективный интеллект нескольких моделей ИИ (или тщательную самопроверку одной моделью) и обычно содержит более надежные, продуманные и подробные рекомендации, чем подход с одним проходом.
Проведение тестов
Для тестирования инструментов:
Примечание : выполнение теста на мудрый план может занять 5–15 минут, поскольку он организует многомодельные дебаты.
Структура проекта
src/index.ts: Основная реализация сервера MCP с определениями инструментовsrc/pack.ts: Инструмент для упаковки файлов в структурированный формат XMLsrc/tokenCounter.ts: Утилиты для подсчета токенов в приглашенииsrc/gemini.ts: Реализация клиента API Geminisrc/openai.ts: Реализация клиента API OpenAI для модели O3src/debateOrchestrator.ts: Многомодельная оркестровка дебатов для sage-plansrc/prompts/debatePrompts.ts: Шаблоны для подсказок и инструкций по дебатамtest/run-test.js: Тест для инструмента sage-opiniontest/test-expert.js: Тест для инструмента sage-reviewtest/run-sage-plan.js: Тест для инструмента sage-plantest/test-o3.js: Тест логики выбора модели
Лицензия
МСК