Хуки
Хук — это способ bee вставить слово. Среда агента вызывает bee в определённый момент, bee печатает то, что хочет сказать, и среда вкладывает это в контекст модели.
bee hook install --harness claude --scope project # или codex, или hermeshook install пишет правильную конфигурацию для названной вами среды, включая
флаги, в которых легко ошибиться — почему они различаются, видно в таблице ниже.
Три момента
Заголовок раздела «Три момента»| когда | что попадает в контекст агента |
|---|---|
| начало сессии | кто он (SOUL), действующие правила, последние факты |
| каждый запрос | правила + записи памяти, совпавшие с только что заданным |
| при записи файла | правила, действующие для этого файла |
Запустите их вручную, чтобы увидеть, что именно они выдают:
bee hook session-startecho '{"prompt":"почини падающий тест datasource"}' | bee hook promptecho '{"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" ← исправлено после того, как увиделОдна лишняя правка — и файл в порядке. Это даёт исправление, а не предотвращение. Называть это «перед записью» было бы преувеличением.