Навыки

Слэш-команды

Команды обрабатываются Шлюзом. Большинство команд должно отправляться как отдельное сообщение, начинающееся с /. Команда bash только для хоста использует ! <cmd>/bash <cmd> в качестве алиаса). Существует две связанные системы:

  • Команды: отдельные сообщения /....
  • Директивы: /think, /verbose, /reasoning, /elevated, /exec, /model, /queue.
    • Директивы удаляются из сообщения до того, как модель их увидит.
    • В обычных сообщениях чата (не только директивы) они рассматриваются как «встроенные подсказки» и не сохраняют настройки сессии.
    • В сообщениях, содержащих только директивы, они сохраняются для сессии и отвечают подтверждением.
    • Директивы применяются только для авторизованных отправителей. Если задан commands.allowFrom, используется только этот список разрешений; в противном случае авторизация происходит из списков разрешений/привязок канала плюс commands.useAccessGroups. Неавторизованные отправители видят директивы, обработанные как обычный текст.

Также есть несколько встроенных сокращений (только для авторизованных отправителей): /help, /commands, /status, /whoami (/id). Они выполняются немедленно, удаляются до того, как модель увидит сообщение, а оставшийся текст продолжает проходить через обычный поток.

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

{
  commands: {
    native: "auto",
    nativeSkills: "auto",
    text: true,
    bash: false,
    bashForegroundMs: 2000,
    config: false,
    debug: false,
    restart: false,
    allowFrom: {
      "*": ["user1"],
      discord: ["user:123"],
    },
    useAccessGroups: true,
  },
}
  • commands.text (по умолчанию true) включает разбор /... в сообщениях чата.
    • На поверхностях без нативных команд (WhatsApp/WebChat/Signal/iMessage/Google Chat/MS Teams) текстовые команды всё равно работают, даже если вы установите это значение в false.
  • commands.native (по умолчанию "auto") регистрирует нативные команды.
    • Auto: включено для Discord/Telegram; выключено для Slack (пока вы не добавите слэш-команды); игнорируется для провайдеров без нативной поддержки.
    • Установите channels.discord.commands.native, channels.telegram.commands.native или channels.slack.commands.native, чтобы переопределить для каждого провайдера (bool или "auto").
    • false очищает ранее зарегистрированные команды на Discord/Telegram при запуске. Команды Slack управляются в приложении Slack и не удаляются автоматически.
  • commands.nativeSkills (по умолчанию "auto") регистрирует навыки как нативные команды, когда это поддерживается.
    • Auto: включено для Discord/Telegram; выключено для Slack (Slack требует создания слэш-команды для каждого навыка).
    • Установите channels.discord.commands.nativeSkills, channels.telegram.commands.nativeSkills или channels.slack.commands.nativeSkills, чтобы переопределить для каждого провайдера (bool или "auto").
  • commands.bash (по умолчанию false) включает ! <cmd> для выполнения команд оболочки хоста (/bash <cmd> является алиасом; требует списков разрешений tools.elevated).
  • commands.bashForegroundMs (по умолчанию 2000) контролирует, как долго bash ждёт перед переключением в фоновый режим (0 переводит в фон немедленно).
  • commands.config (по умолчанию false) включает /config (чтение/запись openclaw.json).
  • commands.debug (по умолчанию false) включает /debug (переопределения только во время выполнения).
  • commands.allowFrom (опционально) устанавливает список разрешений для каждого провайдера для авторизации команд. При настройке это единственный источник авторизации для команд и директив (списки разрешений/привязки канала и commands.useAccessGroups игнорируются). Используйте "*" для глобального значения по умолчанию; специфичные для провайдера ключи переопределяют его.
  • commands.useAccessGroups (по умолчанию true) применяет списки разрешений/политики для команд, когда commands.allowFrom не задан.

Список команд

Текстовые + нативные (когда включены):

  • /help
  • /commands
  • /skill <name> [input] (запустить навык по имени)
  • /status (показать текущий статус; включает использование/квоту провайдера для текущего провайдера модели, когда доступно)
  • /allowlist (список/добавление/удаление записей списка разрешений)
  • /approve <id> allow-once|allow-always|deny (разрешить запросы на подтверждение exec)
  • /context [list|detail|json] (объяснить «контекст»; detail показывает размер на файл + на инструмент + на навык + системного промпта)
  • /export-session [path] (алиас: /export) (экспортировать текущую сессию в HTML с полным системным промптом)
  • /whoami (показать ваш идентификатор отправителя; алиас: /id)
  • /session idle <duration|off> (управление автоматическим снятием фокуса из-за бездействия для привязанных тредов с фокусом)
  • /session max-age <duration|off> (управление автоматическим снятием фокуса по максимальному возрасту для привязанных тредов с фокусом)
  • /subagents list|kill|log|info|send|steer|spawn (проверить, контролировать или создавать запуски под-агентов для текущей сессии)
  • /acp spawn|cancel|steer|close|status|set-mode|set|cwd|permissions|timeout|model|reset-options|doctor|install|sessions (проверять и контролировать сессии выполнения ACP)
  • /agents (список агентов, привязанных к треду, для этой сессии)
  • /focus <target> (Discord: привязать этот тред или новый тред к цели сессии/под-агента)
  • /unfocus (Discord: удалить текущую привязку треда)
  • /kill <id|#|all> (немедленно прервать один или все запущенные под-агенты для этой сессии; без сообщения подтверждения)
  • /steer <id|#> <message> (немедленно направить запущенного под-агента: во время выполнения, когда возможно, иначе прервать текущую работу и перезапустить с сообщением направления)
  • /tell <id|#> <message> (алиас для /steer)
  • /config show|get|set|unset (сохранить конфигурацию на диск, только для владельца; требует commands.config: true)
  • /debug show|set|unset|reset (переопределения во время выполнения, только для владельца; требует commands.debug: true)
  • /usage off|tokens|full|cost (подвал использования на ответ или локальная сводка стоимости)
  • /tts off|always|inbound|tagged|status|provider|limit|summary|audio (управление TTS; см. /tts)
    • Discord: нативная команда — /voice (Discord резервирует /tts); текстовый /tts всё равно работает.
  • /stop
  • /restart
  • /dock-telegram (алиас: /dock_telegram) (переключить ответы на Telegram)
  • /dock-discord (алиас: /dock_discord) (переключить ответы на Discord)
  • /dock-slack (алиас: /dock_slack) (переключить ответы на Slack)
  • /activation mention|always (только группы)
  • /send on|off|inherit (только владелец)
  • /reset или /new [model] (опциональная подсказка модели; остаток передаётся дальше)
  • /think <off|minimal|low|medium|high|xhigh> (динамический выбор моделью/провайдером; алиасы: /thinking, /t)
  • /verbose on|full|off (алиас: /v)
  • /reasoning on|off|stream (алиас: /reason; когда включено, отправляет отдельное сообщение с префиксом Reasoning:; stream = только черновик Telegram)
  • /elevated on|off|ask|full (алиас: /elev; full пропускает подтверждения exec)
  • /exec host=<sandbox|gateway|node> security=<deny|allowlist|full> ask=<off|on-miss|always> node=<id> (отправить /exec для показа текущих)
  • /model <name> (алиас: /models; или /<alias> из agents.defaults.models.*.alias)
  • /queue <mode> (плюс опции типа debounce:2s cap:25 drop:summarize; отправьте /queue, чтобы увидеть текущие настройки)
  • /bash <command> (только хост; алиас для ! <command>; требует commands.bash: true + списки разрешений tools.elevated)

Только текстовые:

  • /compact [instructions] (см. /concepts/compaction)
  • ! <command> (только хост; по одной за раз; используйте !poll + !stop для долгих задач)
  • !poll (проверить вывод / статус; принимает опциональный sessionId; /bash poll также работает)
  • !stop (остановить запущенную bash-задачу; принимает опциональный sessionId; /bash stop также работает)

Примечания:

  • Команды принимают опциональный : между командой и аргументами (например, /think: high, /send: on, /help:).
  • /new <model> принимает алиас модели, provider/model или имя провайдера (нечёткое совпадение); если совпадений нет, текст рассматривается как тело сообщения.
  • Для полной разбивки использования провайдера используйте openclaw status --usage.
  • /allowlist add|remove требует commands.config=true и учитывает configWrites канала.
  • /usage контролирует подвал использования на ответ; /usage cost выводит локальную сводку стоимости из логов сессий OpenClaw.
  • /restart включён по умолчанию; установите commands.restart: false, чтобы отключить его.
  • Нативная команда только для Discord: /vc join|leave|status управляет голосовыми каналами (требует channels.discord.voice и нативные команды; недоступна как текст).
  • Команды привязки тредов Discord (/focus, /unfocus, /agents, /session idle, /session max-age) требуют, чтобы эффективные привязки тредов были включены (session.threadBindings.enabled и/или channels.discord.threadBindings.enabled).
  • Справочник команд ACP и поведение выполнения: ACP Agents.
  • /verbose предназначен для отладки и дополнительной видимости; держите его выключенным при обычном использовании.
  • Сводки сбоев инструментов всё равно показываются, когда это уместно, но подробный текст сбоя включается только когда /verbose в состоянии on или full.
  • /reasoning/verbose) рискованны в групповых настройках: они могут раскрыть внутренние рассуждения или вывод инструментов, которые вы не собирались показывать. Предпочтительно оставлять их выключенными, особенно в групповых чатах.
  • Быстрый путь: сообщения, содержащие только команды, от авторизованных отправителей обрабатываются немедленно (обход очереди + модели).
  • Ограничение упоминаний в группах: сообщения, содержащие только команды, от авторизованных отправителей обходят требования упоминаний.
  • Встроенные сокращения (только авторизованные отправители): некоторые команды также работают, когда встроены в обычное сообщение, и удаляются до того, как модель увидит оставшийся текст.
    • Пример: hey /status вызывает ответ со статусом, а оставшийся текст продолжает проходить через обычный поток.
  • В настоящее время: /help, /commands, /status, /whoami (/id).
  • Неавторизованные сообщения, содержащие только команды, молча игнорируются, а встроенные токены /... обрабатываются как обычный текст.
  • Команды навыков: навыки с user-invocable доступны как слэш-команды. Имена очищаются до a-z0-9_ (макс. 32 символа); коллизии получают числовые суффиксы (например, _2).
    • /skill <name> [input] запускает навык по имени (полезно, когда ограничения нативных команд мешают создавать команды для каждого навыка).
    • По умолчанию команды навыков пересылаются модели как обычный запрос.
    • Навыки могут опционально объявлять command-dispatch: tool, чтобы направлять команду напрямую инструменту (детерминированно, без модели).
    • Пример: /prose (плагин OpenProse) — см. OpenProse.
  • Аргументы нативных команд: Discord использует автодополнение для динамических опций (и меню кнопок, когда вы опускаете обязательные аргументы). Telegram и Slack показывают меню кнопок, когда команда поддерживает выбор и вы опускаете аргумент.

Поверхности использования (что где показывается)

  • Использование/квота провайдера (пример: «Claude 80% left») появляется в /status для текущего провайдера модели, когда включено отслеживание использования.
  • Токены/стоимость на ответ контролируется /usage off|tokens|full (добавляется к обычным ответам).
  • /model status касается моделей/авторизации/конечных точек, а не использования.

Выбор модели (/model)

/model реализован как директива. Примеры:

/model
/model list
/model 3
/model openai/gpt-5.2
/model opus@anthropic:default
/model status

Примечания:

  • /model и /model list показывают компактный нумерованный выборщик (семейство моделей + доступные провайдеры).
  • В Discord /model и /models открывают интерактивный выборщик с выпадающими списками провайдера и модели плюс шаг отправки.
  • /model <#> выбирает из этого выборщика (и предпочитает текущего провайдера, когда возможно).
  • /model status показывает детализированный вид, включая настроенную конечную точку провайдера (baseUrl) и режим API (api), когда доступно.

Отладочные переопределения

/debug позволяет установить переопределения конфигурации только во время выполнения (память, не диск). Только для владельца. Отключено по умолчанию; включите с commands.debug: true. Примеры:

/debug show
/debug set messages.responsePrefix="[openclaw]"
/debug set channels.whatsapp.allowFrom=["+1555","+4477"]
/debug unset messages.responsePrefix
/debug reset

Примечания:

  • Переопределения применяются немедленно к новым чтениям конфигурации, но не записываются в openclaw.json.
  • Используйте /debug reset, чтобы очистить все переопределения и вернуться к конфигурации на диске.

Обновления конфигурации

/config записывает в вашу конфигурацию на диске (openclaw.json). Только для владельца. Отключено по умолчанию; включите с commands.config: true. Примеры:

/config show
/config show messages.responsePrefix
/config get messages.responsePrefix
/config set messages.responsePrefix="[openclaw]"
/config unset messages.responsePrefix

Примечания:

  • Конфигурация проверяется перед записью; неверные изменения отклоняются.
  • Обновления /config сохраняются после перезапусков.

Примечания по поверхностям

  • Текстовые команды выполняются в обычной сессии чата (личные сообщения используют main, группы имеют свою собственную сессию).
  • Нативные команды используют изолированные сессии:
    • Discord: agent:<agentId>:discord:slash:<userId>
    • Slack: agent:<agentId>:slack:slash:<userId> (префикс настраивается через channels.slack.slashCommand.sessionPrefix)
    • Telegram: telegram:slash:<userId> (нацеливается на сессию чата через CommandTargetSessionKey)
  • /stop нацеливается на активную сессию чата, чтобы она могла прервать текущий запуск.
  • Slack: channels.slack.slashCommand всё ещё поддерживается для одной команды в стиле /openclaw. Если вы включите commands.native, вы должны создать одну слэш-команду Slack для каждой встроенной команды (те же имена, что у /help). Меню аргументов команд для Slack доставляются как эфемерные кнопки Block Kit.
    • Исключение для нативных команд Slack: зарегистрируйте /agentstatus (не /status), потому что Slack резервирует /status. Текстовый /status всё равно работает в сообщениях Slack.

Создание навыковНавыки