· kaynak Hacker News – Front Page (hnrss.org)
Kılavuz, bağlantı kesintilerine dayanacak şekilde tmux oturumlarında Claude Code agent'ları çalıştırmayı anlatıyor
Hacker News'in ana sayfasındaki crystl.dev kılavuzu, AI kodlama agent'larını tmux içinde çalıştırmayı ele alıyor: Claude Code'un yerleşik --worktree --tmux flag'lerinden manuel oturumlara, pane düzenlerine ve send-keys betiklerine kadar.

crystl.dev'de yayımlanan ve şu anda Hacker News'in ana sayfasında bulunan bir kılavuz, AI kodlama agent'larını tmux içinde çalıştırmanın pratik bir reçetesini sunuyor: kopan bir SSH bağlantısından sonra da hayatta kalan isimlendirilmiş oturumlar, aynı anda birkaç agent'ı izlemek için düzenler ve bir terminal multiplexer'ı hafif bir agent orkestratörüne dönüştüren betikleme yüzeyi olarak send-keys.
tmux neden uzun süreli agent'lara uyar
Kılavuzun çerçevesi şöyle: kodlama agent'ları bir terminale bağlı uzun süreli süreçlerdir ve tmux bu biçime üç şekilde uyar. Pseudo-terminal'i terminal pencereniz değil tmux sunucusu sahiplenir; dolayısıyla pencereyi kapatmak, SSH bağlantısını kaybetmek veya dizüstü bilgisayarı uyku moduna almak, siz yeniden bağlanana kadar agent'ın çalışmaya devam etmesini sağlar. Birden fazla agent, bir tuş vuruşuyla arasında geçiş yaptığınız isimlendirilmiş oturumlara dönüşür. Ve herhangi bir yerdeki herhangi bir shell, IPC kurmadan veya bir API bağlamadan çalışan bir agent'a yazı yazabilir veya ekranını okuyabilir. Kılavuza göre asıl olarak üzerine inşa edilen şey bu betiklenebilirliktir ve tmux'un agent'ları orkestre eden betiklerde sürekli karşımıza çıkmasının nedeni de budur.
Yerleşik Claude Code yolu
Bunların hepsini elle kurmadan önce kılavuz, Claude Code'un yeni sürümlerinde hazır gelen şeye işaret ediyor: claude --worktree --tmux tek komutla yeni bir git worktree ve onun için bir tmux oturumu oluşturuyor. Bununla birlikte iki uyarı var. --tmux flag'i --worktree olmadan hata veriyor; yani bu, genel bir oturum flag'i değil, tesadüfen oturum oluşturan bir worktree özelliği. Ayrıca iTerm2'de tmux yerine yerleşik pane'leri kullanıyor; bu daha güzel görünüyor ama tmux komutlarının hedefleyeceği bir oturum kalmıyor demek. Oturuma karşı betik yazmayı planlıyorsanız --tmux=classic geçin.
Bu, tek bir dalda tek bir agent'ı kapsıyor. Kılavuza göre yapmadığı şeyler ise şunlar: tek oturumda birkaç agent çalıştırmak, pane'leri onları izleyebileceğiniz şekilde dizmek, bir betiğin çalışan bir agent'a yazı yazmasına izin vermek, hangi agent'ın sizi beklediğini söylemek ya da bunların hiçbirini uzak bir makinede kurmak. Bu boşlukların her biri, elle yazılan tmux'un başladığı yerdir.
Her depo için bir oturum
Kılavuzun önerdiği düzenleme kuralı, depo adıyla isimlendirilmiş, depo başına bir tmux oturumu — görevler geçicidir, proje kalıcıdır. tmux new-session -A -s api -c ~/code/api bir oturuma bağlanır ya da onu oluşturur; bu da tek bir komutu tekrar tekrar çalıştırmayı güvenli kılar ve bir shell fonksiyonuna sarmalamayı kolaylaştırır. tmux nokta ve iki noktayı hedef ayırıcısı olarak ele aldığı için oturum adları . veya : içeremez; bu yüzden örnek fonksiyon noktaları tireye çeviriyor. Bu kural altında tmux ls çalışan şeylerin gerçek bir envanteri haline gelir.
Bir oturumun içinde, arka plan agent'ları için pencereler uygundur çünkü ekran alanı kaplamazlar; pane'ler ise aynı anda görünür olmasını istediğiniz iki ya da üç agent içindir. Bir tuzak işaret edilmiş: -c '#{pane_current_path}' olmadan yeni bir pane, oturumun başladığı dizinde açılır ve orada başlattığınız agent yanlış depoyu gösterir. İki isimlendirilmiş düzen öneriliyor — eşit bir ızgara için tiled ve geri kalanların yanda dizildiği büyük bir kullanım pane'i için main-vertical — ve main-pane-width için yüzde değerlerinin tmux 3.2 ya da daha yenisini gerektirdiği notu düşülmüş; eski sürümler mutlak sütun sayısı alır.
Değiştirmeye değer yapılandırma ayarları
.tmux.conf bölümü, bir agent filosunu yönetmeye başladığınızda varsayılanlardan sapılacak değişiklikler olarak sunuluyor: agent çıktısını geriye doğru kaydırabilmek için history-limit'in 100000'e çıkarılması; agent TUI'ları terminal başlığını ayarlamayı ve pencere adlarınızı ezmayı sevdiği için allow-rename ve automatic-rename'in kapatılması; siz başka yerdeyken çıktı üreten pencereleri işaretlemek için monitor-activity'nin açık, visual-activity'nin kapalı olması; Escape tuşunu ayırtlamak için varsayılan gecikme etkileşimli TUI'ları hantallaştırdığından escape-time'ın 10'a düşürülmesi; ayrıca fare desteği, 24-bit renk, 1'den başlayan pencere numaraları ve beş saniyelik status yenilemesi.
send-keys ile agent'ları betiklemek
send-keys, bir pane'e sanki biri yazıyormuş gibi tuş vuruşları gönderir; bu da bir agent'ı cron'dan, bir git hook'tan ya da başka bir agent'tan yönlendirmeyi mümkün kılar. Kılavuz üç başarısızlık modunu ne sıklıkla sorun çıkardığına göre sıralıyor. Çıplak argümanlar tuş adları olarak yorumlanır — Enter, C-c, Escape ve Space metin değil tuş vuruşlarıdır — bu yüzden gerçek istemler -l ister, bunun bedeli de yeni satırı ikinci bir çağrıyla göndermektir. Sondaki noktalı virgül bir tmux komut ayırıcısı olarak okunur ve kaçış karakteriyle yazılmalıdır. Ve debounce yapan ya da yeniden渲染 — metinle aynı karede gelen bir Enter'ı yutabilen yeniden çizim yapan agent giriş kutuları için güvenilir desen şudur: önce istem gönderilir, kısa bir bekleme yapılır, sonra Enter gönderilir.
Kılavuz açıkça üç katmanlı yapılandırılmış: yerleşik flag, onun erişemediği manuel tmux ve tmux'un doğru araç olmaktan çıktığı tavan.
Neden önemli
Agent destekli geliştirme giderek, çoğunlukla SSH üzerinden uzak makinelerde paralel çalışan birkaç uzun süreli agent anlamına geliyor. tmux bunun için neredeyse sıfır bağımlılıklı bir zemin sunar: süreç hayatta kalması, bir oturum envanteri ve bir betikleme yüzeyi — çıktıyı geri okumak için capture-pane ile eşleşen send-keys — özel altyapı olmadan orkestrasyon için tam yeterli. Claude Code'un bunun için birinci sınıf flag'lerle gelmesi, bu iş akışının hack'ten varsayılana doğru ilerlediğinin sinyalidir. Başarısızlık modlarını bilmek — tuş adı yorumlaması, noktalı virgül kaçışı, yapıştırma debounce'u, yanlış dizinde açılan pane'ler, başlık ezen TUI'lar — güvendiğiniz bir filo ile sürekli gözetlediğiniz bir filo arasındaki farktır.
- #tmux
- #claude-code
- #ai-agents
- #terminal
- #cli