Терминалы
CherryPi транслирует настоящие PTY с агента в браузер по WebSocket. Терминал — это root-shell на машине агента; считайте его полным доступом к хосту.
Открытие терминала
- Откройте агента и выберите вкладку Terminals.
- Нажмите New terminal. Первый зритель становится контроллером.
- Вводите команды как обычно. PTY подстраивается под размер браузера.
Владельцы и администраторы открывают терминалы. Другие участники команды могут наблюдать и получить контроль, если контроллер отпустил его или отключился.
Контроль и наблюдение
У терминала может быть несколько потребителей:
- ровно один контроллер отправляет клавиши и resize;
- остальные — только наблюдатели того же вывода;
- любой наблюдатель может запросить контроль.
Терминал переживает перезагрузку браузера. Он закрывается, когда shell завершается или терминал явно закрыт. Закрытие WebSocket — не exit; agency сообщает код завершения shell отдельно.
Вывод объединяется в кадры (до 32 КиБ с коротким интервалом flush), а медленный браузер создаёт backpressure для PTY вместо потери вывода.
Где работают терминалы
Shell запускается от пользователя процесса агента, в его окружении. Он не переходит автоматически в workspace задачи. Для работы с задачей:
cd $CHERRYPI_DIR/sessions/<task id>Shell задаётся SHELL_BIN, затем $SHELL, затем /bin/bash.
Терминалы самой agency
Root-терминалы из раздела Terminals самой agency работают на хосте agency и полезны оператору. Они используют тот же relay и ту же модель прав.
Безопасность
- Терминал обходит права проекта: он работает от пользователя агента на хосте агента.
- Ограничивайте число владельцев агентов. Владельцы открывают root-терминалы.
- По возможности запускайте агента отдельным непривилегированным пользователем.
- Терминал доступен только через аутентифицированный туннель, но реальная граница — аккаунт agency, который им управляет.
Решение проблем
| Симптом | Что проверить |
|---|---|
| Терминал подключается и сразу закрывается | SHELL_BIN/$SHELL отсутствует или не исполняется. |
| Нет вывода, ввод работает | Reverse proxy буферизует; отключите buffering/read timeout. |
| Вывод замирает | Медленный потребитель; агент применяет backpressure. Закройте лишние вкладки. |
| «Only owners may open terminals» | Попросите владельца или администратора. |
См. Решение проблем.
