Статьи

Потоковая передача вывода удаленного PTY-терминала в браузер через WebSocket

Запуск Claude Code в облаке требует контейнера. Наблюдение из браузера требует исходящего подключения песочницы, контроля противодавления на сокете браузера и явного фрейма закрытия.

Перенос агента на облачную машину — это легкая часть, о которой пишут все. Главная сложность заключается в организации надежного канала связи между этой машиной и браузером.

A browser, a control plane and a sandbox. Output flows right to left; the congestion that starts at the browser has to be felt at the sandbox.browsercontrolsandboxoutputoutputslowholdreceive window closesstop writing
Поток данных идет справа налево. Задержки возникают на стороне браузера, а регулирование происходит на удаленном конце.

Ноутбук перестает быть средой исполнения

Смысл переноса агентов в облако заключается в отвязке выполнения от физического устройства пользователя.

Это помещает сетевое соединение в центр архитектуры, делая систему зависимой от качества канала связи.

Песочница инициирует исходящее соединение

Машина с агентами не имеет публичных портов и держит постоянное исходящее соединение с панелью управления.

Поэтому критически важно уметь корректно обрабатывать деградацию качества связи на установленном соединении.

Первая скрытая ошибка: измерение не того сокета

Агент при активной компиляции генерирует вывод быстрее, чем браузер успевает его отрисовать.

Контролировать локальный сокет песочницы бесполезно, так как канал к панели управления быстр. Буферизация происходит на сокете браузера.

Обнаружение должно происходить на медленном приемнике, а противодавление транслироваться обратно через TCP в песочницу.

Приостановка чтения общего канала не должна превышать нескольких миллисекунд во избежание блокировки других зрителей.

Вторая скрытая ошибка: Ping, который всегда отвечает

На WebSocket ping отвечает сетевой стек ОС, а не веб-приложение, поэтому закрытые вкладки долго кажутся активными.

Панель управления должна явно уведомлять песочницу о закрытии браузера.

Почему это важно

Запустить CLI в контейнере может каждый. Реальная польза возникает тогда, когда соединение честно отражает свое состояние.

Система резервирования файлов описана в отдельной статье, а изоляция секретов — в третьей части.

Прямые ответы

Продолжит ли Claude Code работать при закрытии крышки ноутбука?

Да, так как процесс агента и репозиторий находятся на облачной машине. Браузер лишь передает нажатия клавиш и отрисовывает вывод.

Требуется ли облачному агенту открытый порт в локальной сети?

Нет. Песочница сама устанавливает исходящее соединение с панелью управления, аналогично self-hosted раннерам CI.

Что происходит с задачей при отключении браузера наблюдателя?

Задача продолжает выполняться. Панель управления явно уведомляет песочницу об отключении клиента.