Хуки — расширение

Хуки, реализуемые вне ядра. Список всех хуков — 06-hooks-reference.


6.21 script_hook

Скриптовый хук на Rhai или JavaScript: реализует любую точку жизненного цикла в скрипте. Синтаксис и хелперы — 07-scripts.


agent_events

Нативный (не скриптовый) журнал действий агента. Держит события в in-memory кольцевом буфере (без диска) на выбранных точках жизненного цикла; парный маршрут GET /v1/events отдаёт журнал наружу с long-poll и cursor drain. Реализация — модуль agent_os_events (hook::EventsFactory).

Память процесса: события не переживают рестарт и не дают «догнать» отключившегося потребителя — для живого стрима/дашборда этого достаточно и это дешевле (durable-журнал — отдельная задача).

# config/agents/<agent>/hooks/events.yaml
kind: agent_events
name: agent_events
agent: <agent>                          # по умолчанию — name хука
on: [after_tool_result, after_turn]     # по умолчанию [after_tool_result]
ignore: [settings_get]                  # не логировать эти инструменты
mutating: [order_create, order_cancel]  # пометить как изменение состояния
capacity: 5000                          # размер кольцевого буфера
show_notice: false                      # notice в чат-UI на каждое событие
Поле Описание
agent метка агента в событии; по умолчанию — name хука
on точки: after_tool_result, after_turn, after_loop, on_terminate, on_error, on_budget_threshold
watch / ignore фильтр инструментов (пусто = все, кроме ignore)
mutating инструменты, помечаемые как изменение состояния
capacity размер in-memory кольцевого буфера (событий)
show_notice / notice уведомление в чат-UI на каждое событие

Пишется минимум: seq, ts, agent, session, user_id, tool, kind, mutating, success, args_fp, detail (args_fp — некриптографический отпечаток аргументов, FNV-1a; сами аргументы и результат не сохраняются). Наружу журнал отдаёт GET /v1/events (admin): ?mode=drain|wait|events|version, пачка событий seq > since, has_more/dropped_window. Полный контракт и клиентский цикл — в Подписки на события.


dll_hook

Хук из нативного Rust DLL (C ABI). Плагин реализует любую точку жизненного цикла ядра; JSON-аргументы (before_tool_call args, after_tool_result data/visual, before_inference request) передаются как UTF-8 JSON.

# config/agents/<name>/hooks/audit.yaml
kind: dll_hook
path: plugins/echo.dll
hook: audit               # имя kind, зарегистрированного плагином

Точки жизненного цикла — Основы; сборка и C ABI — 20-native-plugins.