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

Доставленный вывод и использование

Требуется Bee 1.0.0-beta.16 или новее с командой bee delivery. Проверьте поддержку в своём исполняемом файле через bee delivery --help.

Величина Что она показывает
Измеренные байты UTF-8 Размер окончательного вывода Bee после успешной записи и сброса буфера, включая оболочку формата и перевод строки. Это наблюдение локального вывода.
Именованные оценки токенов utf16-ceil-div4, версия 1: число кодовых единиц UTF-16 в окончательном выводе делится на четыре с округлением вверх. Это не токенизатор провайдера.
Использование провайдера из внешнего источника Отдельная команда bee budget --measured читает счётчики из явно выбранного локального журнала Codex. Отчёт доставки не собирает и не согласует эти счётчики.
Экономия, стоимость и соблюдение правил Не измеряются. Байты вывода и оценки не доказывают потребление провайдера, начисления, экономию, соблюдение правил моделью или качество.

Оператор или агент может посмотреть, что Bee успешно записал, прежде чем выбирать контекст для проверки. Дайте существующему хуку Claude UserPromptSubmit отработать обычным образом, затем прочитайте локальные метаданные. Второй вызов хука для отчёта не нужен: ещё одна выдача вывода может создать ещё одно событие.

Хранилище по умолчанию — ~/.bee/usage/delivery-v1. При заданном BEE_HOME путь равен $BEE_HOME/.bee/usage/delivery-v1; BEE_HOME — родитель каталога .bee. Report и read требуют явный --store и выполняются до загрузки конфигурации и проверки обновлений. Инициализация, база данных, модель и сеть не нужны.

Окно терминала
delivery_store="${BEE_HOME:-$HOME}/.bee/usage/delivery-v1"
bee delivery --help
bee delivery report --store "$delivery_store" --limit 100

Начните с totalsStatus, issues, deliveredEvents и deliveredUtf8Bytes. В суммы байтов и оценок входят только записи Delivered. eventKinds также описывает зарегистрированные ошибки записи; размер попытки при неудачной или частичной записи не является числом доставленных байтов. Массив оценок разделяет идентификаторы и версии оценщика.

totalsStatus: lower_bound означает наличие наблюдений, а не полноту интервала. observationWindowComplete всегда равен false; droppedObservationCount и measuredProviderTokens равны null. Недостающие данные остаются неизвестными, даже если числовые счётчики равны нулю.

Найдите нужную сессию и поверхность вывода

Заголовок раздела «Найдите нужную сессию и поверхность вывода»
Вопрос Поддерживаемый просмотр и ограничение
Какая поверхность вывода? Смотрите записи groups с dimension: surface: hook.prompt.plain или hook.prompt.context-json. Фильтра по поверхности нет. Это два формата одного хука запроса.
Какая сессия? Используйте вместе --session-kind и --session. Нативные записи используют claude-native-session и нативный UUID. В группах сессий identity — ID сессии, а version — тип её идентичности. Сопоставление точное, с учётом регистра.
Какой источник или рецепт? У нативных записей sourceRefHash: null и recipeHash: null. Они неизвестны и несопоставимы. Совокупный элемент steering-block, версия 1, не определяет отдельное правило или ревизию источника. Фильтра по источнику нет.
Какой статус? Смотрите eventKinds; если UUID события уже известен, через read проверьте observation.observation.kind. Нативные итоги Withheld явно недоступны: nativeWithheldEvents: null, nativeWithheldStatus: unavailable_no_native_producer.
Какой интервал времени? У известной записи observation.observation.observedAtUtc — время наблюдения попытки записи в UTC. В отчётах нет фильтра по времени, итогов за интервал или списка событий; полный интервал от начала до конца установить нельзя.

Следующий UUID синтетический. Замените его точным нативным ID сессии своего наблюдения:

Окно терминала
bee delivery report --store "$delivery_store" \
--session-kind claude-native-session \
--session 11111111-1111-4111-8111-111111111111 --limit 100

groups даёт три представления одного доставленного вывода: элемент, поверхность и сессия. Не складывайте их итоги. --limit ограничивает группы по всем трём представлениям, а не события или входные байты; итоги вычисляются до этого ограничения. Значение по умолчанию и максимум — 100; 0 возвращает итоги без групп. Проверяйте omittedGroups. Если группы пропущены, увеличьте меньший лимит или выберите одну известную сессию и повторите запрос. Курсора продолжения и постраничного просмотра нет; больше 100 групп нельзя полностью запросить одним отчётом. Не складывайте пересекающиеся отчёты.

read требует уже известный ненулевой UUID события с дефисами. Отчёты не перечисляют UUID событий, а нативный хук не печатает квитанцию добавления. Используйте команду только если доверенный производитель или тестовая квитанция отдельно предоставили ID события; это не команда обнаружения событий. Синтетический UUID показывает синтаксис и при отсутствии записи возвращает unavailable:

Окно терминала
bee delivery read --store "$delivery_store" \
--event 22222222-2222-4222-8222-222222222222

Найденный ответ содержит status: recorded_observation; его observation включает версию схемы, порядковый номер в сессии и вложенные метаданные наблюдения. Сам по себе этот статус не означает, что запись была Delivered.

Попробуйте корректный пустой отчёт офлайн

Заголовок раздела «Попробуйте корректный пустой отчёт офлайн»

Этот пример для POSIX-оболочки использует новый пустой временный домашний каталог и не требует сервисов. Он не создаёт журнал учёта и не записывает внутренние файлы хранилища. В CLI нет публичной команды добавления, импорта или создания синтетических записей.

Окно терминала
delivery_demo=$(mktemp -d)
BEE_HOME="$delivery_demo" bee delivery report \
--store "$delivery_demo/.bee/usage/delivery-v1" --limit 0
rmdir "$delivery_demo"

Команда отчёта завершается с кодом 5, ожидаемым при недоступных данных; последний rmdir удаляет пустой демонстрационный каталог. Выбранные поля из фактического JSON-вывода:

{
"totalsStatus": "unknown",
"observedEvents": 0,
"deliveredEvents": 0,
"deliveredUtf8Bytes": 0,
"groups": [],
"omittedGroups": 0,
"issues": ["missing", "observation_window_open"],
"observationWindowComplete": false,
"measuredProviderTokens": null,
"nativeWithheldEvents": null
}

Это показывает неизвестное окно наблюдений, а не сессию с измеренным нулевым потреблением. Чтение синтетического события из отсутствующего хранилища также даёт код 5 с status: unavailable и observation: null.

Вывод — JSON с завершающим переводом строки; не добавляйте --json к командам delivery. Поддерживаются только delivery --help, delivery report и delivery read. Команд baseline/check, ремонта, сброса или записи в журнал нет.

Интерфейс Контракт
report Обязательный --store PATH; необязательная пара --session-kind KIND --session ID; необязательный --limit 0..100.
read Обязательные --store PATH --event UUID; без фильтров отчёта и лимита.
Строки идентичности 1–128 ASCII-букв/цифр или - _ . : /. Нативные ID сессий — ненулевые UUID; другие типы идентичности не считаются Claude по умолчанию.
Неверное использование Неизвестные, повторные, недостающие или пустые опции отклоняются. Не более 16 аргументов и суммарно 16384 кодовых единиц UTF-16 в аргументах.
Граница вывода Не более 262144 байт UTF-8 JSON без завершающего перевода строки. Превышение даёт status: report_cap и код 5 вместо обрезанного JSON. Опции --budget нет.
Код 0 Справка, отчёт хотя бы с одним наблюдаемым событием или найденное событие. Проверяйте проблемы и типы: подтверждённый префикс или отчёт только с ошибками тоже может дать 0.
Код 4 Неверное использование. Исправьте опции, прежде чем интерпретировать результат.
Код 5 Нет подходящих наблюдений, событие недоступно или достигнута граница вывода. Изучите JSON: это не доказательство нулевой доставки.

Запись, приватность и ограничения при сбоях

Заголовок раздела «Запись, приватность и ограничения при сбоях»

Нативный производитель охватывает только существующий путь Claude UserPromptSubmit, в виде обычного текста и context JSON. Нужны корректный CLAUDE_CODE_SESSION_ID и подходящая JSON-оболочка запроса; корректный ID сессии в оболочке имеет приоритет. Сырой ввод или ввод только аргументом, неоднозначная/вложенная идентичность среды, повреждённые оболочки или оболочки длиннее 65536 кодовых единиц UTF-16 и вывод не в UTF-8 остаются без наблюдения. Session-start, pre-tool, Codex и Hermes не являются нативными производителями доставки. Не вкладывайте вызовы хуков друг в друга и не повторяйте их вручную для измерения использования.

Журнал хранит ID события/сессии, идентичность поверхности и элемента, статус, время UTC, порядок в сессии, число байтов и именованную оценку. Тела запросов/вывода, хеши тел, тексты исключений и учётные данные не сохраняются. Метаданные всё же раскрывают идентичность сессии, время и объём: храните их локально и проверяйте перед передачей. Контрольные суммы проверяют согласованность метаданных, а не подлинность.

Bee наблюдает доставку только после записи окончательного вывода и сброса буфера. Это не транспортный ACK и не доказательство потребления моделью. Сбои учёта сохраняют основной вывод хука, диагностику и поведение при выходе. Наблюдатель ждёт добавления до 100 мс; на одного наблюдателя допускается не более одного незавершённого добавления. Медленное добавление может завершиться позже. Это не жёсткий срок для файловой системы. Занятое хранилище, аварии, предел ёмкости и ошибки записи могут терять наблюдения; маркеры потерь не считают каждую потерю.

Хранилище по умолчанию удерживает до 2048 событий (16 сегментов по 128). Оно сохраняет ID и прекращает добавление при заполнении, а не вытесняет старые записи. Точный повтор того же ID события и метаданных идемпотентен; конфликтующий повтор сохраняет первую запись. Отдельные вызовы получают новые ID. Ни это, ни порядок внутри сессии не гарантируют полноту или наблюдение ровно один раз.

Чтение использует ограниченные обычные файлы, отклоняет неподдерживаемые ссылки/формы файлов и при повреждении сохраняет проверенный префикс. Метаданные кадра ограничены 4096 байтами плюс перевод строки; заголовок — 4096 байтами. Проверяйте issues на отсутствие, занятость, повреждение, ёмкость и ошибки ввода-вывода. Префикс может быть полезен, но неполон. Публичных команд изменения ёмкости, восстановления или ротации нет; не редактируйте внутренние файлы для создания наблюдений и не считайте удаление механизмом продолжения.

bee context doctor проверяет явно выбранные локальные объявления контекста до использования; обычный bee budget прогнозирует размер контекста. Учёт доставки наблюдает небольшую часть фактических записей вывода Bee. Отдельная команда ниже описывает офлайн-чтение внешних счётчиков использования Codex:

Окно терминала
bee context doctor --help
bee budget --measured --help --json

Этот читатель требует --harness codex, точный нативный UUID --session и явный файл --log. Потоки response и history остаются раздельными; он не приписывает использование провайдера доставленному правилу и не подтверждает счёт. Не прибавляйте его счётчики к оценкам доставки и не выводите экономию ни из тех, ни из других.

См. справочник команд, настройку хуков, инструменты контекста и заметки о выпуске.