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

Live-ingest — внутрипроцессный производитель наблюдений

Live-ingest (modules/liveingest) — один из 30 подключённых модулей: внутрипроцессный производитель, а не слот возможности. Он не входит в историческую нумерованную карту I–XXIII. Он существует по одной архитектурной причине: внепроцессный SourceConnector может передавать только запечатанную сумму наблюдения (ребро / стоимость / находка) по своему gRPC-контракту, в котором нет RPC для событий и нет текстового поля — поэтому он не может опубликовать детективное событие. Только внутрипроцессный модуль обладает способностью публикации на шину, поэтому live-ingest — это половина «живого отвода» (live-tap), испускающая те события для модулей, которые их уже потребляют.

Коннектор телеметрии Claude управляющей плоскости работает вне процесса как встроенный плагин; его поток Gather несёт только замороженный oneof Observation. Этот протокольный контракт намеренно заморожен (проверяется на ломающие изменения; см. политику стабильности API) и не несёт ни выдержки, ни текстовой поверхности. Live-ingest — это внутрипроцессный производитель, который поставляет два события, которые коннектор структурно не может: guardrail.observed для модуля IX и voice.telemetry.observed для модуля XVI. Он не владеет ни сущностями, ни REST-поверхностью; это публикующий компонент на шину событий.

Это недостающий производитель для цепочки детекторов безопасности, которая уже потребляет guardrail.observed. Он deny-closed и подключается по желанию:

  • По умолчанию (инспекция выключена). Модуль ни на что не подписывается, ничего не публикует и видимо логирует свою пустую половину — никогда не молчаливый no-op.
  • При включённом opt-in оператора. Он подписывается на edge.observed и для ребра, чей ресурс является разрешённой ссылкой на инструмент, выводит ограниченную, уже маскированную выдержку tool_args и публикует её как ObservedText, несущий только нечувствительные ссылочные поля. Выдержка — это идентификатор ресурса, который коннектор уже замаскировал у источника (санированный путь, host+path без query или учётных данных, имя Bash-программы с отброшенными аргументами, ссылка на MCP-инструмент). Live-ingest ограничивает её, а цепочка безопасности снова её зажимает — тройная защита. Содержимое аргумента отбрасывается на коннекторе и никогда не достигает шины.

Затем цепочка детекторов автоматически испускает находку на каждое обнаружение, на реальном трафике.

Подключённый внутрипроцессный производитель только для метаданных голосовых/realtime-ходов из allow-list — никогда не аудио и никогда не текст транскрипта. Полезная нагрузка — это типизированное значение, которое по построению не может нести аудио, транскрипт или PII, а потребитель отклоняет любой образец с ключом вне allow-list или с отсутствующей ссылкой на сессию/агента. Поскольку в этой сборке нет голосового realtime-бэкенда, его никто не вызывает: половина наблюдения честно бездействует и не фабрикует никакой телеметрии, пока её не начнёт питать бэкенд.