Перейти к содержимому

Хуки

Хук — это способ bee вставить слово. Среда агента вызывает bee в определённый момент, bee печатает то, что хочет сказать, и среда вкладывает это в контекст модели.

Окно терминала
bee hook install --harness claude --scope project # или codex, или hermes

hook install пишет правильную конфигурацию для названной вами среды, включая флаги, в которых легко ошибиться — почему они различаются, видно в таблице ниже.

когда что попадает в контекст агента
начало сессии кто он (SOUL), действующие правила, последние факты
каждый запрос правила + записи памяти, совпавшие с только что заданным
при записи файла правила, действующие для этого файла

Запустите их вручную, чтобы увидеть, что именно они выдают:

Окно терминала
bee hook session-start
echo '{"prompt":"почини падающий тест datasource"}' | bee hook prompt
echo '{"file_path":"src/Catalog/Data/ProductDataSource.cs"}' | bee hook pre-tool

Что каждая среда поддерживает на самом деле

Заголовок раздела «Что каждая среда поддерживает на самом деле»
среда начало сессии каждый запрос перед записью
Claude Code ✅ — нужен --emit claude-pretool
Codex не подключено
Hermes едет с первым запросом --emit context-json не подключено

Каждая ✅ получена запуском настоящей среды против сгенерированной самой bee конфигурации и просьбой к модели процитировать полученное. Пробелы — это не «ещё не сделано»: каждый из них является свойством самой среды.

Claude Code отбрасывает обычный stdout на событии перед записью. Выживает только hookSpecificOutput.additionalContext. Измерено в обе стороны: с обычным текстом модель сообщила, что не получила ничего; со структурированным ответом процитировала правило дословно.

У Codex нет инструмента Write — он правит файлы, запуская shell-команды, поэтому событие перед записью несёт командную строку, а не путь к файлу, и искать правило не по чему.

Hermes использует возвращённые данные только на одном событии (pre_llm_call). Два других запускают bee и выбрасывают вывод, так что их подключение выглядело бы рабочим и не делало бы ничего.

Хук перед записью выполняется до записи, но его контекст доходит до модели вместе с результатом инструмента — поэтому первая запись правилу не следует, и модель её исправляет. С правилом, требующим, чтобы каждый файл .cs начинался со строки лицензии:

1. Write "public class Thing" ← правило ещё не пришло
2. Edit "// LICENCE-7" ← исправлено после того, как увидел

Одна лишняя правка — и файл в порядке. Это даёт исправление, а не предотвращение. Называть это «перед записью» было бы преувеличением.