Gemini CLI
Gemini CLI говорит на своём протоколе (/v1beta), и Mixen понимает его напрямую: generateContent, streamGenerateContent (SSE), countTokens и список моделей работают на любом чате каталога — не только на Gemini.
Установка
Заголовок раздела «Установка»Gemini CLI — пакет npm (нужен Node.js 20+):
npm install -g @google/gemini-cliАльтернативы: brew install gemini-cli (macOS) или npx @google/gemini-cli без установки.
Подключение
Заголовок раздела «Подключение»Gemini CLI принимает произвольный Gemini-совместимый бэкенд через переменную окружения. Указывайте корень https://api.mixen.ai — версию пути /v1beta/… клиент дописывает сам, дополнительный сегмент в URL привёл бы к двойному /v1beta/v1beta:
export GOOGLE_GEMINI_BASE_URL="https://api.mixen.ai"export GEMINI_API_KEY="mxn-ваш-ключ" # ключ Mixen, не GooglegeminiПри первом запуске CLI спросит способ аутентификации — выберите Use Gemini API Key: он возьмёт GEMINI_API_KEY из окружения. В headless-режиме (gemini -p "…") выбор меню недоступен — задайте тип явно в ~/.gemini/settings.json:
{"security": {"auth": {"selectedType": "gemini-api-key"}}}И добавьте GEMINI_CLI_TRUST_WORKSPACE=true — без неё неинтерактивный запуск откажется работать в недоверенной папке. Модель по умолчанию закрепляется переменной GEMINI_MODEL — берите точный id из каталога (например google/gemini-3.1-pro-preview); разово — флагом gemini --model …, внутри сессии — командой /model.
Проверить связку до запуска CLI можно одним curl:
curl -H "x-goog-api-key: $GEMINI_API_KEY" https://api.mixen.ai/v1beta/modelsGEMINI_TELEMETRY_ENABLED=false отключает отправку телеметрии CLI.
Что работает
Заголовок раздела «Что работает»- Обычные и стриминговые ответы —
streamGenerateContent?alt=sse, токены приходят дельтами. - Function calling — встроенные инструменты CLI (
read_file,edit,shell) ходят черезfunctionDeclarations; параллельные вызовы поддерживаются. - Reasoning —
thinkingLevelпроксируется:low/medium/highуправляют глубиной рассуждения какreasoning_effortв чате. - Контекст —
countTokensотвечает дешёвой оценкой без похода к модели; CLI сам решает, когда жать контекст. - Картинки —
inlineDataуходит модели как vision-вход (проверяйтеcapabilities.visionв каталоге). - Баланс и списания — обычные: баланс и история видны всё в тех же
GET /v1/balanceиGET /v1/history.
Границы
Заголовок раздела «Границы»- Только
functionDeclarationsвtools; Google Search grounding и другие встроенные инструменты Gemini не проксируются — веб-поиск берите моделями Sonar из каталога. candidateCount > 1не поддерживается.fileData(File API Google) не работает — файлы передавайте инлайном или через Storage API.- Стриминговые tool-вызовы приходят одним собранным блоком в конце потока, не по дельтам.
Формат ошибок — Gemini-стандарт: {"error": {"code": 401, "message": "...", "status": "UNAUTHENTICATED"}}. Частые коды: UNAUTHENTICATED — ключ не передан или отозван; FAILED_PRECONDITION — на аккаунте не было пополнений (см. ключи); RESOURCE_EXHAUSTED — упёрлись в лимит запросов ключа.