coding-agents

В Rysh каждая панель терминала работает как агент

Claude News

coding-agents

Открытый мультиплексор терминала Rysh на Go, выложенный на Github под Apache-2.0, делает агентом каждую панель: вкладки, лейны и стеки ведут себя привычно, но панель отвечает на промпты и вызывает инструменты, и стек из трёх панелей держит три независимые сессии Claude. Сборка ставится через go install, минимальная версия Go 1.25.3 объявлена в go.mod модуля.

Коротко

  • Сессия существует как демон вместе со своими панелями, поэтому закрытие терминала её отсоединяет, а после ##claude или ##codex панель помнит запущенного агента и возобновляет тот же разговор.
  • В репозитории пять озвученных видео с субтитрами длительностью от 1:29 до 4:00, и последнее разбирает граф связей во флоте, где задания идут вниз сообщениями, а результаты возвращаются на доску.
  • SecretNAT включён по умолчанию: секреты подменяются токенами в теле запроса до отправки, сопоставление обратимо локально, и ##snat get возвращает исходное значение в панели, тогда как модель видела только токен.

Мультиплексор с агентами внутри панелей закрывает разрыв между привычным рабочим окном и несколькими одновременными сессиями Claude и Codex: планировщиком становится сам терминал, а не отдельный внешний оркестратор. Судя по устройству сессии-демона и доски, приоритет отдан долгим задачам, которые переживают закрытие окна и обмениваются состоянием между агентами. Ценой становится ещё один слой между разработчиком и провайдером, который держит ключи и выполняет шелл-команды локально.

Сессия работает как демон, и после перезапуска Claude и Codex сами продолжают разговор

Сессия в rysh состоит из демона и его панелей и переживает закрытие терминала: rysh create создаёт и подключает её, ключ -d оставляет отсоединённой, rysh attach возвращает, rysh detach оставляет работать, rysh stop гасит демон, а rysh list-sessions показывает запущенное. Команды с ## набирают в панели в режиме rysh, снаружи то же делает rysh exec.

Второе видео длиной 2:44 показывает, что это значит для агентов: Claude и Codex получают кодовое слово, сессию останавливают целиком, и после перезапуска оба продолжают работу без нового промпта и отвечают тем же словом. Панель помнит, какой агент в ней был запущен, поэтому разговор возобновляется сам.

У каждой панели есть режим ввода, и Esc Esc переключает их по кругу: shell с настоящим PTY, prompt с отправкой в модель, rysh для команд мультиплексора и chat без инструментов. Эти четыре включены по умолчанию, ##mode list показывает доступные в панели, ##mode new добавляет остальные.

Агенты пишут друг другу на общую доску, а флот объединяет панели в именованную группу

Вкладка держит лейны, лейн держит стеки, стек держит панели в стиле Zellij: одна развёрнута, остальные свёрнуты в заголовок с индексом [N/M]. Команда ##new grid 3x4 строит три лейна по четыре панели, ##new stack 4 добавляет четыре панели в активный стек, а ##new pane ставит панель внизу активного лейна.

Доска открывается командой ##board open, агент публикует в неё через rysh board post, не перехватывая фокус, и читает поток через rysh board tail. ##board agent up поднимает скрытую панель с Claude, которая маршрутизирует сообщения между агентами и отклоняет запрос, если знает, что он устарел.

Флот это именованная группа панелей со своей доской, и регистрация панелей не открывает: ##fleet register epic-07 --board epic-07, дальше ##fleet state, ##fleet show и ##fleet forget, после которого панели продолжают работать. В четвёртом ролике на 2:29 roadmap на Claude ставит цель, fleet-manager на Codex режет её на задания, два воркера собирают параллельно, и менеджер отправляет одному из них правку.

Репозиторий ставит бинарь rysh, готовая дистрибуция ставит ry, а на Windows сессия не открывается

Открытая сборка ставится через go install github.com/rysh-ai/rysh-cli-code/cmd/rysh@latest, бинарь оказывается в $(go env GOPATH)/bin. Альтернатива это скрипт с packages.rysh.ai, который берёт свежий релиз этого репозитория; RYSH_VERSION фиксирует версию, RYSH_INSTALL_DIR задаёт каталог. При первом запуске rysh onboard проверяет ключ, пишет проектный rysh.config.yaml и открывает сессию.

Готовая дистрибуция ставит другой бинарь, ry, по своим каналам, и ничего из неё этим репозиторием не производится, поэтому описание команды в ry --help ничего не говорит об этом исходнике. Имена различаются, чтобы обе сборки уживались на одной машине; проверить установленное помогают rysh version и ry version.

Цель windows/amd64 собирается из этого исходника командой go build ./..., и архив в .goreleaser.yml назван cli-only. Запустить сессию сборка не может: в PTY-слое нет реализации ConPTY, platform.PTYSupported на Windows равен false, и каждая команда, открывающая сессию, отклоняется заранее с подсказкой про WSL. Без панелей остаются rysh send, exec, prompt, list-sessions, install, eval и doctor.

Когда на Windows появятся панели

Нативные панели требуют реализации ConPTY за тем же слоем, и в репозитории сказано только то, что её пока нет; сроков не называют. До этого поддерживаемый путь для полноценной сессии остаётся WSL2, где линуксовая сборка ставится тем же go install и работает без изменений, а с Windows-стороны к ней обращаются через rysh send и rysh exec.

Комментарии

Пока никто не написал. Будьте первым.

Присоединяйтесь к разговору

Войдите через Google, чтобы оставить комментарий. Имя и аватар подставятся из вашего профиля Google, а комментарий появится после модерации.

Из Google мы используем только имя и аватар. Почту не сохраняем.