Подключаем российские AI-сервисы к OpenClaw: GigaChat, YandexGPT и Yandex 360
TL;DR
Собрал пять агентов на базе OpenClaw: Jarvis (Claude Sonnet 4.5), Coder и Planner (Claude Opus 4.6), Ruslan (GigaChat-Pro) и Яша (YandexGPT). Все работает через Telegram. Полный код и навыки — на GitHub: openclaw-ru-skills.
Зачем это нужно
OpenClaw — это персональный AI-ассистент с открытым кодом, который умеет в мультиагентность, инструменты и интеграции. Из коробки работает с Claude, GPT, и другими западными моделями. Но что, если хочется добавить российские сервисы?
Эксперимент: создать навыки (skills) для трёх российских AI-сервисов с нуля и задокументировать каждый шаг. Для чистоты эксперимента — отдельный пустой репозиторий.
Архитектура
Telegram → OpenClaw Gateway → 🤖 Jarvis (Claude Sonnet 4.5, главный агент)
→ 💻 Coder (Claude Opus 4.6, кодинг)
→ 🧠 Planner (Claude Opus 4.6 + Extended Thinking)
→ 🐻 Ruslan (GigaChat-Pro)
→ 🦊 Яша (YandexGPT)
OpenClaw → yax skill → Yandex 360 (Disk/Calendar/Mail/Telemost)
OpenClaw → Yandex Cloud (TTS/Vision/Translate/ImageGen)
Шаг 1: Базовая настройка OpenClaw
Установка
OpenClaw ставится в три команды:
curl -fsSL https://openclaw.ai/install.sh | sh
openclaw gateway start
openclaw onboard
Процесс onboard проведёт через настройку агента и подключение к Telegram (или другому каналу).
Деплой на Railway
Я использовал Railway (hobby plan, $5/мес). Важные моменты:
-
Блокировка SMTP портов: Railway блокирует исходящие соединения на порты 25/465/587 — отправка почты через SMTP не работает.
-
Переменные окружения: Все секреты (API-ключи, токены) — в environment variables.
-
Персистентность процессов: Прокси-серверы (gpt2giga, yandexgpt) нужно стартовать вручную или через startup script.
Структура проекта
openclaw-ru-skills/
├── gigachat/ # Навык для GigaChat
│ ├── SKILL.md
│ └── scripts/
├── yandexgpt/ # Навык для YandexGPT
│ ├── SKILL.md
│ ├── src/proxy.js # Translation proxy
│ └── scripts/
└── yax/ # Навык для Yandex 360
├── SKILL.md
└── src/
Шаг 2: GigaChat через gpt2giga
Получение доступа
-
Регистрация на https://developers.sber.ru/
-
Создание приложения GigaChat API
-
Получение Client ID и Client Secret
-
Scope:
GIGACHAT_API_PERS(бесплатный персональный)
Установка прокси
GigaChat не совместим с OpenAI API из коробки. Используем gpt2giga — Python-прокси, который переводит запросы OpenAI → GigaChat:
pip3 install gpt2giga
Запуск
export GIGACHAT_CREDS=$(echo -n "CLIENT_ID:CLIENT_SECRET" | base64)
gpt2giga
--gigachat.credentials $GIGACHAT_CREDS
--gigachat.scope GIGACHAT_API_PERS
--gigachat.verify-ssl-certs false
--proxy.port 8443
--proxy.pass-model true
Важно: --gigachat.verify-ssl-certs false нужен, потому что Сбер использует собственный корневой CA.
Конфигурация OpenClaw
Добавляем провайдера в openclaw.json:
{
"models": {
"providers": {
"gigachat": {
"baseUrl": "http://127.0.0.1:8443",
"apiKey": "dummy",
"api": "openai-completions",
"models": [
{
"id": "GigaChat-Max",
"name": "GigaChat MAX",
"contextWindow": 32768,
"maxTokens": 8192
},
{
"id": "GigaChat-Pro",
"name": "GigaChat Pro",
"contextWindow": 32768,
"maxTokens": 4096
},
{
"id": "GigaChat",
"name": "GigaChat Lite",
"contextWindow": 8192,
"maxTokens": 2048
}
]
}
}
},
"agents": {
"list": [
{
"id": "ruslan",
"name": "Ruslan",
"emoji": "🐻",
"model": "gigachat/GigaChat-Pro",
"workspace": "/root/.openclaw/agents/ruslan/workspace"
}
]
}
}
Создание агента Ruslan
Второй агент с русскоязычной душой. Создаём файлы в /root/.openclaw/agents/ruslan/workspace/:
IDENTITY.md:
# IDENTITY.md
- Name: Ruslan
- Creature: Российский AI-ассистент
- Vibe: Дружелюбный, знает русский контекст
- Emoji: 🐻
SOUL.md:
# SOUL.md — Кто ты
Ты Руслан. Российский AI-ассистент на базе GigaChat-Pro.
Говоришь на русском, знаешь русский контекст (кухня, культура, реалии).
Отвечаешь кратко и по делу. Без лишней вежливости.
Проверка
curl -X POST http://localhost:8443/v1/chat/completions
-H "Content-Type: application/json"
-d '{
"model": "GigaChat-Pro",
"messages": [{"role": "user", "content": "Столица России?"}]
}'
Ответ: "Москва" (19 токенов).
Подводные камни
-
gpt2giga зомби: Процессы могут становиться defunct и держать порты. Убиваем через
fuser -k 8443/tcp+kill -9. -
Credentials в ps aux: CLI-аргументы видны в списке процессов — потенциальная дыра безопасности.
-
Редиректы 307: Эндпоинт
/v1/modelsвозвращает 307 редирект → используемcurl -L.
Шаг 3: YandexGPT через translation proxy
Yandex Cloud setup
-
Создаём service account в Yandex Cloud Console
-
Генерируем API-ключ
-
Критично: назначаем роль
ai.editorна folder через Access Bindings
Частая ошибка: Добавить разрешения на сервисный аккаунт ≠ назначить роль на folder. YandexGPT проверяет роли на уровне folder, а не разрешения на SA.
yc iam service-account create --name openclaw-sa
SA_ID=$(yc iam service-account get openclaw-sa --format json | jq -r .id)
yc iam api-key create --service-account-id $SA_ID
yc resource-manager folder add-access-binding <FOLDER_ID>
--role ai.editor
--subject serviceAccount:$SA_ID
Translation proxy
YandexGPT API не совместим с OpenAI. Написал Node.js прокси (zero dependencies), который переводит OpenAI API → YandexGPT API:
-
Принимает запросы на
/v1/chat/completions -
Конвертирует формат OpenAI → YandexGPT
-
Использует
Api-Keyавторизацию -
Маппит usage statistics (tokens)
Полный код прокси — в репозитории: yandexgpt/src/proxy.js
Запуск:
cd yandexgpt/src
YANDEX_FOLDER_ID=<folder-id> YANDEX_API_KEY=<api-key> node proxy.js
Прокси слушает на порту 8444.
Конфигурация OpenClaw
{
"models": {
"providers": {
"yandexgpt": {
"baseUrl": "http://127.0.0.1:8444",
"apiKey": "dummy",
"api": "openai-completions",
"models": [
{
"id": "yandexgpt",
"name": "YandexGPT",
"contextWindow": 8192,
"maxTokens": 2048
},
{
"id": "yandexgpt-lite",
"name": "YandexGPT Lite",
"contextWindow": 8192,
"maxTokens": 2048
},
{
"id": "yandexgpt-32k",
"name": "YandexGPT 32K",
"contextWindow": 32768,
"maxTokens": 4096
}
]
}
}
},
"agents": {
"list": [
{
"id": "yandex",
"name": "Яша",
"emoji": "🦊",
"model": "yandexgpt/yandexgpt",
"workspace": "/root/.openclaw/agents/yandex/workspace"
}
]
}
}
Создание агента Яша
IDENTITY.md:
# IDENTITY.md
- Name: Яша
- Creature: Билингвальный AI-ассистент (русский + английский)
- Vibe: Дружелюбный, нейтральный
- Emoji: 🦊
Проверка
curl -X POST http://localhost:8444/v1/chat/completions
-H "Content-Type: application/json"
-d '{
"model": "yandexgpt",
"messages": [{"role": "user", "content": "Столица России?"}]
}'
Ответ: "Москва." (16 токенов).
Шаг 4: Yandex 360 через yax
OAuth setup
Yandex 360 API требует OAuth. Создаём приложение:
-
Redirect URI:
https://oauth.yandex.ru/verification_code(для CLI/ботов) -
Выбираем scopes для нужных сервисов:
|
Сервис |
Scope |
Что дает |
|---|---|---|
|
Disk |
|
Доступ к app-папке |
|
|
|
Информация о диске и квоте |
|
Calendar |
|
Чтение/запись событий календаря |
|
|
|
Чтение почты через IMAP |
|
|
|
Отправка почты через SMTP |
|
Telemost |
|
Создание видеоконференций |
💡 Выбирайте только нужные scopes. Большинству пользователей нужны только Disk + Calendar.
📚 Полный список scopes: https://yandex.ru/dev/id/doc/ru/codes/scopes
Установка yax
cd /openclaw/skills
git clone https://github.com/smvlx/openclaw-ru-skills
cd openclaw-ru-skills/yax
npm install --include=dev
npx tsc
Аутентификация
node dist/index.js auth
--client-id 79ccb7ad7edc4fa5b0b6602e93ff9958
--redirect-uri https://oauth.yandex.ru/verification_code
Открывается браузер, вводим код, токен сохраняется в ~/.openclaw/yax/token.json.
Примеры использования
Yandex Disk:
yax disk info # 49 GB свободно
yax disk list / # Список файлов
yax disk upload local.txt /remote.txt
yax disk mkdir /test
Yandex Calendar (CalDAV):
yax calendar list # Список календарей
yax calendar create "Встреча" "2026-02-14" "11:00:00" "12:00:00" "Описание" "Europe/Moscow"
Используется прямое CalDAV API Yandex.Calendar с OAuth авторизацией. Реализация включает:
-
Auto-discovery логина через
https://login.yandex.ru/info -
PROPFIND для определения путей календарей
-
Правильные CalDAV пути:
/calendars/{login}@yandex.ru/events-{id}/{uid}.ics -
Поддержка timezone (VTIMEZONE block в ICS)
Yandex Mail (IMAP/SMTP):
yax mail # Показывает информацию об ограничениях
Yandex не предоставляет HTTP API для почты, только IMAP/SMTP (порты 993/465). Работает локально, но порты заблокированы на облачных платформах типа Railway.
Yandex Telemost (видеоконференции):
OAuth scope telemost-api:conferences.create уже включен в настройки. Требует платную подписку Yandex 360 (403 на бесплатных аккаунтах).
Шаг 5: Мультиагентность
OpenClaw поддерживает несколько агентов из коробки. Каждый агент:
-
Имеет собственную модель
-
Имеет собственный workspace (файлы, память)
-
Имеет собственную душу (SOUL.md, IDENTITY.md)
Конфигурация
{
"tools": {
"agentToAgent": {
"enabled": true,
"allow": ["ruslan", "yandex", "coder", "planner"]
}
},
"agents": {
"defaults": {
"model": {
"primary": "anthropic/claude-sonnet-4-5"
}
},
"list": [
{
"id": "main",
"subagents": {
"allowAgents": ["ruslan", "yandex", "coder", "planner"]
}
},
{
"id": "ruslan",
"model": "gigachat/GigaChat-Pro"
},
{
"id": "yandex",
"model": "yandexgpt/yandexgpt"
},
{
"id": "coder",
"model": "anthropic/claude-opus-4-6"
},
{
"id": "planner",
"model": "anthropic/claude-opus-4-6",
"thinking": "max"
}
]
}
}
Использование
В Telegram:
Пользователь: @OpenClawBot попроси Руслана написать стих про Байкал
Jarvis: [запускает subagent ruslan]
Ruslan: [пишет стих на GigaChat-Pro]
Jarvis: [возвращает результат]
Результаты тестирования
GigaChat-Pro (Ruslan 🐻)
Тест: “Столица России?”
Ответ: “Москва” (19 токенов, 1.2 сек)
Тест: “Напиши стих про Москву” (4 строки)
Ответ: Осмысленный стих, хорошая рифма, русский контекст. 150 токенов.
YandexGPT (Яша 🦊)
Тест: “Столица России?”
Ответ: “Москва.” (16 токенов, 0.8 сек)
Тест: “Explain machine learning” (English)
Ответ: Корректный ответ на английском, но слегка “русифицированный” стиль (особенность модели).
Yandex Disk (yax)
-
✅ Информация о диске
-
✅ Список файлов
-
✅ Загрузка/скачивание
-
✅ Создание папок
-
❌ Публичные ссылки (не тестировалось)
Yandex Calendar (yax)
-
✅ Список календарей (CalDAV API с auto-discovery)
-
✅ Список событий (протестировано с реальным событием)
-
✅ Создание событий (протестировано, работает с правильными CalDAV путями)
Подводные камни и решения
|
Проблема |
Причина |
Решение |
|---|---|---|
|
gpt2giga зомби-процессы |
Defunct processes держат порты |
|
|
GigaChat 402 Payment Required |
Квота бесплатного тира исчерпана |
Нужен платный доступ или новые credentials |
|
YandexGPT 403 |
Неправильный FOLDER_ID в env |
Проверить |
|
IAM разрешения ≠ роли |
Permissions на SA ≠ roles на folder |
|
|
Railway блокирует SMTP |
Закрыты порты 25/465/587 |
Использовать HTTP API (если есть) |
|
Telemost 403 |
Требуется Yandex 360 подписка |
Недоступно на обычных аккаунтах |
|
gpt2giga credentials leak |
CLI args в |
Использовать env vars или файл |
|
npm devDependencies |
|
|
|
CalDAV неправильные пути |
Запись на |
Использовать |
Итоги
Что работает
✅ GigaChat (все модели: Lite, Pro, Max) через gpt2giga
✅ YandexGPT (все модели: lite, default, 32k) через custom proxy
✅ Yandex Disk (info, list, upload, download, mkdir)
✅ Yandex Calendar (list, read, create events с timezone support)
✅ Yandex Mail (через IMAP/SMTP, но порты заблокированы на PaaS платформах)
✅ Yandex Telemost (create, info, modify)
✅ Мультиагентность (Jarvis + Ruslan + Яша)
✅ Agent-to-agent communication (subagents, sessions_send)
Ограничения
⚠️ Yandex Mail: Работает через IMAP/SMTP, но порты 993/465 заблокированы на Railway и аналогичных PaaS
⚠️ Yandex Telemost: Требует платную подписку Yandex 360 (403 на бесплатных аккаунтах)
Ссылки
-
OpenClaw: https://openclaw.ai
-
Репозиторий openclaw-ru-skills: https://github.com/smvlx/openclaw-ru-skills
-
GigaChat API: https://developers.sber.ru/
-
Yandex Cloud AI: https://cloud.yandex.ru/services/ai
-
Yandex OAuth: https://oauth.yandex.ru/
Автор: smvlx


