Перейти к основному содержанию
MoltBot — self-hosted персональный ассистент, который живёт в привычных каналах (Telegram, Slack, WhatsApp, Discord): локальный gateway принимает сообщение, отдаёт его модели, вызывает инструменты и возвращает ответ в тот же канал. Модель выбирается в конфигурации, поэтому подключить SpeShu.AI — значит добавить один OpenAI-совместимый провайдер и назначить его моделью по умолчанию. Проект был переименован в OpenClaw, и конфигурация переехала вместе с ним: в релизах под именем MoltBot файл лежит в ~/.moltbot/moltbot.json, в актуальных — в ~/.openclaw/openclaw.json. Дальше по странице используется актуальный путь; в старой версии замените его на свой, всё остальное совпадает.
От MoltBot нужны ровно два значения: baseUrl = https://speshu.ai/api/v1 и API-ключ в поле apiKey провайдера. Gateway говорит с нами обычным OpenAI-совместимым запросом к /chat/completions, поэтому больше ничего менять не нужно. Ключ создаётся в личном кабинете, подробности — в разделе Аутентификация.

Ключ и идентификатор модели

1

Сохраните ключ в переменную окружения

Проверьте его запросом баланса — он не стоит токенов:
cURL
2

Возьмите идентификатор модели из каталога

Идентификаторы текстовых моделей не зашивайте в код: состав каталога меняется, а зашитый в конфиг идентификатор начинает падать с 404 model_not_found. Возьмите его из GET /api/v1/models при настройке окружения:
cURL
.data[0] — первый элемент, чтобы пример можно было запустить. В конфиг кладите тот идентификатор, который подходит вам по цене, контекстному окну и наличию зрения. Формат ответа и параметры выбора — в разделе Модели и цены.

Конфигурация

Провайдер описывается в секции models.providers файла конфигурации. В актуальных релизах это ~/.openclaw/openclaw.json, в релизах под именем MoltBot — ~/.moltbot/moltbot.json. На Windows тот же файл лежит в %USERPROFILE%\.openclaw\openclaw.json.
Три поля обязательны:
JSON не подставляет переменные окружения. ${SPESHU_API_KEY} выше — запись смысла, а не рабочая подстановка: впишите ключ текстом или соберите конфиг скриптом из шага ниже.
Тот же конфиг, собранный из ваших переменных, без единого идентификатора и ключа в исходниках:
Если файла ещё нет, openclaw configure создаёт его из шаблонов, а openclaw models list покажет, какие модели gateway видит.

Модель по умолчанию

Список в models.providers — это ещё не весь allowlist. Чтобы gateway разрешил вам пользоваться моделью, продублируйте её в agents.defaults, а ссылка на неё в конфиге пишется как speshu/<идентификатор модели>:
Один провайдер может обслуживать несколько моделей: добавьте их в оба списка, а переключение делайте в чате командой /model speshu/<идентификатор> или через CLI — openclaw models set speshu/<идентификатор>.
Держите ключ вне репозитория. Файл конфигурации обычно попадает в бэкап и в систему контроля версий; если это так, положите ключ в ~/.openclaw/.env и сослайтесь на него в конфиге, либо не коммитьте файл.

Первый работающий пример

Сначала проверьте, что адрес и ключ верны, не запуская gateway:
cURL
Если пришёл текст и сумма списания в рублях, перезапустите gateway (openclaw gateway restart) и отправьте сообщение в подключённый канал.
1

Отправьте сообщение в канал

Напишите в Telegram, Slack или WhatsApp, к которому подключён gateway. Первое сообщение дольше обычного — gateway поднимается и валидирует конфигурацию.
2

Убедитесь, что отвечает нужная модель

В логах gateway должен быть запрос на https://speshu.ai/api/v1/chat/completions с вашим ключом. Если в логе пусто — канал не привязан к агенту, и дело уже не в провайдере.
3

Проверьте списание

Ответ пришёл — списание прошло. Сумма за этот раз видна в usage.cost.total_cost в ответе /chat/completions и на странице баланса. Условия списания — в разделе Тарификация и оплата.

Что работает дальше

Потоковая передача. Если в настройках канала включён частичный вывод, gateway читает stream: true и печатает ответ по мере генерации. В самом API поток идёт по SSE, сервер не пишет поле event: и завершает его строкой data: [DONE] — клиент, разбирающий кадры по event:, покажет пустой результат. Формат кадров — в гайде Потоковая передача. Инструменты. Схемы skills и tools уходят в запрос тем же способом, что и в обычном чате, а выбранный инструмент возвращается в tool_calls. Полный цикл, разбор аргументов и параллельные вызовы — в гайде Вызов функций. Изображения во входе. Скриншот или документ передаются в сообщение по публичной ссылке, если выбранная модель принимает зрение. Как получить ссылку — в гайде Медиаввод. Генерация медиа. Медиа-API не OpenAI-совместимый, поэтому через провайдера в конфиге не вызывается. Создавайте задачи напрямую через POST /api/v1/async/media/tasks с вашим ключом — формат конверта и опрос статуса в разделе Создать задачу. Идентификаторы медиа-моделей, в отличие от текстовых, стабильны: их можно писать литералом, например nano-banana-2, предварительно сверившись с GET /api/v1/media/models.
Эмбеддингов у SpeShu.AI нет: эндпоинта /embeddings в /api/v1 не существует. Если вы включили в gateway функцию, которой нужен векторный поиск по памяти или базе знаний, она будет обращаться к адресу провайдера и получать 404. Векторный шаг нужно увести на отдельного провайдера со своим baseUrl и своим ключом — это отдельная конфигурация, к SpeShu.AI отношения не имеющая.

Частые проблемы

Проверьте baseUrl целиком: https://speshu.ai/api и https://speshu.ai/api/v1/ — обе частые причины, обе дают 404 при верном ключе и модели. Значение должно заканчиваться ровно на /v1, без завершающего /.
В провайдере не заполнено поле api. Gateway не может определить тип протокола и отказывает до сетевого запроса. Добавьте "api": "openai-completions".
Обычно ключ не подставился: в конфиге осталась строка ${SPESHU_API_KEY} вместо значения — JSON не раскрывает переменные. Отладочная проверка: curl -s https://speshu.ai/api/v1/balance -H "Authorization: Bearer $SPESHU_API_KEY".
Две разные причины. Если модель есть в провайдере, но не видна агенту — она не продублирована в agents.defaults.models, а этот список работает как allowlist. Если не помогло — идентификатор устарел: возьмите его заново из GET /api/v1/models и подставьте как есть, без префикса speshu/ в самом id.
На балансе нет положительной суммы. Пополнение — в веб-приложении на speshu.ai/profile; баланс проверяется до обращения к модели, за отказ деньги не списываются.
Конфигурация валидируется при старте, и одна синтаксическая ошибка в соседнем разделе не даст загрузиться файлу целиком. Проверка: openclaw doctor, а openclaw doctor --fix перезапишет файл в рабочем виде.
Полная таблица кодов, три формата ошибок и цикл повторов — на странице Ошибки, таймауты и квоты — в разделе Лимиты.

Что дальше

Модели и цены

Как выбрать идентификатор и на что смотреть

Потоковая передача

SSE, [DONE] и кадр со списанием

Вызов функций

Полный цикл вызова инструмента агента

Начало работы

Полный маршрут от ключа до медиа-задачи