Skip to main content

Multi-model deliberation agent for OpenRouter Fusion on free models — CLI + MCP server for opencode

Project description

openrouter-fusion-agent

Агент много-модельного обсуждения для OpenRouter Fusion, работающий полностью на бесплатных моделях. Это CLI и MCP-сервер, который подключается к opencode (или любому MCP-клиенту).

OpenRouter Fusion запускает панель моделей параллельно (у каждой — веб-поиск), судья сравнивает их ответы и возвращает структурированный анализ (консенсус, противоречия, уникальные идеи, слепые зоны), а внешняя модель пишет более сильный финальный ответ. У OpenRouter это по умолчанию дорогие платные модели; проект перенаправляет поток на бесплатные (:free) и добавляет защиту от лимитов free-тиера.

Возможности

  • 100% бесплатные модели (варианты :free) — $0 за запуск.
  • Два пресета: quality (мощная разнородная панель) и budget (мельче/быстрее).
  • Budget-aware: читает GET /api/v1/key, блокирует при отрицательном балансе (HTTP 402), учитывает дневной лимит 50/1000 и 20 RPM, делает retry на 429.
  • MCP-сервер (stdio) с инструментами fusion_query и fusion_status.
  • CLI: разовый запрос + интерактивный REPL.
  • mypy strict, pytest, MIT.

Как это работает

вопрос ─▶ внешняя модель ─openrouter:fusion─▶ панель (≤3 free-модели + web_search)
                                                 │
                                                 ▼
                              судья (free-модель + web_search) ─анализ─▶ внешняя модель ─▶ финальный ответ

Внешняя модель вызывает серверный инструмент openrouter:fusion. Судья возвращает структурированный анализ, который внешняя модель использует для финального ответа. Агент возвращает финальный ответ, стоимость и список участвовавших моделей.

Установка

Требуется Python ≥ 3.11 и ключ OpenRouter (https://openrouter.ai/keys).

Без установки (пакет уже на PyPI):

uvx openrouter-fusion-agent "Сравни ridge, lasso и elastic-net регрессию"

Установка:

pip install openrouter-fusion-agent          # или: uv tool install openrouter-fusion-agent

Ключ API нужен только для прогонов fusion (install-skill и print-config работают без него). Получите ключ на https://openrouter.ai/keys.

Надёжнее держать ключ в файле — это работает и для CLI, и для opencode, и не зависит от оболочки:

mkdir -p ~/.config/openrouter && umask 077
printf '%s' "sk-or-v1-..." > ~/.config/openrouter/api_key
  • opencode (MCP): opencode.json читает ключ из файла через {file:...} (см. сниппет ниже) — ничего экспортировать не нужно.
  • CLI: добавьте в ~/.zshrc (или ~/.bashrc) и откройте новый терминал:
export OPENROUTER_API_KEY="$(cat ~/.config/openrouter/api_key)"

Альтернатива — {env:OPENROUTER_API_KEY} в opencode.json, если ключ уже экспортирован в оболочке, из которой запускается opencode.

Использование

CLI:

fusion-agent "Сравни ridge, lasso и elastic-net. Где какая сильнее?"

fusion-agent              # интерактивный REPL
fusion> /status
fusion> /quit

Команды REPL: /status, /force on|off, /panel 1|2|3, /preset quality|budget, /budget <n>, /help, /quit. Флаги: --force on|off (по умолчанию on), --panel N, --preset quality|budget, --budget N.

opencode (MCP) — получить готовый блок для opencode.json:

uvx openrouter-fusion-agent print-config

или вписать вручную:

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "fusion": {
      "type": "local",
      "command": ["uvx", "openrouter-fusion-agent", "--mcp"],
      "enabled": true,
      "environment": { "OPENROUTER_API_KEY": "{file:~/.config/openrouter/api_key}" },
      "timeout": 10000
    }
  },
  "experimental": { "mcp_timeout": 90000 }
}

После правки конфига перезапустите opencode.

Скилл (опционально). Чтобы opencode сам вызывал fusion по подходящим запросам (исследование, сравнение, «аргументы за и против»), установите файл-подсказку:

uvx openrouter-fusion-agent install-skill            # в текущий проект: .opencode/skills/fusion/
uvx openrouter-fusion-agent install-skill --global   # глобально: ~/.config/opencode/skills/fusion/
uvx openrouter-fusion-agent install-skill --force    # перезаписать существующий

Работает на Linux, macOS и Windows (WSL). Для нестандартного расположения конфига opencode задайте OPENCODE_CONFIG_DIR — команда учтёт его.

Пресеты free-моделей

Панель сознательно составлена из разных семейств — ответы меньше коррелируют.

Пресет Внешняя (решает + пишет) Панель (параллельно) Судья (анализ)
quality (по умолчанию) qwen/qwen3-next-80b-a3b-instruct:free openai/gpt-oss-120b:free, nvidia/nemotron-3-ultra-550b-a55b:free, meta-llama/llama-3.3-70b-instruct:free nvidia/nemotron-3-ultra-550b-a55b:free
budget qwen/qwen3-next-80b-a3b-instruct:free google/gemma-4-26b-a4b-it:free, nvidia/nemotron-3-nano-30b-a3b:free, openai/gpt-oss-20b:free nvidia/nemotron-3-super-120b-a12b:free

Один прогон ≈ len(panel) + 2 запросов (5 для панели по умолчанию).

Лимиты free-тиера

Бесплатные модели OpenRouter: 20 запросов/мин и дневной лимит 50/день при балансе < $10 либо 1000/день при ≥ $10 (сами вызовы остаются $0). Отрицательный баланс даёт HTTP 402 даже на free-моделях. Агент читает GET /api/v1/key, определяет is_free_tier и баланс и соблюдает лимиты, чтобы не падать посреди прогона. Совет: пополнение ≥ $10 снимает дневной лимит до 1000, не делая вызовы платными.

Лицензия

MIT © Chumikov

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

openrouter_fusion_agent-0.1.3.tar.gz (81.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

openrouter_fusion_agent-0.1.3-py3-none-any.whl (21.7 kB view details)

Uploaded Python 3

File details

Details for the file openrouter_fusion_agent-0.1.3.tar.gz.

File metadata

  • Download URL: openrouter_fusion_agent-0.1.3.tar.gz
  • Upload date:
  • Size: 81.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.23 {"installer":{"name":"uv","version":"0.11.23","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for openrouter_fusion_agent-0.1.3.tar.gz
Algorithm Hash digest
SHA256 5008141897038ff641c8d3709a53729a52770619b792749314e1c6d52db550ff
MD5 90e757e5b2d3e6332f019e3ceb6d0674
BLAKE2b-256 2f6f206a5fdb195f6ca9e7677b92def09d47398f145c9fc3360d652b37239f32

See more details on using hashes here.

File details

Details for the file openrouter_fusion_agent-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: openrouter_fusion_agent-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 21.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.23 {"installer":{"name":"uv","version":"0.11.23","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for openrouter_fusion_agent-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 b09627b5047abcbddd4609ac15907a97343129db2d5257c4c3aafb42fadb1a11
MD5 956374c1fc35d4a1d0cff10f05917ef6
BLAKE2b-256 a017bab0de787cb47282bf905b5986bcc7eeeb400e1499ef98753427b6981c9a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page