AI Vibe Craft
← Назад к AI Vibe News

Редакция 5 июня 2026 г.

Разборы

Один localhost вместо зоопарка API: Qwen и OpenRouter в Claude Code и Codex

Один localhost вместо зоопарка API: Qwen и OpenRouter в Claude Code и Codex.

локальный gateway Qwen и OpenRouter отдают Chat Completions в духе OpenAI, а Claude Code и Codex ждут свои протоколы — поэтому «ещё один API-ключ» не решает задачу vibe coding с несколькими агентами. Разработчик codekingai описывает обходной путь: локальный CliGate держит инструменты на localhost, провайдеров подключает один раз, а перевод протоколов берёт на себя gateway.

Почему «OpenAI-compatible» не спасает coding tools

DashScope у Qwen и единый каталог OpenRouter выглядят простыми, пока не подключаешь реальные AI coding tools. Формулировка из поста точная: «OpenAI-compatible» не означает «compatible with everything I use».

Разные клиенты говорят на разных языках:

  • Claude Code ожидает протокол Anthropic Messages;
  • Codex — форму Responses;
  • остальные часто тянут Chat Completions.

Боль не в очередном ключе, а в том, что каждый CLI хочет «владеть» провайдером: свой base URL, свой ключ, свои алиасы моделей. Для оркестрации агентов это быстро превращается в зоопарк конфигов — именно от этого автор уходит к единой точке на локальной машине.

CliGate как локальный control plane для агентов

Желаемая картина простая: инструменты продолжают смотреть на localhost; провайдеры добавляются один раз; имена моделей маппятся или проходят транзитом в одном месте; конвертация протоколов — за gateway.

CliGate в этом сценарии — локальный control plane для AI coding tools. На один локальный сервер могут смотреть:

  • Claude Code;
  • Codex CLI;
  • Gemini CLI;
  • OpenClaw;
  • клиенты с OpenAI-compatible API.

Gateway владеет credentials, routing, logs и model mapping. В том же дашборде могут сосуществовать маршруты к OpenAI, Anthropic, Gemini, Azure OpenAI, DeepSeek, Vertex и локальным endpoint'ам. Qwen и OpenRouter подключаются не как очередная пачка разовых конфигов, а как provider presets.

Пресеты Qwen и OpenRouter в одном каталоге

Оба провайдера — OpenAI Chat-style (apiFormat: 'openai_chat'). Определение провайдера в CliGate — «в основном data».

Пресет Qwen:

{
  "id": "qwen",
  "apiFormat": "openai_chat",
  "baseUrl": "https://dashscope.aliyuncs.com/compatible-mode/v1",
  "models": ["qwen-max", "qwen-plus", "qwen-turbo", "qwq-32b"],
  "tiers": { "standard": "qwen-plus", "fast": "qwen-turbo" }
}

Для OpenRouter — тот же подход, но с важным правилом: model id со слэшем / проходит как native model slug без ремапа. Примеры из поста: anthropic/claude-3.7-sonnet, openai/gpt-4o-mini, qwen/qwen-2.5-72b-instruct. OpenRouter здесь — каталог upstream-моделей, а не одно семейство с единым алиасом.

Мост протоколов: Claude Code и Codex

Qwen и OpenRouter отдают Chat Completions upstream. Gateway трактует их как chat-native upstreams и строит мост к tool-facing протоколам.

Claude Code: CliGate переводит Anthropic Messages → OpenAI Chat, шлёт запрос в Qwen или OpenRouter, переводит ответ обратно в Anthropic-style message. Автор утверждает, что tool calls и tool results сохраняются при переводе — в посте нет бенчмарка и цифр надёжности.

Codex: для этих провайдеров native Responses support отключён — gateway не притворяется, что у них есть endpoint /responses. Вместо этого используется существующий Responses-to-Chat fallback через Chat Completions.

Итог для агентного стека: Claude Code по-прежнему получает Anthropic-shaped API, Codex — свой входной путь, а выбор между Qwen tier fast / standard или конкретным slug на OpenRouter остаётся внутри CliGate. Ни один CLI не обязан знать, какой провайдер «выиграл» маршрут.

Запуск за три шага

Минимальный сценарий:

npx cligate@latest start
# Add a Qwen or OpenRouter key in API Keys
# Keep Claude Code and Codex pointed at localhost:8081

После старта маршрутизация живёт в gateway: Qwen на tier fast или standard, OpenRouter — когда нужен конкретный upstream slug. Инструменты не переписывают конфиги под каждый провайдер — они остаются на localhost:8081.

Решение о провайдере уходит из каждого инструмента в слой, который может inspect, route, price и log запрос — типичная схема для vibe coding с несколькими агентами и одним локальным control plane.

Что остаётся без ответа

В первоисточнике не раскрыты точные переменные окружения и флаги Claude Code и Codex — кроме указания смотреть на localhost:8081. Нет данных о лицензии, ToS и лимитах DashScope и OpenRouter при проксировании через локальный gateway. Сравнение с альтернативными gateway-решениями в посте не приводится; номер версии CliGate не зафиксирован — только дистрибутив cligate@latest.

Если tool-calling при двойном переводе протоколов критичен для вашего агента, имеет смысл проверить сценарий на своих задачах: заявление автора о сохранении tool calls не подкреплено регрессионными тестами в тексте.

Источники