Хуки
Hooks предоставляют расширяемую событийно-ориентированную систему для автоматизации действий в ответ на команды агента и события. Hooks автоматически обнаруживаются в каталогах и могут управляться через CLI-команды — аналогично тому, как работают Skills в OpenClaw.Getting Oriented
Hooks — это небольшие скрипты, которые выполняются, когда что‑то происходит. Существует два вида:- Hooks (эта страница): выполняются внутри Gateway (шлюза), когда срабатывают события агента, такие как
/new,/reset,/stopили события жизненного цикла. - Webhooks: внешние HTTP-вебхуки, которые позволяют запускать другие системы в OpenClaw. См. Webhook Hooks или используйте
openclaw webhooksдля вспомогательных команд Gmail.
- Сохранение снимка памяти при сбросе сеанса
- Ведение аудиторского журнала команд для отладки или соответствия требованиям
- Запуск последующей автоматизации при начале или завершении сеанса
- Запись файлов в рабочее пространство агента или вызов внешних API при срабатывании событий
Обзор
Система hooks позволяет:- Сохранять контекст сеанса в память при выполнении
/new - Логировать все команды для аудита
- Запускать пользовательскую автоматизацию на событиях жизненного цикла агента
- Расширять поведение OpenClaw без изменения кода ядра
Начало работы
Встроенные хуки
OpenClaw поставляется с четырьмя встроенными hooks, которые обнаруживаются автоматически:- 💾 session-memory: сохраняет контекст сеанса в рабочее пространство агента (по умолчанию
~/.openclaw/workspace/memory/) при выполнении/new - 😈 soul-evil: подменяет внедрённый контент
SOUL.mdнаSOUL_EVIL.mdв период очистки или со случайной вероятностью - 📝 command-logger: логирует все события команд в
~/.openclaw/logs/commands.log - 🚀 boot-md: запускает
BOOT.mdпри старте Gateway (шлюза) (требуются включённые внутренние hooks)
Onboarding
Во время онбординга (openclaw onboard) вам будет предложено включить рекомендуемые hooks. Мастер автоматически обнаруживает подходящие hooks и предлагает их для выбора.
Обнаружение хуков
Hooks автоматически обнаруживаются из трёх каталогов (в порядке приоритета):- Workspace hooks:
<workspace>/hooks/(для каждого агента, наивысший приоритет) - Managed hooks:
~/.openclaw/hooks/(установленные пользователем, общие для рабочих пространств) - Bundled hooks:
<openclaw>/dist/hooks/bundled/(поставляются с OpenClaw)
Пакеты хуков (npm/archives)
Наборы hooks — это стандартные npm‑пакеты, которые экспортируют один или несколько hooks черезopenclaw.hooks в
package.json. Устанавливаются так:
package.json:
HOOK.md и handler.ts (или index.ts).
Наборы hooks могут включать зависимости; они будут установлены в ~/.openclaw/hooks/<id>.
Примечание по безопасности: openclaw hooks install устанавливает зависимости с помощью npm install --ignore-scripts
(без lifecycle-скриптов). Сохраняйте дерево зависимостей hook-пакетов «чистым JS/TS» и избегайте пакетов, которые зависят
от сборок postinstall.
Hook Structure
Формат HOOK.md
ФайлHOOK.md содержит метаданные в YAML frontmatter и документацию в Markdown:
Поля метаданных
Объектmetadata.openclaw поддерживает:
emoji: отображаемый emoji для CLI (например,"💾")events: массив событий для подписки (например,["command:new", "command:reset"])export: именованный экспорт для использования (по умолчанию"default")homepage: URL документацииrequires: необязательные требованияbins: требуемые бинарные файлы в PATH (например,["git", "node"])anyBins: должен присутствовать хотя бы один из этих бинарных файловenv: требуемые переменные окруженияconfig: требуемые пути конфига (например,["workspace.dir"])os: требуемые платформы (например,["darwin", "linux"])
always: обход проверок пригодности (boolean)install: способы установки (для встроенных hooks:[{"id":"bundled","kind":"bundled"}])
Реализация обработчика
Файлhandler.ts экспортирует функцию HookHandler:
Контекст события
Каждое событие включает:Event Types
События команд
Срабатывают при выполнении команд агента:command: все события команд (общий слушатель)command:new: при выполнении команды/newcommand:reset: при выполнении команды/resetcommand:stop: при выполнении команды/stop
События агента
agent:bootstrap: перед внедрением файлов инициализации рабочего пространства (hooks могут изменятьcontext.bootstrapFiles)
События Gateway (шлюза)
Срабатывают при запуске Gateway (шлюза):gateway:startup: после запуска каналов и загрузки hooks
Hooks результатов инструментов (API плагинов)
Эти hooks не являются слушателями потока событий; они позволяют плагинам синхронно изменять результаты инструментов до того, как OpenClaw сохранит их.tool_result_persist: преобразует результаты инструментов перед записью в транскрипт сеанса. Должен быть синхронным; верните обновлённую полезную нагрузку результата инструмента илиundefined, чтобы оставить без изменений. См. Agent Loop.
Будущие события
Запланированные типы событий:session:start: при начале нового сеансаsession:end: при завершении сеансаagent:error: при возникновении ошибки у агентаmessage:sent: при отправке сообщенияmessage:received: при получении сообщения
Creating Custom Hooks
1. Выбор расположения
- Workspace hooks (
<workspace>/hooks/): для каждого агента, наивысший приоритет - Managed hooks (
~/.openclaw/hooks/): общие для рабочих пространств
2. Создание структуры каталогов
3. Создание HOOK.md
4. Создание handler.ts
5. Включение и тестирование
Configuration
Новый формат конфига (рекомендуется)
Конфигурация Per-Hook
Hooks могут иметь собственную конфигурацию:Дополнительные каталоги
Загрузка hooks из дополнительных каталогов:Устаревший формат конфига (всё ещё поддерживается)
Старый формат конфига продолжает работать для обратной совместимости:module должен быть относительным путём внутри workspace. Абсолютные пути и выход за пределы workspace отклоняются.
Миграция: для новых hooks используйте систему обнаружения на основе каталогов. Устаревшие обработчики загружаются после hooks, обнаруженных по каталогам.
CLI Commands
Список hooks
Информация о hook
Проверка пригодности
Включить/выключить
Bundled hook reference
session-memory
Сохраняет контекст сеанса в память при выполнении/new.
События: command:new
Требования: должен быть настроен workspace.dir
Вывод: <workspace>/memory/YYYY-MM-DD-slug.md (по умолчанию ~/.openclaw/workspace)
Что делает:
- Использует запись сеанса до сброса, чтобы найти корректный транскрипт
- Извлекает последние 15 строк диалога
- Использует LLM для генерации описательного slug имени файла
- Сохраняет метаданные сеанса в файл памяти с датой
2026-01-16-vendor-pitch.md2026-01-16-api-design.md2026-01-16-1430.md(резервная временная метка, если генерация slug не удалась)
bootstrap-extra-files
Добавляет дополнительные bootstrap-файлы (например, локальные для монорепозиторияAGENTS.md / TOOLS.md) во время agent:bootstrap.
События: agent:bootstrap
Введение в работу
Вывод: файлы не создаются; подмена выполняется только в памяти.
Конфиг:
- Пути вычисляются относительно workspace.
- Файлы должны оставаться внутри workspace (проверяется через realpath).
- Загружаются только bootstrap-файлы с распознаваемыми базовыми именами.
- Сохраняется allowlist для субагентов (
AGENTS.mdиTOOLS.mdтолько).
command-logger
Логирует все события команд в централизованный аудиторский файл. События:command
Требования: отсутствуют
Вывод: ~/.openclaw/logs/commands.log
Что делает:
- Захватывает детали события (действие команды, временную метку, ключ сеанса, ID отправителя, источник)
- Добавляет запись в лог-файл в формате JSONL
- Работает бесшумно в фоновом режиме
boot-md
ЗапускаетBOOT.md при старте Gateway (шлюза) (после запуска каналов).
Для выполнения должны быть включены внутренние hooks.
События: gateway:startup
Требования: должен быть настроен workspace.dir
Что делает:
- Читает
BOOT.mdиз вашего рабочего пространства - Выполняет инструкции через runner агента
- Отправляет любые запрошенные исходящие сообщения через инструмент сообщений
Best Practices
Делайте обработчики быстрыми
Hooks выполняются во время обработки команд. Держите их лёгкими:Корректно обрабатывайте ошибки
Всегда оборачивайте рискованные операции:Раннее фильтрование событий
Возвращайтесь раньше, если событие не относится к делу:Используйте конкретные ключи событий
По возможности указывайте точные события в метаданных:Debugging
Включение логирования hooks
Gateway (шлюз) логирует загрузку hooks при запуске:Проверка обнаружения
Выведите список всех обнаруженных hooks:Проверка регистрации
В обработчике логируйте момент его вызова:Проверка пригодности
Узнайте, почему hook не пригоден:Testing
Логи Gateway (шлюза)
Отслеживайте логи Gateway (шлюза), чтобы видеть выполнение hooks:Тестирование hooks напрямую
Тестируйте обработчики изолированно:Architecture
Core Components
src/hooks/types.ts: определения типовsrc/hooks/workspace.ts: сканирование каталогов и загрузкаsrc/hooks/frontmatter.ts: разбор метаданных HOOK.mdsrc/hooks/config.ts: проверка пригодностиsrc/hooks/hooks-status.ts: отчёт о статусеsrc/hooks/loader.ts: динамический загрузчик модулейsrc/cli/hooks-cli.ts: CLI‑командыsrc/gateway/server-startup.ts: загрузка hooks при старте Gateway (шлюза)src/auto-reply/reply/commands-core.ts: генерация событий команд
Discovery Flow
Event Flow
Troubleshooting
Hook не обнаружен
-
Проверьте структуру каталогов:
-
Проверьте формат HOOK.md:
-
Выведите список всех обнаруженных hooks:
Hook не выполняется
Проверьте требования:- бинарные файлы (проверьте PATH)
- переменные окружения
- значения конфига
- совместимость с ОС
Hook не пригоден
-
Убедитесь, что hook включён:
- Перезапустите процесс Gateway (шлюза), чтобы hooks перезагрузились.
-
Проверьте логи Gateway (шлюза) на наличие ошибок:
Ошибки обработчика
Проверьте ошибки TypeScript/импорта:Migration Guide
С устаревшего конфига на обнаружение
До:-
Создайте каталог hook:
-
Создайте HOOK.md:
-
Обновите конфиг:
-
Проверьте и перезапустите процесс Gateway (шлюза):
- Автоматическое обнаружение
- Управление через CLI
- Проверка пригодности
- Лучшая документация
- Единая структура