Jak uporządkować tuzin działających sesji Claude Code w tmux
Kiedy uruchamiasz Claude Code w terminalu, żeby szybko coś edytować, wszystko wygląda schludnie. Uruchamiasz polecenie, zlecasz zadanie, czekasz na odpowiedź, zamykasz. Problemy zaczynają się, gdy jednocześnie masz otwartych cztery lub pięć projektów. W jednym repozytorium agent refaktoryzuje testy, w drugim pisze migrację bazy danych, a w trzecim uruchamia build.
W ciągu pół godziny terminal zamienia się w labirynt. Nie wiadomo, gdzie agent czeka na potwierdzenie polecenia, gdzie wciąż uruchamia skrypty, a gdzie dawno skończył i po prostu siedzi bezczynnie. Trzeba ręcznie przechodzić przez okna tmux, tracąc czas na sprawdzanie statusów.
Tak Matsuyama, autor bloga devas.life i kilku popularnych narzędzi dla Neovima i tmux, przedstawił rozwiązanie tego problemu. Jego wtyczka tmux-claude-session-manager zamienia chaotyczne okna terminalu z agentami w uporządkowaną listę z szybkim przełączaniem.
Co robi wtyczka
W zasadzie to menedżer zadań dla Claude Code wewnątrz tmux. Narzędzie łączy interfejs fzf, wbudowany mechanizm popupów tmux i wewnętrzne API Claude Code.
Naciskasz kombinację klawiszy i widzisz okno popup z listą wszystkich działających sesji. Każdy proces natychmiast pokazuje swój status:
- working (agent jest zajęty generowaniem lub wykonywaniem poleceń);
- waiting (wymagane dane wejściowe lub potwierdzenie od użytkownika);
- idle (sesja jest bezczynna);
- czas od ostatniej aktywności agenta.
Agenci, którzy potrzebują twojej uwagi, są automatycznie przesuwani na górę listy. Obok wyświetlany jest podgląd na żywo ekranu przez capture-pane. Możesz od razu zobaczyć, które pytanie zagięło asystenta, nawet bez przełączania się do sesji.
Naciśnięcie Enter przenosi cię prosto w kontekst wybranego okna i otwiera sesję w ramce popup. Skończyłeś dialog lub agent zakończył pracę — naciskasz kombinację klawiszy, żeby usunąć proces, a sesja zamyka się czysto.
Ciekawe szczegóły pod maską
Nie ma tu żadnych niestandardowych demonów ani ciężkich haków w bash parsujących wyjście ps. Autor wybrał bardziej elegancką drogę.
Claude Code w wersjach 2.1.139 i nowszych może udostępniać informacje o swoich agentach przez wbudowane polecenie claude agents --json. Każda działająca kopia raportuje swój bieżący status do lokalnego nadzorcy. Wtyczka po prostu odczytuje ten JSON przez jq.
Główne wyzwanie techniczne polegało na dopasowaniu procesów do okienek tmux. Na przykład na macOS okienko często zgłasza PID powłoki nadrzędnej zamiast programu potomnego. Wewnątrz wtyczki skrypt agents.sh łączy identyfikatory wzdłuż łańcucha: pid -> tty -> okienko tmux.
Dzięki temu powiązaniu wtyczka śledzi procesy, a nie sesje. Jeśli uruchomiłeś trzy różne agenty w jednym projekcie lub uruchomiłeś Claude w zwykłym sąsiednim okienku bez wtyczki, narzędzie i tak znajdzie każdy proces i wyświetli go jako osobną linię. Całe odpytywanie zajmuje tylko trzy wywołania systemowe, więc interfejs działa bez opóźnień.
Inny miły szczegół: jeśli otworzysz menu wyboru (prefix + u) będąc już wewnątrz popupu Claude, wtyczka najpierw odłącza bieżący popup, a następnie rozszerza okno wyboru do pełnego rozmiaru zewnętrznego terminala. Żadnych zagnieżdżonych rosyjskich laleczek kurczących się ramek.
Instalacja i podstawowa konfiguracja
Będziesz potrzebować tmux w wersji 3.2 lub wyższej z obsługą popupów, zainstalowanego fzf, narzędzia jq i najnowszego wydania Claude Code.
Jeśli używasz menedżera wtyczek TPM, dodaj tę linię do pliku konfiguracyjnego ~/.tmux.conf:
set -g @plugin 'craftzdog/tmux-claude-session-manager'
Po tym naciśnij prefix + I, żeby załadować wtyczkę.
Domyślnie wtyczka używa dwóch kombinacji klawiszy:
prefix+yuruchamia nową sesję Claude w bieżącym katalogu w oknie popup (lub łączy się z istniejącą);prefix+uotwiera selektor fzf ze wszystkimi aktywnymi agentami.
W oknie listy działają standardowe strzałki i filtrowanie tekstu. Enter przełącza do wybranej sesji, a Ctrl-x wymusza zakończenie procesu.
Parametry są łatwe do nadpisania. Możesz na przykład ustawić flagi uruchomieniowe dla samego Claude lub zmienić wymiary okna:
set -g @claude_popup_width '85%'
set -g @claude_popup_height '85%'
set -g @claude_args '--dangerously-skip-permissions'
Dla fanów kontroli modalnej, README zawiera świetny przykład integracji z układem w stylu vima. Możesz skonfigurować fzf tak, żeby lista otwierała się w trybie nawigacji przez j/k, a przełączanie do trybu wyszukiwania odbywa się klawiszami i lub 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> )'"
Czy warto instalować
Jeśli uruchamiasz Claude Code raz w tygodniu, żeby zmienić kilka linijek kodu, spokojnie poradzisz sobie bez wtyczki. Zwykła zakładka terminala jest całkowicie wystarczająca.
Narzędzie jest przydatne dla osób, które aktywnie korzystają z podejścia agentowego w terminalu i równolegle realizują zadania w różnych gałęziach lub subprojektach. Wtyczka eliminuje uciążliwe szukanie odpowiedniej zakładki i konsoliduje monitorowanie zadań w tle na jednym przejrzystym ekranie. Konfiguracja zajmuje kilka minut, a kod źródłowy skryptu jest zwięzły i przejrzysty, bez żadnej niepotrzebnej magii.
Powiązane projekty
