- BrainTools - https://www.braintools.ru -
Собрал пять агентов на базе OpenClaw: Jarvis (Claude Sonnet 4.5), Coder и Planner (Claude Opus 4.6), Ruslan (GigaChat-Pro) и Яша (YandexGPT). Все работает через Telegram. Полный код и навыки — на GitHub: openclaw-ru-skills [1].
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/ [3]
Создание приложения 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
Частая ошибка [4]: Добавить разрешения на сервисный аккаунт ≠ назначить роль на 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 [5]
Запуск:
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. Создаём приложение:
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 [7]
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 (файлы, память [8])
Имеет собственную душу (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 [9]
Репозиторий openclaw-ru-skills: https://github.com/smvlx/openclaw-ru-skills [1]
GigaChat API: https://developers.sber.ru/ [3]
Yandex Cloud AI: https://cloud.yandex.ru/services/ai [10]
Yandex OAuth: https://oauth.yandex.ru/ [11]
Автор: smvlx
Источник [12]
Сайт-источник BrainTools: https://www.braintools.ru
Путь до страницы источника: https://www.braintools.ru/article/25718
URLs in this post:
[1] openclaw-ru-skills: https://github.com/smvlx/openclaw-ru-skills
[2] Image: https://sourcecraft.dev/
[3] https://developers.sber.ru/: https://developers.sber.ru/
[4] ошибка: http://www.braintools.ru/article/4192
[5] yandexgpt/src/proxy.js: https://github.com/smvlx/openclaw-ru-skills/blob/main/yandexgpt/src/proxy.js
[6] https://oauth.yandex.ru/client/new: https://oauth.yandex.ru/client/new
[7] https://yandex.ru/dev/id/doc/ru/codes/scopes: https://yandex.ru/dev/id/doc/ru/codes/scopes
[8] память: http://www.braintools.ru/article/4140
[9] https://openclaw.ai: https://openclaw.ai
[10] https://cloud.yandex.ru/services/ai: https://cloud.yandex.ru/services/ai
[11] https://oauth.yandex.ru/: https://oauth.yandex.ru/
[12] Источник: https://habr.com/ru/articles/996966/?utm_source=habrahabr&utm_medium=rss&utm_campaign=996966
Нажмите здесь для печати.