Хуки — расширение
Хуки, реализуемые вне ядра. Список всех хуков — 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.