deniz.in

Piyasalar

Hava durumu

Hava durumu yükleniyor

· kaynak dev.to (home feed)

NestMux, beş kodlama ajanını ayrı hesaplar ve git worktree'lerle yalıtılmış terminallerde çalıştırıyor

NestMux, Claude Code, Codex, Gemini CLI, Copilot ve OpenCode'u her biri kendi hesap dizinine ve git worktree'sine sahip ayrı terminallerde çalıştıran bir masaüstü uygulaması; geliştiricisi dev.to'da ayrıntılı bir yazı yayımladı.

NestMux, beş kodlama ajanını ayrı hesaplar ve git worktree'lerle yalıtılmış terminallerde çalıştırıyor

Bir geliştirici, dev.to'da NestMux'u ayrıntılıyla anlatan bir yazı yayımladı. NestMux, Claude Code, Codex, Gemini CLI, Copilot ve OpenCode'u gerçek terminallerden oluşan bir ızgarada yan yana çalıştıran ve her paneli kendi hesap dizini ve kendi git worktree'si aracılığıyla yalıtan bir masaüstü uygulaması.

Bir panel nasıl çalışır

dev.to gönderisine göre ızgaradaki her hücre, bir ajan türü, hesap adı, hesap dizini, komut ve depo yolu içeren düz bir veri nesnesiyle tanımlanıyor. Uygulamada ajanlara özgü hiçbir mantık yok: bir panel node-pty ile bir shell başlatıyor, HOME'u panelin hesap dizinine yönlendiriyor, çalışma dizinini depo yoluna ayarlıyor ve ajan komutunu içine yazıyor. Claude Code, komutu claude olan bir panelden ibaret; sıradan bir terminal ise komutu boş bir panel. Yeni bir ajan CLI'sını desteklemek listede tek bir satır — bu yüzden özel CLI'lar sürüm sürüm eklenen bir özellik değil, kullanıcıya açık bir işlev olarak geliyor.

Bu ayarlardan ikisi tüm ağırlığı taşıyor. HOME'un yönlendirilmesi, iki panelin aynı anda iki farklı Claude hesabıyla oturum açabilmesi anlamına geliyor, çünkü ~/.claude her panelde farklı çözümleniyor. Çalışma dizininin bir git worktree'ye işaret etmesi ise birkaç ajanın aynı depoyu birbirinin üzerine yazmadan düzenleyebilmesini sağlıyor.

Broadcast tuş vuruşlarını gönderir, mesaj değil

developer'a göre her panele tek bir prompt göndermek için protokole gerek yok: terminal emülatörü zaten her tuş vuruşunu ortaya koyuyor ve broadcast modu yalnızca girişi tüm panellere iletiyor. Yapılandırılmış mesajlar yerine ham girdi üzerinde çalıştığı için, terminal okuyan her şeyle çalışıyor — TUI tabanlı ajanlar, bir REPL veya interaktif bir rebase.

Bedeli açıkça belirtiliyor. Broadcast, Ctrl+C ve ok tuşları dahil her şeyi iletiyor ve bir panelin hazır olup olmadığını hiçbir zaman kontrol etmiyor; bu yüzden ajanı hâlâ açılan bir panel, prompt'u o an ekranda ne varsa ona girdi olarak alıyor. Geliştirici, hazır olma algılamasının eksikliğini bir ihmal değil, bilinçli bir tercih olarak sunuyor; çünkü bunu eklemek, her CLI güncellemesinin bozabileceği şekilde ajan çıktısını ayrıştırmak anlamına gelirdi.

Kaynak atfı en zor kısım

Gönderiye göre en zor özellik, CPU, bellek ve açık portları her panele atfetmek; çünkü NestMux'un başlattığı süreç bir shell, ajan onun çocuğu, ve ajanın başlattığı bir dev server torun olabilir ya da tamamen yeniden ebeveynlenmiş olabilir. Uygulama, süreç ağacını her yoklama döngüsünde panel başına çözüyor; Windows'ta bu, kısa süre önbelleğe alınan ve bellekte dolaşılan makine geneli bir Win32_Process anlık görüntüsüyle yapılıyor. Ebeveyn bağı kaybolduğunda, uygulama çalıştırılabilir dosya yolu veya komut satırı bir worktree içine işaret eden süreçleri eşleştirmeye düşüyor; üçüncü bir geçiş ise her sürecin geçerli dizinini ntdll üzerinden okuyor. Geliştirici bunun, yükseltilmiş süreçleri ve diğer kullanıcıların süreçlerini kaçıran bir sezgisel yöntem olduğunu söylüyor ve kaynak çubuğunu gerçek bir muhasebe değil, yararlı bir sinyal olarak niteliyor.

Diff'ler, oturumlar ve bir yeniden başlatmanın kaybettikleri

Yerleşik diff görüntüleyici, yapılandırılabilir bir tabana karşı — varsayılan olarak HEAD, yani işlenmemiş işleri gösteriyor — git diff'i çalıştırıyor ve birleşik diff'i kütüphane olmadan yaklaşık yüz satırda ayrıştırıyor. 10.000 satırdan uzun dosyalar aşırı büyük olarak işaretleniyor ve görünümde çizilmiyor; böylece yeniden üretilmiş bir lockfile arayüzü donduramıyor. Geliştirici, varsayılan tabanın yeni bitmiş bir ajanı incelemek için doğru ama ajanlar ilerledikçe commit yaptığında yanlış olduğunu, çoğu kullanıcının bunu değiştirebileceğini bilmediğini de kabul ediyor — bu da bir arayüz başarısızlığı olarak tanımlanıyor.

Çalışma alanı düzeni, oturum dosyasına atomik olarak yazılıyor — serileştir, geçici bir kardeş dosyaya yaz, gerçek dosyanın üzerine yeniden adlandır — çünkü yazım ortasında yaşanan çökmeler eskiden kesik JSON bırakıyordu. Hiçbir terminal durumu kaydedilmiyor: geri kaydırma arabelleği bellekte yaşıyor ve PTY ile birlikte ölüyor; bu yüzden uygulamayı yeniden açmak panelleri yeniden başlatıyor ve CLI'ları yeniden çalıştırıyor, ekrandaki konuşmayı kaybediyor — yine de çoğu ajan kendi devam ettirilebilir geçmişini tutuyor.

Bilinen eksikler

Gönderiye göre en büyük eksik, birleşik bir günlüğün olmaması: hangi ajanın hangi dosyaya hangi sırayla dokunduğunu zaman damgaları ve çıkış kodlarıyla gösteren, paneller arası bir zaman çizelgesi yok. Yalnızca panel başına döküm dışa aktarımları mevcut. Geliştirici bunu doğrudan ajan çıktısını ayrıştırmama tasarım tercihine bağlıyor ve worktree başına dosya sistemi izlemesinin neyin değiştiğini ama kimin değiştirdiğini göstermeyeceğini not ediyor.

Neden önemli

Birkaç kodlama ajanını paralel çalıştırmak, artık birçok ekibin benimsediği bir iş akışı ve NestMux bunun için dikkate değer ölçüde minimal bir mimari çiziyor: yalıtım, ajana özel entegrasyondan değil, ortamdan geliyor — ayrı HOME'lar ve ayrı worktree'ler. Bu, uygulamayı CLI dalgalanmalarına karşı kayıtsız tutuyor; bedeli ise gözlemlenebilirliğin dosya sistemi ve süreç tablolarının açığa çıkardığıyla sınırlı kalması. Yazı, çok ajanlı araçlar inşa eden veya değerlendiren herkes için bu ödünleşimin dürüst bir haritası. NestMux Windows 10 ve üzeri, macOS 13 ve üzeri ile Linux'ta tek bir derlemeden çalışıyor, telemetrisi olmayan yerel-öncelikli bir uygulama ve lansman süresince nestmux.com'da ücretsiz.

  • #coding-agents
  • #developer-tools
  • #terminal
  • #git
  • #desktop-apps

İlgili yazılar