Модуль XVI — голосовые агенты и агенты реального времени
Модуль XVI управляет разговорными агентами и агентами реального времени. Это плоскость наблюдения и управления: она не переизобретает голосовой SDK (Realtime API, WebRTC, ASR или TTS) и сама никогда не открывает медиапоток. Она решает, кто может открыть голосовую сессию, с какой моделью и провайдером, под какой политикой, и отслеживает метаданные этой сессии — но никогда её содержимое.
Что это такое
Заголовок раздела «Что это такое»Открытие голосового интерфейса трактуется как привилегированное действие, а не
свободная операция. Политика — default-DENY: сессия без разрешающей политики
отклоняется. Открытие двухфазное и проходит через гейт human-in-the-loop
(approval gate); оно привязано к plan_hash, так что
одобрение нельзя молча повысить до более сильной модели (anti-TOCTOU), аудируется на
реального принципала (никогда system) и фиксируется в режиме только добавление.
Сам модуль никогда не вызывает провайдера — актуация уходит через отдельный seam отправки.
Вторая половина — наблюдение: модуль отслеживает только метаданные сессии — вычисляемое состояние (live/idle/ended, вычисляемое во время чтения по свежести активности, без хранимой колонки жизненного цикла), число ходов, длительность, задержку (честные среднее и максимум по реальным сэмплам) и язык BCP-47. Из этого он поднимает управленческие findings: нарушение политики, когда телеметрия называет агента/модель/провайдера, не разрешённого ни одной политикой; finding деградации задержки, когда задержка пересекает SLA политики; и finding неуправляемого открытия, когда открытие пытаются выполнить без подключённого гейта — пробел поверхностируется, а открытие всё равно отклоняется.
Контракт и сущности
Заголовок раздела «Контракт и сущности»Модуль объявляет три сущности в общей модели данных:
| Сущность | Изменяемость | Назначение |
|---|---|---|
| session | изменяемая (upsert) | метаданные сессии; ноль содержимого |
| policy | изменяемая | управленческое объявление — кто может открыть, с какой моделью/провайдером (default-DENY) |
| decision | только добавление | неизменяемый журнал решений об открытии/закрытии |
Политика сопоставляется по агенту, разрешённой модели и разрешённому провайдеру (каждый
конкретный или wildcard), с опциональными границами по минутам сессии и SLA задержки.
Отсутствие сопоставленной политики означает DENY. Журнал решений записывает каждый
open_request, open и close с вердиктом политики, статусом гейта и статусом исхода.
Доступ на чтение — роль viewer и выше; объявление политики и открытие сессии — это
административные, тенантно-ограниченные и аудируемые действия. Эти маршруты модуля
публикуются в отдельном beta-справочнике маршрутов модулей,
а не в стабильном основном контракте — их форма на уровне полей живёт в типизированных
интерфейсах продукта. Денежных сумм здесь нет; FinOps
(модуль XI) владеет стоимостью.
Что он потребляет и производит
Заголовок раздела «Что он потребляет и производит»Модуль владеет deny-closed seam-ом приёма — собственным событием
voice.telemetry.observed — через который внутрипроцессный зонд подавал бы
метаданные сессии. Протокол по построению содержит минимум данных: парсер телеметрии
несёт allow-list и отклоняет всё событие, если видит запрещённый ключ, поэтому
никакое аудио, текст транскрипта, текст ASR/TTS, содержимое prompt/response или PII
говорящего никогда не могут быть сохранены. Единственный сохраняемый сигнал транскрипта —
односторонний хеш внешнего локатора транскрипта — доказательство того, что
транскрипт существует, но никогда сам транскрипт. Управленческие findings излучаются как
finding.reported с хешированными деталями, после коммита.
Статус актуации
Заголовок раздела «Статус актуации»Управляемое открытие отправляет команду вживую: как только оператор обеспечит голосовой диспетчер, одобренное открытие чеканит серверный эфемерный учётный данные и возвращает только этот учётный данные плюс координаты подключения — модель, голос, инструменты и определение ходов фиксируются из политики, никогда от клиента, а мастер-ключ провайдера никогда не покидает сервер. Без этого обеспечения seam отправки находится в режиме deny-closed: одобренное открытие честно записывается как «declared, not opened», а не подделывается.
Связанное
Заголовок раздела «Связанное»- Каталог модулей — где находится модуль XVI и его статус актуации.
- Справочник шины событий —
finding.reportedнесёт голосовые findings. - Модуль IV — оркестрация — соседний seam отправки (боевой огонь).
- Модуль X — маршрутизация моделей и провайдеров — какие модели может разрешить политика.
- Управление и одобрение — двухфазный гейт открытия на практике.
- Честность и ограничения — разделение наблюдение/управление/актуация.