GigaChat и OpenCode

Post Thumbnail

Вырываемся в вайбкодинг. Я прям совсем не разбираюсь в этих ваших вайбкодингах. Хайп вокруг AI напоминает мне миллиард JS-фреймворков вместе с NFT. Надеюсь, что в ближайшее время все немного поуспокоится и появится несколько лидеров, которые будут задавать темп. Одним из таких лидеров, кажется, становится Claude.

Но просто взять и использовать Claude, конечно же, не интересно. Во-первых, я не привык платить за программирование, я привык, что мне платят за программирование. Во-вторых, если уж платить за программирование, то хочется делать это удобно. В России можно оплатить Claude через какой-нибудь сервис-прослойку, но это всё как-то не знаю. Я хочу платить картой «Мир».

OpenCode

Что еще можно использовать так же удобно, как Claude? Кажется, что второй по популярности агент после Claude — это OpenCode. И вот тут становится интереснее, потому что к OpenCode очень просто подключить почти любую модель.

Я хотел бы попробовать для вайбкодинга модели GigaChat от Сбера. Да, они уступают Claude, но мне и не нужно писать браузер или компилятор C. Я какое-то время работал с плагином GigaCode в VS Code и в целом мне понравилось. Тесты генерирует, ошибки находит — как инструмент можно использовать.

Но просто так взять и подключить GigaChat в OpenCode не получится, нужно пройти несколько квестов. И самый первый — это регистрация. Вам нужно перейти вот по этой ссылке и лучше сразу ее сохранить, потому что Сбер сделал миллион каких-то лендингов, и разобраться, куда зайти, чтобы получить токен API, бывает нетривиально.

Для физических лиц можно пользоваться только бесплатной подпиской Freemium и при необходимости дополнительно докупать пакеты.

Настраиваем прокси

После того, как у вас получилось добыть токен для API, вы всё еще не сможете взять и использовать GigaChat вместе с OpenCode. Дело в том, что сам OpenCode не поддерживает GigaChat как провайдера. А у GigaChat свой собственный формат API, и подключить его как кастомный провайдер не получится. Но не расстраивайтесь: добрые люди уже написали прокси, которая превращает API GigaChat в совместимый с OpenAI API. Кстати, сама прокси выложена на сберовский gitverse.ru. Совпадение? Не думаю.

Чтобы начать работать с прокси, чекаутим ее из репозитория. Дальше нужно сделать конфигурационный файл для простоты прямо в директории с исходниками прокси. Копируем пример конфига:

git clone git@gitverse.ru:kmpavloff/openai-provider-gigachat.git
cd ./openai-provider-gigachat
cp config.example.json config.json

Теперь нужно добавить наш добытый ключ API вместо API_KEY:

{
  "authorization_key": "API_KEY",
  "oauth_url": "https://ngw.devices.sberbank.ru:9443/api/v2/oauth",
  "scope": "GIGACHAT_API_PERS",
  "addr": "localhost",
  "port": "8080"
}

Чуть подробнее расскажу про параметры:

  • authorization_key — ключ авторизации GigaChat API, это обязательный параметр. Как раз сюда укажете свой API-ключ.
  • oauth_url — URL для получения токена доступа. По умолчанию: https://ngw.devices.sberbank.ru:9443/api/v2/oauth. И в принципе его не нужно менять.
  • scope — область доступа API. По умолчанию это GIGACHAT_API_PERS, и вам его тоже не стоит менять.

И можем стартовать прокси. Прям так, без сборки бинарника:

go run .

Вы должны увидеть в консоли что-то вроде такого:

2026/03/15 22:19:14 Logging to file: logs/server_2026-03-15_22-19-14.log
[INFO ] 2026-03-15 22:19:14.044 Config loaded: OAuth URL: https://ngw.devices.sberbank.ru:9443/api/v2/oauth, Scope: GIGACHAT_API_PERS
[INFO ] 2026-03-15 22:19:14.044 Starting OpenAI-compatible provider for GigaChat
[INFO ] 2026-03-15 22:19:14.044 Base URL: http://localhost:8080/v1
[INFO ] 2026-03-15 22:19:14.044 Config: config.json, Log Level: 
[INFO ] 2026-03-15 22:19:14.044 Health check: curl -X GET http://localhost:8080/v1/models -H "Authorization: Bearer test"

При необходимости можно задать кастомные параметры через переменные окружения:

ADDR=0.0.0.0 PORT=9000 CONFIG_PATH=config.json LOG_LEVEL=DEBUG go run .

Подключаем GigaChat в OpenCode

Теперь у нас всё готово, чтобы подключить GigaChat в OpenCode. Для этого нужно набрать в консоли:

opencode auth login

И выбрать Other в провайдерах.

Идентификатор можно указать любой, но он в будущем нам понадобится. А на API key тут можно не обращать внимание и указать совсем любую комбинацию:

В корне вашего проекта создайте файл opencode.json и добавьте в него вот такие настройки:

{
  "$schema": "https://opencode.ai/config.json",
  "provider": {
    "example": {
      "npm": "@ai-sdk/openai-compatible",
      "name": "GigaChat AI",
      "options": {
        "baseURL": "http://localhost:8080/v1",
        "apiKey": "example"
      },
      "models": {
        "GigaChat-2-Max": {
          "name": "GigaChat Max 2 Example"
        }
      }
    }
  }
}

Тут указан идентификатор example:

{
  "provider": {
      "example": {
        // ...
      }
  }
} 

Это тот самый идентификатор, который мы указали во время opencode auth login. А вот apiKey тут можно указывать совершенно любой. Напомню, что реальный ключ мы указали в настройках прокси, а в этом конфиге самое главное — правильно указать адрес прокси:

{
  "provider": {
    "example": {
      "options": {
        "baseURL": "http://localhost:8080/v1"
      }
    }
  }
}

Отлично, запускаем opencode и выбираем для работы модель GigaChat Max 2 Example:

Подробнее почитать про подключение кастомного провайдера можно тут.

Давайте попробуем сделать минимальную программу Hello World с помощью нашего агента. Тут уже чистый вайбкодинг и никакого напряга.

Всё работает. OpenCode — это очень мощный инструмент для работы с AI и достаточно популярный в последнее время. Но у него есть один недостаток.

Crush

Самый большой недостаток — это то, что он написан не на Go. А вот Crush — это прям то, что нужно. Это довольно молодой, но прикольный агент, написанный на Go с использованием фреймворка Charm.

Подключить GigaChat в Crush еще проще, чем в OpenCode. Для этого нужно указать правильные настройки в файле $HOME/.config/crush/crush.json:

{
  "providers": {
    "gigachat": {
      "type": "openai",
      "base_url": "http://localhost:8080/v1",
      "api_key": "dummy",
      "models": [
         {
           "id": "GigaChat-2-Max",
           "name": "GigaChat Max 2",
           "context_window": 64000,
           "default_max_tokens": 5000
         },
         {
           "id": "GigaChat-2",
           "name": "GigaChat 2",
           "context_window": 64000,
           "default_max_tokens": 5000
         },
         {
           "id": "GigaChat-2-Pro",
           "name": "GigaChat Pro 2",
           "context_window": 64000,
           "default_max_tokens": 5000
         }
      ]
    }
  }
}

После этого можно запускать в терминале crush, выбирать нужную модель и наслаждаться вайбкодингом:

Впечатления

По ощущениям, модели от Сбера довольно сильно уступают даже китайским. А расход токенов с OpenCode какой-то прям конский. Но я надеюсь, что ребята из Сбера будут улучшать и сервис, и модели.

Последнее время я много пользуюсь SourceCraft ассистентом через плагин в VS Code, и мне он нравится больше. Я бы тоже хотел попробовать подключить SourceCraft в OpenCode.

И пока у меня дошли руки, чтобы написать эту статью, стал популярным OpenClaw — еще один агент, в который тоже можно подключать кастомные провайдеры.

Ссылки