Как навести порядок среди десятка запущенных сессий Claude Code в tmux

16 авг 2026
357
45
5
1 месяц

Когда запускаешь Claude Code в терминале для пары правок, всё выглядит аккуратно. Запустил команду, дал задачу, дождался ответа, закрыл. Проблемы начинаются, если держать открытыми четыре-пять проектов одновременно. В одном репозитории агент рефакторит тесты, во втором пишет миграцию базы данных, в третьем крутит сборку.

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

Такуя Мацуяма, автор блога devas.life и нескольких популярных утилит под Neovim и tmux, выкатил решение этой проблемы. Его плагин tmux-claude-session-manager превращает разрозненные терминальные окна с агентами в аккуратный список с быстрым переключением.

screenshot

Что делает плагин

По сути, это диспетчер задач для Claude Code внутри tmux. Инструмент связывает воедино интерфейс fzf, встроенный механизм всплывающих окон tmux popup и внутренний API самого Claude Code.

Реклама

Вы нажимаете сочетание клавиш и видите плавающее окно со списком всех запущенных сессий. Напротив каждого процесса сразу виден статус:

  • working (агент занят генерацией или исполнением команд);
  • waiting (требуется реакция пользователя или подтверждение);
  • idle (сессия простаивает);
  • время с момента последней активности агента.

Агенты, которые требуют вашего внимания, автоматически поднимаются наверх списка. Рядом отображается живой предпросмотр экрана через capture-pane. Сразу видно, на каком вопросе споткнулся помощник, даже не переключаясь в саму сессию.

Нажатие Enter переносит вас прямо в контекст нужного окна и открывает сессию во всплывающем фрейме. Закончили диалог или агент завершил работу — жмёте сочетание для удаления процесса, и сессия аккуратно закрывается.

Интересные детали под капотом

Здесь нет самодельных демонов или тяжелых хуков на bash, которые парсят вывод ps. Автор пошёл более элегантным путём.

Claude Code версий 2.1.139 и выше умеет отдавать информацию о своих агентах через встроенную команду claude agents --json. Каждая запущенная копия сама рапортует локальному супервизору о текущем статусе. Плагин просто читает этот JSON через jq.

Главная техническая сложность заключалась в сопоставлении процессов с панелями tmux. На macOS, например, панель часто сообщает PID родительского шелла, а не дочерней программы. Внутри плагина скрипт agents.sh связывает идентификаторы по цепочке: pid -> tty -> панель tmux.

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

Ещё одна приятная мелочь: если открыть меню выбора (prefix + u), находясь уже внутри всплывающего окна Claude, плагин сначала отсоединит текущий popup, а затем развернет окно выбора на полный размер внешнего терминала. Никаких вложенных матрешек из уменьшающихся рамок.

Установка и базовые настройки

Для работы понадобятся tmux версии 3.2 или выше с поддержкой popup, установленный fzf, утилита jq и свежий релиз Claude Code.

Если вы используете менеджер плагинов TPM, добавьте строку в конфигурационный файл ~/.tmux.conf:

set -g @plugin 'craftzdog/tmux-claude-session-manager'

После этого нажмите prefix + I для загрузки.

По умолчанию плагин использует два сочетания клавиш:

  • prefix + y запускает новую сессию Claude в текущей директории внутри всплывающего окна (или подключается к уже существующей);
  • prefix + u открывает fzf-селектор со всеми активными агентами.

Внутри окна списка действуют стандартные стрелки и фильтрация по тексту. Клавиша Enter переключает на выбранную сессию, а Ctrl-x принудительно завершает процесс.

Параметры легко переопределяются. Например, можно задать флаги запуска для самого Claude или изменить размеры окна:

set -g @claude_popup_width '85%' set -g @claude_popup_height '85%' set -g @claude_args '--dangerously-skip-permissions'

Для любителей модального управления в README есть отличный пример интеграции с vim-раскладкой. Можно настроить fzf так, чтобы список открывался в режиме навигации по j/k, а переключение в режим поиска происходило по клавишам i или a:

set -g @claude_fzf_options "\ --prompt 'nav> ' \ --bind 'j:down' \ --bind 'k:up' \ --bind 'q:abort' \ --bind 'x:execute-silent(kill {3})+reload(sleep 0.3; \$CLAUDE_PICKER --list)' \ --bind 'i:unbind(j,k,q,i,a,x)+change-prompt(filter> )' \ --bind 'a:unbind(j,k,q,i,a,x)+change-prompt(filter> )' \ --bind 'esc:rebind(j,k,q,i,a,x)+change-prompt(nav> )'"

Стоит ли ставить

Если вы запускаете Claude Code раз в неделю ради пары строчек кода, без плагина легко обойтись. Обычной вкладки терминала вполне достаточно.

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

🍪 Мы используем файлы cookie и сервис аналитики Яндекс.Метрика, чтобы сайт работал лучше. Продолжая пользоваться devtrends.ru, вы соглашаетесь с обработкой данных согласно Политике конфиденциальности.