Голосовой агент в независимой сети: Codex и webrtc-komaroff Исследование от 2 октября 2026 года. Как читать Откройте index.html в браузере. HTML содержит весь текст, оформление, навигацию и семь кликабельных SVG-схем. Он не загружает сетевые ресурсы. Каждый блок схемы ведёт к объяснению роли и коду. Оглавление содержит все главы и подразделы. Дополнительные JSON-файлы полезны для проверки, но не нужны для отображения текста. Внешние ссылки ведут к исходникам закреплённых версий и документации. Они потребуют доступа к соответствующему GitLab/GitHub. Относительные ссылки на ранее созданный учебник и демонстрации Codex рассчитаны на соседний checkout codex-desktop-linux. Отсутствие этих файлов не мешает читать текущий учебник, но перейти к ним тогда не получится. Что лежит рядом build_textbook.py - исходный текст, таблицы и генератор HTML. evidence.json - 52 опоры на код и 18 значимых утверждений. desktop-audio-processing-evidence.json - пять фрагментов Desktop-бандла 26.928.20755, SHA256 и UTF-8 byte offsets. verification.json - выполненные проверки и их границы. validate_textbook.py - статические тесты документа, без сети. test_navigation.js - тесты JS на mock DOM, не настоящий браузер. test_audio_notes.py - Sonora/Opus, сравнение очистки, ссылки схем, краткость выжимки и mock getStats. probe_audio_bounds.py - проба настоящих классов Core с mock publish. render_schemes.py - отрисовка только SVG через ffmpeg/librsvg. Команды из этой папки # Пересобрать HTML без обращения к сети. Pygments необязателен: # если его нет, примеры сохраняются, но без цветной подсветки синтаксиса. python3 build_textbook.py # Проверить anchors, меню, форматы, ссылки и автономность документа. python3 validate_textbook.py -v # Проверить новые пояснения и исполнить getStats-пример только на mock данных. # В этом тесте не открываются устройства, соединения и браузер. python3 test_audio_notes.py -v # Проверить прямые ссылки, SVG, Back, фокус и подсветку меню на mock DOM. # Требуется Node.js с node:test; проверены Node 22.14 и прежний Node 24.19. # Убираем только для этого запуска NODE_OPTIONS с чужими флагами Desktop. env -u NODE_OPTIONS node --test test_navigation.js # Отрисовать схемы в новую папку. HTML/JS не исполняются. # Требуется ffmpeg с librsvg. Существующую папку скрипт не перезаписывает. python3 render_schemes.py --output локальный источник # Отдельно отрисовать две схемы выжимки в другую новую папку. python3 render_schemes.py --document brief.html --output локальный источник # Проверить накопление очередей на отдельной копии закреплённого main. # Замените путь ниже на свою копию, содержащую src_core и src_shared. # В её отдельном venv нужны numpy, av, nats-py и зависимости Core. python3 probe_audio_bounds.py --source-root /path/to/source-copy Проба намеренно утверждает поведение main 1fc1702: 100 кадров, 100 накопленных publish task и 3 вошедших publish. После исправления очередей этот старый тест обязан перестать проходить. Тогда меняется проверяемый контракт и тест, а не ослабляются assertions ради зелёного результата. Никаких сетевых publish проба не делает. Границы результата Это исследование и проект изменений. Рабочие сервисы, Desktop, авторизация, proxy/direct и установленный payload не менялись. Production image/DRS, модели, end-to-end latency и полная автономность системы не проверялись. Целевые числа в учебнике - предлагаемые условия приёмки, не достигнутые показатели. Сравнение очистки отделяет browser AEC/NS, energy gate и Silero VAD у нас от Sonora в CLI и разных capture-путей Desktop. Desktop-фрагменты повторно сверены с локальным ASAR: версия, три SHA256 и пять byte offsets. Это статическая проверка, не акустическое испытание и не измерение settings живого микрофона. Данных входа в сохранённом evidence нет. В данном окружении браузер блокирует file://. Поэтому проверены схемы и статические/JS контракты, но не выполнена полная браузерная приёмка страницы, mobile, печати и клавиатуры. Запускать приложение для этого исследования не потребовалось.