Потоковая передача вывода удаленного PTY-терминала в браузер через WebSocket
Запуск Claude Code в облаке требует контейнера. Наблюдение из браузера требует исходящего подключения песочницы, контроля противодавления на сокете браузера и явного фрейма закрытия.
Перенос агента на облачную машину — это легкая часть, о которой пишут все. Главная сложность заключается в организации надежного канала связи между этой машиной и браузером.
Ноутбук перестает быть средой исполнения
Смысл переноса агентов в облако заключается в отвязке выполнения от физического устройства пользователя.
Это помещает сетевое соединение в центр архитектуры, делая систему зависимой от качества канала связи.
Песочница инициирует исходящее соединение
Машина с агентами не имеет публичных портов и держит постоянное исходящее соединение с панелью управления.
Поэтому критически важно уметь корректно обрабатывать деградацию качества связи на установленном соединении.
Первая скрытая ошибка: измерение не того сокета
Агент при активной компиляции генерирует вывод быстрее, чем браузер успевает его отрисовать.
Контролировать локальный сокет песочницы бесполезно, так как канал к панели управления быстр. Буферизация происходит на сокете браузера.
Обнаружение должно происходить на медленном приемнике, а противодавление транслироваться обратно через TCP в песочницу.
Приостановка чтения общего канала не должна превышать нескольких миллисекунд во избежание блокировки других зрителей.
Вторая скрытая ошибка: Ping, который всегда отвечает
На WebSocket ping отвечает сетевой стек ОС, а не веб-приложение, поэтому закрытые вкладки долго кажутся активными.
Панель управления должна явно уведомлять песочницу о закрытии браузера.
Почему это важно
Запустить CLI в контейнере может каждый. Реальная польза возникает тогда, когда соединение честно отражает свое состояние.
Система резервирования файлов описана в отдельной статье, а изоляция секретов — в третьей части.
Прямые ответы
Продолжит ли Claude Code работать при закрытии крышки ноутбука?
Да, так как процесс агента и репозиторий находятся на облачной машине. Браузер лишь передает нажатия клавиш и отрисовывает вывод.
Требуется ли облачному агенту открытый порт в локальной сети?
Нет. Песочница сама устанавливает исходящее соединение с панелью управления, аналогично self-hosted раннерам CI.
Что происходит с задачей при отключении браузера наблюдателя?
Задача продолжает выполняться. Панель управления явно уведомляет песочницу об отключении клиента.