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

Модуль II — живая работа и сессии

Модуль II — это представление живой работы estate: что каждая сессия агента делает прямо сейчас, её живые суммарные токены и стоимость, выводимое состояние Claude Code и реконструируемая временная шкала. Тогда как модуль I (инвентаризация) материализует устойчивый estate, модуль II ведёт живое операционное наложение на каждую сессию поверх того же потока наблюдений — и показывает только то, что этот поток честно несёт.

Модуль II — управляемый шиной модуль слоя Core, родственный инвентаризации. Он ведёт живую запись с ключом по внешней ссылке каждой сессии, построенную из совместного потока наблюдений — никогда не опрашиваемую, никогда не сфабрикованную. На каждую сессию он отслеживает:

  • текущее действие (последний использованный инструмент) и ресурс/режим, которого оно коснулось;
  • живые суммарные токены и стоимость, считываемые из выборок стоимости (канонический ledger стоимости и FinOps — это модуль XI, а не здесь; это только живая цифра);
  • выводимое состояние Claude Code (cc_state); и
  • временную шкалу, к которой каждое наблюдаемое событие добавляется в порядке приёма.

Модуль регистрирует две сущности в области арендатора. sessions.live хранит живую запись на каждую сессию — текущее действие/ресурс/режим, ссылку на модель, живые входные/выходные токены, живую стоимость, счётчики событий и вызовов инструментов, а также метки времени первого/последнего события. sessions.timeline хранит одну воспроизводимую строку на каждое событие, упорядоченную по приёму. Столбца с хранимым жизненным циклом нет: совместный поток не несёт сигнала о завершении или сбое, поэтому единственный честный признак активности — выводимое cc_state.

cc_state выводится во время чтения из недавности событий — active / idle / ended — и переходит в состояние скрытого уклонения, когда коннектор поднимает эту находку (модуль никогда не записывает его сам). Чтения обслуживаются под маршрутами модуля (живой список, одна сессия, временная шкала на сессию) плюс живой поток SSE; каждое чтение требует разрешения на чтение сессии, а открытие потока автоматически проходит аудит. Канал SSE строго изолирован по арендатору (клиент получает только снимки для своего авторизованного арендатора) и работает по принципу наилучших усилий (медленный клиент пропускает промежуточный кадр и получает следующий — приём никогда не блокируется).

Модуль II потребляет тот же поток наблюдений с минимальными данными, что и инвентаризация — edge.observed, cost.sampled и finding.reported. Только рёбра, чьим инициатором является сессия, порождают живую работу; выборки стоимости, привязанные к сессии, добавляются к живой цифре токенов/стоимости (никакой CostRecord здесь не записывается); находки с субъектом- сессией аннотируются, а находка анти-уклонения помечает состояние уклонения. Два поля выводятся живо из тех же сигналов: agent_ref — из агента, приписанного сессии, и summary — из находки уплотнения контекста (forensic), чей заголовок по контракту безопасен в качестве сводки — никогда не сфабрикованная LLM сводка.