Собрал пять агентов на базе 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)
OpenClaw ставится в три команды:
curl -fsSL https://openclaw.ai/install.sh | sh openclaw gateway start openclaw onboard
Процесс onboard проведёт через настройку агента и подключение к Telegram (или другому каналу).
Я использовал 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/
Регистрация на 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.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" } ] } }
Второй агент с русскоязычной душой. Создаём файлы в /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.
Создаём 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
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.
{ "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 токенов).
Yandex 360 API требует OAuth. Создаём приложение:
https://oauth.yandex.ru/client/new
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
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 на бесплатных аккаунтах).
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: [возвращает результат]
Тест: "Столица России?"
Ответ: "Москва" (19 токенов, 1.2 сек)
Тест: "Напиши стих про Москву" (4 строки)
Ответ: Осмысленный стих, хорошая рифма, русский контекст. 150 токенов.
Тест: "Столица России?"
Ответ: "Москва." (16 токенов, 0.8 сек)
Тест: "Explain machine learning" (English)
Ответ: Корректный ответ на английском, но слегка "русифицированный" стиль (особенность модели).
✅ Информация о диске
✅ Список файлов
✅ Загрузка/скачивание
✅ Создание папок
❌ Публичные ссылки (не тестировалось)
✅ Список календарей (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/
Источник


![[Перевод] Базовая модель для персонализированных рекомендаций Netflix](https://mexc-rainbown-activityimages.s3.ap-northeast-1.amazonaws.com/banner/F20250611171030266ftMnBKyEGYNUiG.png)