Клиенты · Редакторы

Другие редакторы

Признак, по которому видно, что клиент подойдёт, один: в его настройках есть поле для базового адреса. Всё остальное — вариации одного и того же набора из трёх строк: адрес, ключ, имя модели.

Правило трёх полей#

  • Базовый адрес — https://nirastudio.org/v1 для OpenAI-совместимого режима. Без /v1 — только там, где клиент дописывает путь сам (режим Anthropic).
  • Ключ — nira_live_… в поле для ключа OpenAI.
  • Модель — id из каталога, вместе с частью до слэша.
Если клиент показывает выпадающий список моделей и не даёт ввести своё имя — он ждёт каталог в своём формате. Такие клиенты работают со шлюзом наполовину: чат идёт, выбор модели ограничен. Ищите в настройках поле Custom model.

Zed#

Настройки открываются по Cmd/Ctrl + , — это файл settings.json:

json
{
  "language_models": {
    "openai_compatible": {
      "nira": {
        "api_url": "https://nirastudio.org/v1",
        "available_models": [
          {
            "name": "anthropic/claude-sonnet-4.6",
            "display_name": "Sonnet 4.6",
            "max_tokens": 1000000
          }
        ]
      }
    }
  }
}

Ключ Zed хранит не в файле, а в связке ключей системы: он спросит его при первом запросе к новому провайдеру.

JetBrains#

Встроенный AI Assistant к сторонним адресам не подключается — он работает только с подпиской JetBrains. Через шлюз идут плагины: Continue (есть для IDEA, PyCharm, GoLand и остальных), CodeGPT, ProxyAI. У всех трёх в настройках есть выбор совместимого провайдера и поле адреса.

Neovim#

avante.nvim

lua
require("avante").setup({
  provider = "openai",
  openai = {
    endpoint = "https://nirastudio.org/v1",
    model = "anthropic/claude-sonnet-4.6",
    api_key_name = "NIRA_API_KEY",   -- имя переменной окружения
  },
})

codecompanion.nvim

lua
require("codecompanion").setup({
  adapters = {
    nira = function()
      return require("codecompanion.adapters").extend("openai_compatible", {
        env = { url = "https://nirastudio.org/v1", api_key = "NIRA_API_KEY" },
        schema = { model = { default = "anthropic/claude-sonnet-4.6" } },
      })
    end,
  },
  strategies = { chat = { adapter = "nira" }, inline = { adapter = "nira" } },
})

Оба плагина читают ключ из окружения по имени переменной, а не из файла настроек, — так он не попадает в дотфайлы, которые обычно лежат в публичном репозитории.

Заметки и прочее#

Плагины для Obsidian, Logseq и подобных инструментов почти всегда просят «OpenAI API key» и «API base URL» — этого достаточно. Единственная частая помеха: поле модели у них выпадающим списком из зашитых имён OpenAI. Тогда ищите Custom model или ставьте плагин, у которого имя вводится вручную.

Свой клиент#

Для своего кода не нужно писать HTTP-запросы руками: официальные библиотеки OpenAI и Anthropic работают со шлюзом как есть, меняется один параметр — базовый адрес. Примеры в Python и Node.js; полная машинная схема — openapi.json, по ней генератор соберёт клиент на любом языке.