Создание личного ассистента с OpenClaw

OpenClaw — это шлюз WhatsApp + Telegram + Discord + iMessage для агентов Pi. Плагины добавляют Mattermost. Это руководство описывает настройку "личного ассистента": один выделенный номер WhatsApp, который ведет себя как ваш постоянно работающий агент.

⚠️ Безопасность прежде всего

Вы помещаете агента в позицию для:

  • выполнения команд на вашей машине (в зависимости от настройки инструментов Pi)
  • чтения/записи файлов в вашем рабочем пространстве
  • отправки сообщений обратно через WhatsApp/Telegram/Discord/Mattermost (плагин)

Начните консервативно:

  • Всегда устанавливайте channels.whatsapp.allowFrom (никогда не запускайте открыто для всего мира на вашем личном Mac).
  • Используйте выделенный номер WhatsApp для ассистента.
  • Heartbeats теперь по умолчанию каждые 30 минут. Отключите до тех пор, пока не доверяете настройке, установив agents.defaults.heartbeat.every: "0m".

Предварительные требования

  • Node 22+
  • OpenClaw доступен в PATH (рекомендуется: глобальная установка)
  • Второй номер телефона (SIM/eSIM/предоплаченный) для ассистента
npm install -g openclaw@latest
# или: pnpm add -g openclaw@latest

Из исходного кода (разработка):

git clone https://github.com/openclaw/openclaw.git
cd openclaw
pnpm install
pnpm ui:build # автоустановка зависимостей UI при первом запуске
pnpm build
pnpm link --global

Настройка с двумя телефонами (рекомендуется)

Вам нужно это:

Ваш телефон (личный)          Второй телефон (ассистент)
┌─────────────────┐           ┌─────────────────┐
│  Ваш WhatsApp   │  ──────▶  │  WhatsApp       │
│  +1-555-ВЫ      │  сообщ.   │  ассистента     │
└─────────────────┘           │  +1-555-ASSIST  │
                              └────────┬────────┘
                                       │ связан через QR
                                       ▼
                              ┌─────────────────┐
                              │  Ваш Mac        │
                              │  (openclaw)     │
                              │    Pi агент     │
                              └─────────────────┘

Если вы свяжете свой личный WhatsApp с OpenClaw, каждое сообщение вам станет "входом агента". Это редко то, что вам нужно.

5-минутный быстрый старт

  1. Сопряжение WhatsApp Web (показывает QR; сканируйте телефоном ассистента):
openclaw channels login
  1. Запустите Gateway (оставьте работающим):
openclaw gateway --port 18789
  1. Поместите минимальную конфигурацию в ~/.openclaw/openclaw.json:
{
  channels: { whatsapp: { allowFrom: ["+15555550123"] } }
}

Теперь напишите номеру ассистента с вашего разрешенного телефона.

Когда настройка завершится, мы автоматически откроем панель с вашим токеном gateway и выведем токенизированную ссылку. Для повторного открытия позже: openclaw dashboard.

Дайте агенту рабочее пространство (AGENTS)

OpenClaw читает операционные инструкции и "память" из своего каталога рабочего пространства.

По умолчанию OpenClaw использует ~/.openclaw/workspace как рабочее пространство агента и создаст его (плюс стартовые AGENTS.md, SOUL.md, TOOLS.md, IDENTITY.md, USER.md) автоматически при настройке/первом запуске агента. BOOTSTRAP.md создается только когда рабочее пространство совершенно новое (не должен возвращаться после удаления).

Совет: рассматривайте эту папку как "память" OpenClaw и сделайте её git-репозиторием (в идеале приватным), чтобы ваши AGENTS.md + файлы памяти были сохранены. Если git установлен, совершенно новые рабочие пространства автоматически инициализируются.

openclaw setup

Полная структура рабочего пространства + руководство по резервному копированию: Рабочее пространство агента Рабочий процесс памяти: Память

Опционально: выберите другое рабочее пространство с agents.defaults.workspace (поддерживает ~).

{
  agent: {
    workspace: "~/.openclaw/workspace"
  }
}

Если вы уже поставляете свои собственные файлы рабочего пространства из репозитория, вы можете полностью отключить создание файлов загрузки:

{
  agent: {
    skipBootstrap: true
  }
}

Конфигурация, которая превращает его в "ассистента"

OpenClaw по умолчанию имеет хорошую настройку ассистента, но обычно вам нужно будет настроить:

  • персону/инструкции в SOUL.md
  • настройки мышления по умолчанию (если требуется)
  • heartbeats (как только вы ему доверяете)

Пример:

{
  logging: { level: "info" },
  agent: {
    model: "anthropic/claude-opus-4-5",
    workspace: "~/.openclaw/workspace",
    thinkingDefault: "high",
    timeoutSeconds: 1800,
    // Начните с 0; включите позже.
    heartbeat: { every: "0m" }
  },
  channels: {
    whatsapp: {
      allowFrom: ["+15555550123"],
      groups: {
        "*": { requireMention: true }
      }
    }
  },
  routing: {
    groupChat: {
      mentionPatterns: ["@openclaw", "openclaw"]
    }
  },
  session: {
    scope: "per-sender",
    resetTriggers: ["/new", "/reset"],
    reset: {
      mode: "daily",
      atHour: 4,
      idleMinutes: 10080
    }
  }
}

Сессии и память

  • Файлы сессий: ~/.openclaw/agents/<agentId>/sessions/\{\{SessionId\}\}.jsonl
  • Метаданные сессий (использование токенов, последний маршрут и т.д.): ~/.openclaw/agents/<agentId>/sessions/sessions.json (устаревший: ~/.openclaw/sessions/sessions.json)
  • /new или /reset начинает новую сессию для этого чата (настраивается через resetTriggers). Если отправлено отдельно, агент отвечает коротким приветствием для подтверждения сброса.
  • /compact [инструкции] уплотняет контекст сессии и сообщает оставшийся бюджет контекста.

Heartbeats (проактивный режим)

По умолчанию OpenClaw запускает heartbeat каждые 30 минут с промптом: Read HEARTBEAT.md if it exists (workspace context). Follow it strictly. Do not infer or repeat old tasks from prior chats. If nothing needs attention, reply HEARTBEAT_OK. Установите agents.defaults.heartbeat.every: "0m" для отключения.

  • Если HEARTBEAT.md существует, но эффективно пустой (только пустые строки и заголовки markdown вроде # Heading), OpenClaw пропускает запуск heartbeat для экономии API-вызовов.
  • Если файл отсутствует, heartbeat все равно запускается, и модель решает, что делать.
  • Если агент отвечает HEARTBEAT_OK (опционально с коротким дополнением; см. agents.defaults.heartbeat.ackMaxChars), OpenClaw подавляет исходящую доставку для этого heartbeat.
  • Heartbeats запускают полные обороты агента — более короткие интервалы сжигают больше токенов.
{
  agent: {
    heartbeat: { every: "30m" }
  }
}

Медиа входящие и исходящие

Входящие вложения (изображения/аудио/документы) могут быть переданы вашей команде через шаблоны:

  • \{\{MediaPath\}\} (путь к локальному временному файлу)
  • \{\{MediaUrl\}\} (псевдо-URL)
  • \{\{Transcript\}\} (если включена транскрипция аудио)

Исходящие вложения от агента: включите MEDIA:<путь-или-url> на отдельной строке (без пробелов). Пример:

Вот скриншот.
MEDIA:/tmp/screenshot.png

OpenClaw извлекает их и отправляет как медиа вместе с текстом.

Чеклист операций

openclaw status          # локальный статус (учетные данные, сессии, события в очереди)
openclaw status --all    # полная диагностика (только чтение, вставляемо)
openclaw status --deep   # добавляет проверки здоровья gateway (Telegram + Discord)
openclaw health --json   # снимок здоровья gateway (WS)

Логи находятся в /tmp/openclaw/ (по умолчанию: openclaw-YYYY-MM-DD.log).

Следующие шаги