Применимо к OpenClaw v2026.2 | Статья предназначена для пользователей, завершивших базовую настройку и желающих глубже понять архитектуру. Рекомендуется сначала пройти первые 3 руководства.
TL;DR: Gateway — центральная плоскость управления OpenClaw. Session — контейнер контекста диалога (main/channel/group), Message Router определяет маршрутизацию сообщений, Tool Registry управляет правами инструментов, Skills — предварительно упакованные расширения возможностей. WebSocket-эндпоинт ws://127.0.0.1:18789/ws, основные команды openclaw gateway/doctor/config. Понимание этих концепций — основа для расширенной настройки.
Обзор архитектуры
Общая архитектура
flowchart TB
subgraph Clients["Клиентский уровень"]
WA[WhatsApp]
TG[Telegram]
DC[Discord]
SL[Slack]
WC[WebChat]
CLI[CLI]
MAC[macOS App]
IOS[iOS Node]
AND[Android Node]
end
subgraph Gateway["Уровень Gateway"]
WS[WebSocket Server]
HTTP[HTTP Server]
MR[Message Router]
SM[Session Manager]
TR[Tool Registry]
EM[Event Manager]
CFG[Config Store]
end
subgraph Agent["Уровень Agent"]
PI[Pi Agent]
PROMPT[Prompt Engine]
TOOLS[Tool Executor]
SKILLS[Skills Manager]
end
subgraph External["Внешние сервисы"]
FS[Файловая система]
BR[Браузер]
API[API-сервисы]
DB[База данных]
CAL[Cron-планировщик]
end
Clients --> WS
Clients --> HTTP
WS --> MR
HTTP --> MR
MR --> SM
SM --> PI
PI --> PROMPT
PI --> TOOLS
PI --> SKILLS
TOOLS --> TR
TR --> External
EM --> MR
CFG --> SM
CFG --> TR
Обязанности компонентов
| Компонент |
Обязанности |
Ключевые возможности |
| WebSocket Server |
Управление клиентскими соединениями |
Поддержание соединений, heartbeat, обмен сообщениями |
| HTTP Server |
REST API и статические ресурсы |
Web UI, проверка здоровья, интерфейс конфигурации |
| Message Router |
Маршрутизация и распределение сообщений |
Определение канала, маппинг сессий, пересылка сообщений |
| Session Manager |
Управление жизненным циклом сессий |
Создание, восстановление, сжатие, очистка |
| Tool Registry |
Регистрация и вызов инструментов |
Обнаружение инструментов, контроль прав, песочница выполнения |
| Event Manager |
Распределение и подписка на события |
Webhook, Cron, внутренние события |
| Config Store |
Персистентное хранение конфигурации |
Горячее обновление, управление версиями, резервное копирование |
Поток данных
sequenceDiagram
participant U as Пользователь
participant C as Channel
participant WS as WebSocket
participant MR as Router
participant SM as Session
participant A as Agent
participant T as Tools
U->>C: Отправка сообщения
C->>WS: Передача сообщения
WS->>MR: Запрос маршрутизации
MR->>SM: Поиск/создание сессии
SM-->>MR: Возврат сессии
MR->>A: Доставка сообщения
A->>A: Обработка сообщения
A->>T: Вызов инструмента (опционально)
T-->>A: Возврат результата
A-->>MR: Генерация ответа
MR->>WS: Отправка ответа
WS->>C: Передача ответа
C-->>U: Отображение сообщения
Модель сессий Session
Что такое Session?
Session — одна из ключевых концепций OpenClaw. Каждая Session представляет независимый контекст диалога, содержащий:
| Составляющая |
Описание |
| История сообщений |
Полная запись диалога |
| Состояние контекста |
Текущие задачи, временные переменные |
| Конфигурация |
Модель, уровень размышлений, настройки песочницы |
| Метаданные |
Время создания, статистика Token, связанные каналы |
Типы Session
{
"sessions": {
"main": {
"type": "main",
"model": "anthropic/claude-opus-4-6",
"thinkingLevel": "high",
"channel": null,
"created": "2026-02-26T10:00:00Z"
},
"telegram:user:123456789": {
"type": "channel",
"model": "anthropic/claude-opus-4-6",
"thinkingLevel": "normal",
"channel": "telegram",
"sender": "123456789",
"created": "2026-02-26T10:05:00Z"
},
"telegram:group:-100123456789": {
"type": "group",
"model": "anthropic/claude-sonnet-4",
"thinkingLevel": "minimal",
"channel": "telegram",
"groupId": "-100123456789",
"created": "2026-02-26T10:10:00Z"
}
}
}
| Тип |
Формат Session ID |
Описание |
| main |
main |
Основная сессия по умолчанию, используется CLI и WebChat |
| channel |
{channel}:user:{senderId} |
Личная сессия, изолирована по каналу и пользователю |
| group |
{channel}:group:{groupId} |
Групповая сессия, изолирована по группе |
Жизненный цикл Session
stateDiagram-v2
[*] --> Created: Сообщение получено
Created --> Active: Первый ответ
Active --> Active: Обмен сообщениями
Active --> Idle: Нет активности
Idle --> Active: Новое сообщение
Idle --> Compacted: Автоматическое сжатие
Compacted --> Active: Продолжение диалога
Active --> Reset: Команда /reset
Reset --> Created: Начало заново
Active --> Pruned: Очистка сессии
Idle --> Pruned: Очистка по таймауту
Pruned --> [*]
Команды Session
Команды управления сессиями (отправляются в чате):
| Команда |
Функция |
Пример |
/status |
Просмотр статуса сессии |
Модель, Token, стоимость |
/new или /reset |
Сброс сессии |
Очистка истории, начало нового диалога |
/compact |
Сжатие контекста |
Суммирование истории, освобождение Token |
/think <level> |
Установка уровня размышлений |
/think high |
/verbose on/off |
Вкл/выкл подробного режима |
Показать/скрыть вызовы инструментов |
/usage off/tokens/full |
Отображение использования |
/usage full |
Конфигурация Session
{
"sessionPruning": {
"enabled": true,
"maxAge": 86400000,
"maxSize": 100,
"pruneOnStartup": true
},
"sessionCompression": {
"enabled": true,
"threshold": 50000,
"targetRatio": 0.3
}
}
| Параметр |
Описание |
По умолчанию |
maxAge |
Максимальное время жизни сессии (мс) |
24 часа |
maxSize |
Максимальное количество сообщений |
100 |
threshold |
Порог сжатия (Token) |
50000 |
targetRatio |
Целевой коэффициент сжатия |
30% |
Message Router — маршрутизация сообщений
Правила маршрутизации
Message Router отвечает за маршрутизацию входящих сообщений к нужной Session:
flowchart TB
MSG[Сообщение получено] --> CH{Тип канала?}
CH -->|Личное| DM[Извлечение ID отправителя]
CH -->|Группа| GRP[Извлечение ID группы]
CH -->|WebChat/CLI| MAIN[Использование main сессии]
DM --> SID[Session: channel:user:id]
GRP --> GID[Session: channel:group:id]
SID --> EXISTS{Сессия существует?}
GID --> EXISTS
EXISTS -->|Да| LOAD[Загрузка сессии]
EXISTS -->|Нет| CREATE[Создание новой сессии]
CREATE --> LOAD
LOAD --> AGENT[Передача Agent]
Конфигурация маршрутизации
{
"messageRouting": {
"defaultSession": "main",
"channelMapping": {
"telegram": {
"userPrefix": "telegram:user",
"groupPrefix": "telegram:group"
},
"whatsapp": {
"userPrefix": "whatsapp:user",
"groupPrefix": "whatsapp:group"
}
},
"groupActivation": {
"mode": "mention",
"mentionPatterns": ["@bot", "/bot"]
}
}
}
Стратегии активации в группах
| Режим |
Описание |
Сценарий использования |
mention |
Ответ только при @упоминании |
Активные группы, снижение шума |
always |
Ответ на все сообщения |
Выделенные рабочие группы |
keyword |
Ответ при наличии ключевых слов |
Группы по определённым темам |
{
"channels": {
"telegram": {
"groups": {
"*": {
"requireMention": true
},
"-100WORKGROUP": {
"requireMention": false,
"activationMode": "always"
}
}
}
}
}
Встроенные инструменты
OpenClaw содержит богатый набор встроенных инструментов:
| Категория |
Название инструмента |
Функция |
| Операции с файлами |
read |
Чтение файлов |
|
write |
Запись файлов |
|
edit |
Редактирование файлов |
| Выполнение команд |
bash |
Выполнение Shell-команд |
|
process |
Управление процессами |
| Браузер |
browser |
Управление браузером |
| Поиск |
web_search |
Веб-поиск |
| Узлы |
camera |
Работа с камерой |
|
screen_record |
Запись экрана |
|
notify |
Отправка уведомлений |
| Сессии |
sessions_list |
Список сессий |
|
sessions_history |
История сессий |
|
sessions_send |
Межсессионные сообщения |
| Canvas |
canvas |
Операции с Canvas |
Управление правами инструментов
{
"agents": {
"defaults": {
"sandbox": {
"mode": "off",
"allowlist": ["read", "write", "bash", "web_search"],
"denylist": []
}
}
}
}
| Режим песочницы |
Описание |
off |
Все инструменты доступны (только для main сессии) |
non-main |
Песочница включена для не-main сессий |
always |
Песочница включена для всех сессий |
Подробная конфигурация песочницы
{
"agents": {
"defaults": {
"sandbox": {
"mode": "non-main",
"allowlist": [
"read",
"write",
"edit",
"bash",
"web_search",
"sessions_list",
"sessions_history"
],
"denylist": [
"browser",
"canvas",
"camera",
"screen_record"
]
}
}
}
}
Система навыков Skills
Архитектура Skills
flowchart LR
subgraph Skills["Каталог Skills"]
S1[gmail/SKILL.md]
S2[calendar/SKILL.md]
S3[home-assistant/SKILL.md]
end
subgraph Manager["Skills Manager"]
DISC[Обнаружение]
LOAD[Загрузка]
EXEC[Выполнение]
end
subgraph Agent["Agent"]
PROMPT[Инъекция в Prompt]
TOOLS[Регистрация Tools]
RES[Возврат результата]
end
Skills --> DISC
DISC --> LOAD
LOAD --> PROMPT
LOAD --> TOOLS
PROMPT --> Agent
TOOLS --> Agent
Agent --> EXEC
EXEC --> RES
Структура каталога Skills
~/.openclaw/workspace/skills/
├── gmail/
│ ├── SKILL.md # Определение навыка
│ ├── package.json # Зависимости (опционально)
│ └── src/
│ └── index.js # Реализация (опционально)
├── calendar/
│ └── SKILL.md
└── my-custom-skill/
└── SKILL.md
Структура SKILL.md
# Gmail Skill
## Description
Send and read Gmail messages through OpenClaw.
## Triggers
- email
- gmail
- mail
- send email
- read email
## Instructions
When the user wants to send an email:
1. Ask for recipient, subject, and body
2. Use the gmail_send tool
3. Confirm the email was sent
When the user wants to check emails:
1. Use the gmail_list tool
2. Summarize the results
## Tools
- gmail_list: List recent emails
- gmail_send: Send an email
- gmail_read: Read a specific email
## Examples
User: "Check my email"
Action: Use gmail_list tool
User: "Send an email to [email protected]"
Action: Ask for subject and body, then use gmail_send
Способы установки Skills
# Установка из ClawHub
openclaw skill install gmail
# Установка из GitHub
openclaw skill install github:user/repo/skill-name
# Ручная установка
git clone https://github.com/user/skill-repo.git ~/.openclaw/workspace/skills/skill-name
Конфигурация Skills
{
"skills": {
"bundled": true,
"managed": true,
"workspace": true,
"installGating": true
}
}
| Параметр |
Описание |
bundled |
Включение встроенных навыков |
managed |
Включение управляемых навыков ClawHub |
workspace |
Включение навыков из локального рабочего пространства |
installGating |
Подтверждение перед установкой |
Протокол WebSocket
Эндпоинт подключения
ws://127.0.0.1:18789/ws
Формат сообщений
{
"type": "message_type",
"id": "unique_message_id",
"data": {
// содержимое сообщения
}
}
Типы клиентских сообщений
| Тип |
Описание |
Пример |
agent.send |
Отправка сообщения |
Диалог с Agent |
session.list |
Список сессий |
Управление сессиями |
session.get |
Детали сессии |
Просмотр сессии |
session.patch |
Изменение конфигурации сессии |
Смена модели |
config.get |
Получение конфигурации |
Чтение настроек |
config.set |
Установка конфигурации |
Обновление настроек |
Типы серверных сообщений
| Тип |
Описание |
agent.response |
Ответ Agent |
agent.thinking |
Процесс размышлений (стриминг) |
tool.invoked |
Вызов инструмента |
tool.result |
Результат инструмента |
session.created |
Создание сессии |
session.reset |
Сброс сессии |
error |
Сообщение об ошибке |
Пример: отправка сообщения
// Подключение к WebSocket
const ws = new WebSocket('ws://127.0.0.1:18789/ws');
// Отправка сообщения
ws.send(JSON.stringify({
type: 'agent.send',
id: 'msg-001',
data: {
session: 'main',
message: 'Привет, расскажи о себе'
}
}));
// Получение ответа
ws.onmessage = (event) => {
const msg = JSON.parse(event.data);
console.log(msg);
// Пример вывода:
// {
// type: 'agent.response',
// id: 'msg-001',
// data: {
// content: 'Привет! Я твой помощник OpenClaw...',
// session: 'main'
// }
// }
};
Event System — система событий
Встроенные события
| Событие |
Момент срабатывания |
message.received |
Получено сообщение пользователя |
message.sent |
Отправлен ответ |
session.created |
Создана новая сессия |
session.reset |
Сессия сброшена |
tool.invoked |
Вызван инструмент |
tool.completed |
Инструмент завершил выполнение |
agent.thinking |
Agent размышляет |
error.occurred |
Произошла ошибка |
Конфигурация Webhook
{
"webhooks": [
{
"url": "https://your-server.com/webhook/openclaw",
"events": ["message.received", "tool.invoked"],
"secret": "your_webhook_secret",
"headers": {
"X-Custom-Header": "value"
}
}
]
}
Полезная нагрузка Webhook
{
"event": "message.received",
"timestamp": "2026-02-26T10:30:00Z",
"data": {
"channel": "telegram",
"sender": "123456789",
"session": "telegram:user:123456789",
"message": "Привет",
"metadata": {
"messageId": "msg_abc123",
"timestamp": "2026-02-26T10:30:00Z"
}
},
"signature": "sha256=..."
}
Cron — планирование задач
Пример конфигурации
{
"cron": [
{
"id": "daily-briefing",
"schedule": "0 9 * * *",
"session": "main",
"message": "Покажи моё расписание на сегодня",
"enabled": true
},
{
"id": "weekly-summary",
"schedule": "0 18 * * 5",
"session": "main",
"message": "Сгенерируй сводку за неделю",
"enabled": true
}
]
}
Cron-выражения
┌───────────── минуты (0 - 59)
│ ┌───────────── часы (0 - 23)
│ │ ┌───────────── день месяца (1 - 31)
│ │ │ ┌───────────── месяц (1 - 12)
│ │ │ │ ┌───────────── день недели (0 - 6, 0 = воскресенье)
│ │ │ │ │
* * * * *
Распространённые примеры
| Выражение |
Описание |
0 9 * * * |
Каждый день в 9:00 |
0 18 * * 1-5 |
По будням в 18:00 |
*/30 * * * * |
Каждые 30 минут |
0 0 1 * * |
1-го числа каждого месяца в 0:00 |
Уровни и приоритеты конфигурации
Порядок приоритетов
Аргументы CLI > Переменные окружения > Конфигурационный файл > Значения по умолчанию
Источники конфигурации
| Источник |
Расположение |
Приоритет |
| Аргументы CLI |
Параметры командной строки |
Наивысший |
| Переменные окружения |
OPENCLAW_* |
Высокий |
| Конфигурационный файл |
~/.openclaw/openclaw.json |
Средний |
| Значения по умолчанию |
Встроены в код |
Самый низкий |
Пример слияния конфигурации
// ~/.openclaw/openclaw.json
{
"agent": {
"model": "anthropic/claude-opus-4-6"
}
}
# Переопределение через переменную окружения
export OPENCLAW_AGENT_MODEL="anthropic/claude-sonnet-4"
# Переопределение через CLI (наивысший приоритет)
openclaw gateway --model "anthropic/claude-opus-4"
Горячее обновление конфигурации
# Обновление конфигурации (без перезапуска)
openclaw config set agent.model "anthropic/claude-sonnet-4"
# Перезагрузка конфигурационного файла
openclaw config reload
# Проверка конфигурации
openclaw config get agent.model
Справочник часто используемых команд
Управление Gateway
# Запуск Gateway
openclaw gateway
# С указанием порта
openclaw gateway --port 18790
# Запуск в фоне
openclaw gateway --daemon
# Подробные логи
openclaw gateway --verbose
# Проверка здоровья
openclaw health
Управление сессиями
# Список всех сессий
openclaw session list
# Просмотр деталей сессии
openclaw session show main
openclaw session show telegram:user:123456789
# Сброс сессии
openclaw session reset main
# Удаление сессии
openclaw session delete telegram:user:123456789
Управление конфигурацией
# Просмотр конфигурации
openclaw config get agent.model
openclaw config get channels.telegram.botToken
# Установка конфигурации
openclaw config set agent.thinkingLevel high
# Список всей конфигурации
openclaw config list
# Валидация конфигурации
openclaw config validate
Инструменты диагностики
# Полная диагностика
openclaw doctor
# Проверка конкретного компонента
openclaw doctor --check gateway
openclaw doctor --check config
openclaw doctor --check channels
# Просмотр логов
openclaw logs
openclaw logs --follow
openclaw logs --level error
Устранение неполадок
Gateway не запускается
# Проверка занятости порта
lsof -i :18789
netstat -tlnp | grep 18789
# Проверка синтаксиса конфигурации
openclaw config validate
# Просмотр подробных ошибок
openclaw gateway --verbose 2>&1 | tee gateway.log
Потеря сессий
# Проверка каталога сессий
ls -la ~/.openclaw/sessions/
# Проверка конфигурации очистки
openclaw config get sessionPruning
# Отключение автоматической очистки
openclaw config set sessionPruning.enabled false
Ошибки при вызове инструментов
# Проверка конфигурации песочницы
openclaw config get agents.defaults.sandbox
# Временное отключение песочницы
openclaw config set agents.defaults.sandbox.mode off
# Просмотр логов инструментов
openclaw logs --filter tool
Ошибка подключения WebSocket
# Проверка статуса Gateway
curl http://127.0.0.1:18789/health
# Проверка WebSocket-эндпоинта
wscat -c ws://127.0.0.1:18789/ws
# Проверка файрвола
sudo ufw status
sudo iptables -L -n | grep 18789
Итоги
Понимание ключевых концепций Gateway — залог успешной работы с OpenClaw:
- Session: контейнер контекста диалога с поддержкой изоляции по типам
- Message Router: ядро маршрутизации, определяющее направление сообщений
- Tool Registry: центр регистрации инструментов, управляющий возможностями Agent
- Skills: система расширения навыков для быстрого улучшения функциональности
- WebSocket: протокол реального времени с поддержкой пользовательских клиентов
- Event System: механизм распределения событий с поддержкой Webhook и Cron
Эти концепции будут встречаться в последующих статьях. Глубокое их понимание поможет более эффективно настраивать и использовать OpenClaw.
Итоги статьи:
- Освоена общая архитектура Gateway и обязанности компонентов
- Понята модель сессий Session и жизненный цикл
- Изучены маршрутизация сообщений и стратегии активации в группах
- Рассмотрены права инструментов и конфигурация песочницы
- Освоены протокол WebSocket и система событий
История обновлений:
- 2026-02-26: первая публикация, на основе OpenClaw v2026.2
Навигация по серии: