# UnlimLLM — инструкция для AI-агента по подключению провайдера Ты — агент, которому пользователь передал этот файл. Твоя задача: подключить сервис UnlimLLM как провайдера моделей в текущей среде (CLI, редактор, SDK) — аккуратно, не ломая существующие настройки пользователя. ## Факты о сервисе - OpenAI-совместимый base URL: `https://unlimllm.mooo.com/v1` - Anthropic-совместимый base URL: `https://unlimllm.mooo.com` (БЕЗ `/v1` — Messages SDK добавляет сам) - Аутентификация: `Authorization: Bearer ` или `x-api-key: ` (Anthropic SDK) - Модели: `kimi-k3.1-pro`, `kimi-k3`, `qwen3.8-max-0902`, `qwen3.8-flash`, `glm-5.3`, `deepseek-v4-pro-0813`, `deepseek-v4.1-flash-1017`. Передавай ID точно как указано. - Картинки на входе (vision): `kimi-k3.1-pro`, `kimi-k3`, `deepseek-v4.1-flash-1017`. Остальные — текстовые. - Ключ пользователя (если он передал его тебе): используй его. Если ключа нет в сообщении пользователя — СПРОСИ ключ, не выдумывай. ## Правила работы агента 1. Сначала определи, какой клиент у пользователя (Claude Code / Codex / OpenCode / Cline / Cursor / другое) и его ОС (Windows / macOS / Linux). Если неясно — спроси. 2. НИКОГДА не перезаписывай конфиг целиком. Смержи нужные поля в существующий файл. 3. Не коммить ключи в git. Не печатай ключ в логи. В примерах — плейсхолдер `$UNLIMLLM_API_KEY`. 4. После настройки — проверь: сначала `GET /v1/models` с ключом, потом один короткий запрос к модели. Покажи пользователю результат проверки. 5. Если у клиента уже есть блок настроек другого провайдера — сохрани его. ## Claude Code (CLI) Файл пользователя: `~/.claude/settings.json` (Windows: `%USERPROFILE%\.claude\settings.json`). Смержи в объект `env` (сохрани другие ключи и блоки `permissions`, `hooks` и т.д.): ```json { "env": { "ANTHROPIC_BASE_URL": "https://unlimllm.mooo.com", "ANTHROPIC_AUTH_TOKEN": "$UNLIMLLM_API_KEY", "ANTHROPIC_MODEL": "kimi-k3", "ANTHROPIC_DEFAULT_SONNET_MODEL": "kimi-k3", "ANTHROPIC_DEFAULT_OPUS_MODEL": "kimi-k3", "ANTHROPIC_DEFAULT_HAIKU_MODEL": "glm-5.3", "CLAUDE_CODE_SUBAGENT_MODEL": "kimi-k3", "CLAUDE_CODE_MAX_CONTEXT_TOKENS": "1000000" } } ``` Важно: значения из settings.json перебивают переменные терминала. Если в `env` уже есть `ANTHROPIC_BASE_URL`/`ANTHROPIC_AUTH_TOKEN` другого провайдера — предупреди пользователя и замени только с его согласия. После настройки попроси запустить `claude` и выполнить `/status`, затем `/model kimi-k3`. ## Codex CLI Файл: `~/.codex/config.toml` (Windows: `%USERPROFILE%\.codex\config.toml`). Смержи, сохраняя sandbox/approval и прочие секции пользователя: ```toml model = "kimi-k3" model_provider = "unlimllm" web_search = "disabled" include_apply_patch_tool = false [features] multi_agent = false [model_providers.unlimllm] name = "UnlimLLM" base_url = "https://unlimllm.mooo.com/v1" wire_api = "responses" env_key = "UNLIMLLM_API_KEY" supports_websockets = false ``` Строки `web_search`, `include_apply_patch_tool`, `multi_agent` обязательны — они отключают нестандартные типы инструментов Codex, которые API не принимает. Ключ положи в переменную окружения `UNLIMLLM_API_KEY` в терминале, из которого запускается codex (не в config.toml). ## OpenCode Файл: `~/.config/opencode/opencode.jsonc` (Windows: `%USERPROFILE%\.config\opencode\opencode.jsonc`). v1-схема (поле `provider`): ```jsonc { "model": "unlimllm/kimi-k3", "provider": { "unlimllm": { "npm": "@ai-sdk/openai-compatible", "options": { "baseURL": "https://unlimllm.mooo.com/v1" }, "models": { "kimi-k3.1-pro": { "name": "Kimi K3.1 Pro", "limit": { "context": 1000000, "output": 131072 } }, "kimi-k3": { "name": "Kimi K3", "limit": { "context": 1000000, "output": 131072 } }, "qwen3.8-max-0902": { "name": "Qwen 3.8 Max", "limit": { "context": 1000000, "output": 131072 } }, "qwen3.8-flash": { "name": "Qwen 3.8 Flash", "limit": { "context": 1000000, "output": 131072 } }, "glm-5.3": { "name": "GLM 5.3", "limit": { "context": 1000000, "output": 131072 } }, "deepseek-v4-pro-0813": { "name": "DeepSeek V4 Pro", "limit": { "context": 1000000, "output": 131072 } }, "deepseek-v4.1-flash-1017": { "name": "DeepSeek V4.1 Flash 1017", "limit": { "context": 1000000, "output": 131072 } } } } } } ``` Затем: в OpenCode выполни `/connect` → Other → provider ID `unlimllm` → вставь ключ. Выбери модель через `/models`. ## Cline / Roo Code / Kilo Code / Cherry Studio (GUI) Настройки → провайдер → OpenAI Compatible: - Base URL: `https://unlimllm.mooo.com/v1` - API key: ключ пользователя - Model ID: `kimi-k3` (или `glm-5.3`) Поле GUI не разворачивает переменные — вставляй сам ключ, а не имя переменной. ## Cursor Settings → Models: сначала включи «Override OpenAI Base URL» = `https://unlimllm.mooo.com/v1`, затем вставь ключ в поле OpenAI API Key. Добавь кастомные модели `kimi-k3` и `glm-5.3` и выбери одну явно (не Auto). Если сборка Cursor не даёт переопределить base URL — предложи пользователю расширение Cline вместо. ## Любой HTTP-клиент ``` POST https://unlimllm.mooo.com/v1/chat/completions Authorization: Bearer $UNLIMLLM_API_KEY Content-Type: application/json {"model": "kimi-k3", "messages": [{"role": "user", "content": "hi"}], "stream": true} ``` Проверка ключа без инференса: ``` curl https://unlimllm.mooo.com/v1/models -H "Authorization: Bearer $UNLIMLLM_API_KEY" ``` ## Диагностика ошибок - `401` — ключ невалиден или удалён. Переспроси ключ у пользователя. - `402` — исчерпан токен-бюджет ключа. - `403` — ключ на паузе или истёк срок. - `404` на `/v1/v1/...` — base URL задан с лишним суффиксом; используй правильный базовый адрес из секции клиента выше. - `404` на модели — точный ID: `kimi-k3` или `glm-5.3`. - `413` — тело больше 16 МиБ. - `429` — превышен лимит параллельных запросов ключа; соблюдай `Retry-After`, ретрай с экспоненциальным backoff. ## Завершение Сообщи пользователю: какой файл/настройку ты изменил, как откатить (бэкап), и результат проверочного запроса. Ничего не храни и не логируй из секретов.