Действующий публичный мониторинг

Codex Monitor

Codex Monitor показывает реальные события, которые Codex Gateway копирует из HTTP, SSE и WebSocket потока. Неблокирующий outbox отправляет очищенные события в NATS JetStream, projector сохраняет проекцию в SQLite, а Bun/Vue выводит сессии, reasoning, инструменты, usage, ошибки и публичные эфиры.

Интеграция с Codex Gateway и выпуск мониторинга: 7–8 сентября 2026.Версия 72fb980f8 кадров интерфейса

Архивный кадр предыдущей версии: Закрытая консоль владельца показывает реальные сессии Codex, активный запрос, доступный текст reasoning, ответы и расход токенов из proxy.

01 / Задача

Живой поток сессий и инструментов Codex

Нужно наблюдать работу Codex на отдельном поддомене без вмешательства в запросы модели. Мониторинг должен переживать недоступность NATS, восстанавливать поток по cursor и отделять закрытые сессии владельца от явно опубликованных трансляций.

Сценарий: Владелец наблюдает работу Codex, а посетитель видит только явно опубликованные сессии в режиме чтения.

Что делал

  • Добавил наблюдение HTTP, SSE и WebSocket внутри Ruby proxy без изменения основного relay-потока.
  • Реализовал очистку, ограниченный файловый outbox, отдельный JetStream stream и durable projector в SQLite WAL.
  • Расширил Vue интерфейс сессиями, лентой reasoning и инструментов, трафиком, usage, состоянием доставки и сравнением.
  • Добавил ручные названия чатов, сворачиваемый служебный контекст, предварительный просмотр, временные ссылки и немедленный отзыв эфира.

02 / Реализация

Что отличает реализацию

События приходят из реального proxy, а не из симулятора интерфейса. eventId и sequence обеспечивают идемпотентную проекцию, durable consumer подтверждает сообщение после записи, usage учитывается по попыткам без повторного сложения snapshots. Временная ссылка немедленно отзывается; старый YouTrack-контур сохранён как отдельная часть системы.

Скриншоты

Экраны, формы, ошибки

Скриншоты, схемы и исходные материалы сохранены на языке оригинала; подписи и описание переведены.

03 / Технологии

Что использовано

Vue / TypeScript 42%Node.js / YouTrack worker 27.8%Bun / NATS monitor API 16.5%SQLite / TypeScript projector 9.6%Bun / HTTP server 2.8%TypeScript event contracts 1.3%

Доли по размеру прикладных файлов Git в закреплённой версии. Каждый файл отнесён к одной подсистеме по правилам scripts/generate-stack-share.mjs; тесты, ассеты, зависимости и generated-файлы исключены. Округление — до 0,1%. Это состав кода, а не уровень владения технологиями.

Vue 3 / TypeScript

Закрытая консоль, публичный эфир, timeline и восстановление интерфейса по cursor.

Bun

Закрытый и публичный HTTP/WebSocket API, preview, публикация и отзыв ссылок.

NATS JetStream

Поток CODEX_TRACE, лимиты хранения, durable delivery и раздельные credentials.

SQLite WAL

Идемпотентная проекция событий, попыток, usage, названий и публикаций.

Ruby Codex proxy

Наблюдение HTTP/SSE/WebSocket, очистка и неблокирующий файловый outbox.

04 / Решения

Как устроен проект

  • Proxy копирует события после очистки и пишет их в ограниченный outbox; недоступность NATS не останавливает запрос Codex.
  • JetStream consumer подтверждает событие после транзакционной записи проекции; eventId и sequence защищают историю от повторной доставки.
  • Usage хранится по попыткам и revision snapshot: cached входит во входные, reasoning входит в выходные, старые агрегаты показаны отдельно.
  • По умолчанию заголовок берётся из первого пользовательского сообщения. Ручное название в Codex Monitor имеет приоритет; имя чата в Codex не изменяется.
  • Публичная ссылка содержит только разрешённую историю выбранной сессии, действует до семи дней и перестаёт работать сразу после отзыва.
  • Прежний YouTrack/NATS worker сохранён отдельным контуром и не смешан с пассивным мониторингом Codex.
  • Монитор и YouTrack gateway используют NATS напрямую. Synadia Agents SDK, discovery и универсальный prompt bridge удалены; очередь заданий и результатов сохранена.
Поток наблюдаемых событий Codex
Поток наблюдаемых событий Codex

05 / Проверка

Сценарии демки

  1. В консоли выбрать сессию, задать понятное название и просмотреть поручение, reasoning, сообщения и инструменты в хронологическом порядке.
  2. Открыть трафик и сопоставить request, attempt, transport, длительность и очищенное событие по идентификаторам корреляции.
  3. Сверить usage по попыткам и проверить состояние proxy, NATS, projector, cursor и заполнение outbox.
  4. Проверить разрешённый диапазон истории, опубликовать временную ссылку, открыть её как посетитель и немедленно отозвать.

Результаты проверок

  • В реальном нагрузочном снимке p50 доставки события составил 128 мс, p95 — 172 мс; время ответа модели в этот замер не входит.
  • Ledger одной проверочной сессии вырос на 272 токена и сохранил тот же итог после перезапуска projector.
  • Во время проверки outbox был пуст, NATS не имел pending и ackPending, OOM-событий не обнаружено.

Ограничения

  • Источник данных — только Codex Gateway; локальные файлы Codex Desktop и App Server не читаются.
  • Зашифрованный reasoning не восстанавливается, скрытые system/developer инструкции не сохраняются, отсутствие трафика означает только отсутствие новых событий.
  • Иерархия агентов показывается лишь при явных идентификаторах в proxy-трафике; система не запускает, не останавливает и не перенастраивает модели.
  • Автоматическая очистка покрывает известные секреты, но владелец всё равно проверяет полный предварительный просмотр перед публикацией.

Технические заметки

Модули, API, схема данных, запуск и результаты проверок.

Документация →Материалы ↓