Перейти к содержимому
NotHolyДокументация

Интеграции

OpenCode

Добавьте NotHoly как провайдер в opencode.json.

Открыть как Markdown

Для notholy run opencode нужен установленный CLI NotHoly, в котором выполнен вход (Установка CLI), и сам OpenCode: npm i -g @opencode/cli. Для ручной настройки ниже нужен только API-ключ.

Shell
notholy run opencode

Эти настройки существуют только на время запуска, на отдельном приватном сервере OpenCode. Ваши файлы OpenCode и его фоновый сервис остаются как были.

notholy connect opencode записывает те же настройки в ~/.config/opencode/opencode.json и сохраняет другие ваши провайдеры. Сначала он делает бэкап, а notholy connect opencode --undo его восстанавливает.

connect также добавляет MCP-сервер notholy в раздел mcp этого файла, а notholy run opencode передаёт тот же сервер только на этот запуск. Оба используют абсолютный путь к этому CLI и сохранённый вход.

Ручная настройка

Добавьте провайдер в ~/.config/opencode/opencode.json. В Windows файл находится здесь: %USERPROFILE%\.config\opencode\opencode.json. Если задана XDG_CONFIG_HOME, OpenCode ищет файл там.

JSON
{
  "$schema": "https://opencode.ai/config.json",
  "model": "notholy/notholy-specter",
  "providers": {
    "notholy": {
      "name": "NotHoly",
      "env": ["NOTHOLY_API_KEY"],
      "package": "@opencode/ai/providers/openai-compatible",
      "settings": { "baseURL": "https://api.notholy.com/v1" },
      "models": {
        "notholy-specter": { "name": "NotHoly Specter", "capabilities": { "tools": true, "input": ["text"], "output": ["text"], "reasoning": { "supported": true, "effort": ["low", "high", "max"] } }, "limit": { "context": 1048576, "output": 131072 } },
        "notholy-pulse": { "name": "NotHoly Pulse Flash", "capabilities": { "tools": true, "input": ["text", "image"], "output": ["text"], "reasoning": { "supported": true, "effort": ["low", "high", "max"] } }, "limit": { "context": 1048576, "output": 131072 } },
        "notholy-vector": { "name": "NotHoly Vector Flash 1017", "capabilities": { "tools": true, "input": ["text", "image"], "output": ["text"], "reasoning": { "supported": true, "effort": ["off", "low", "high", "max"] } }, "limit": { "context": 1048576, "output": 131072 } },
        "notholy-wisp": { "name": "NotHoly Wisp Flash", "capabilities": { "tools": true, "input": ["text", "image"], "output": ["text"], "reasoning": { "supported": true, "effort": ["off", "low", "high", "max"] } }, "limit": { "context": 1048576, "output": 131072 } }
      }
    }
  }
}

Запишите ключ в NOTHOLY_API_KEY. В PowerShell это $env:NOTHOLY_API_KEY = "nh_live_...". Если фоновый сервис OpenCode уже запущен, перезапустите его: он читает переменную при старте.

Shell
export NOTHOLY_API_KEY="nh_live_..."
opencode service restart
opencode models

Модели NotHoly появятся в этом списке как notholy/.... Каждый уровень из effort — это вариант, который можно выбрать, добавив его к модели: opencode run -m notholy/notholy-specter#<level> "...".

Если лимиты или уровни изменятся, сверьте их с GET /v1/models.

OpenCode 1

Пакет opencode-ai в npm — это OpenCode 1. Он игнорирует providers, поэтому ему нужна такая версия файла. Фонового сервиса у него нет, а переменную он читает ту же.

JSON
{
  "$schema": "https://opencode.ai/config.json",
  "model": "notholy/notholy-specter",
  "provider": {
    "notholy": {
      "npm": "@ai-sdk/openai-compatible",
      "name": "NotHoly",
      "options": { "baseURL": "https://api.notholy.com/v1", "apiKey": "{env:NOTHOLY_API_KEY}" },
      "models": {
        "notholy-specter": { "name": "NotHoly Specter", "tool_call": true, "reasoning": true, "attachment": false, "modalities": { "input": ["text"], "output": ["text"] }, "limit": { "context": 1048576, "output": 131072 }, "variants": { "low": { "reasoningEffort": "low" }, "high": { "reasoningEffort": "high" }, "max": { "reasoningEffort": "max" } } },
        "notholy-pulse": { "name": "NotHoly Pulse Flash", "tool_call": true, "reasoning": true, "attachment": true, "modalities": { "input": ["text", "image"], "output": ["text"] }, "limit": { "context": 1048576, "output": 131072 }, "variants": { "low": { "reasoningEffort": "low" }, "high": { "reasoningEffort": "high" }, "max": { "reasoningEffort": "max" } } },
        "notholy-vector": { "name": "NotHoly Vector Flash 1017", "tool_call": true, "reasoning": true, "attachment": true, "modalities": { "input": ["text", "image"], "output": ["text"] }, "limit": { "context": 1048576, "output": 131072 }, "variants": { "off": { "reasoningEffort": "off" }, "low": { "reasoningEffort": "low" }, "high": { "reasoningEffort": "high" }, "max": { "reasoningEffort": "max" } } },
        "notholy-wisp": { "name": "NotHoly Wisp Flash", "tool_call": true, "reasoning": true, "attachment": true, "modalities": { "input": ["text", "image"], "output": ["text"] }, "limit": { "context": 1048576, "output": 131072 }, "variants": { "off": { "reasoningEffort": "off" }, "low": { "reasoningEffort": "low" }, "high": { "reasoningEffort": "high" }, "max": { "reasoningEffort": "max" } } }
      }
    }
  }
}

Проверьте результат командой opencode models notholy. notholy run и notholy connect работают с обеими версиями.

Что дальше