این صحنه را میشناسی: شش تب ترمینال باز است — Dev Server، یکی دو ایجنت، یک حلقه Ralph در حال اجرا، Lazygit. میخواهی پنجرهها را مرتب کنی و... اشتباهی ترمینال را میبندی. هر Process ای که آنجا بود میمیرد — از جمله حلقهات. بسته به زمانبندی، ممکن است پیشرفت از دست برود. راهحل: Session ترمینال را از پنجره ترمینال جدا کن.
ابزار اول: screen
روی اکثر ماشینها از قبل نصب است (`screen --version`؛ اگر نبود: `brew install screen` یا `apt-get install screen`). با اجرای `screen` ظاهراً «هیچ اتفاقی نمیافتد» — ولی در واقع الان داخل یک ترمینال مجازی هستی که screen مدیریتش میکند، نه پنجره اصلی. هر چیزی اینجا اجرا کنی، به پنجره ترمینال وابسته نیست.
| کار | دستور / کلید |
|---|---|
| ساخت Session بینام | screen |
| ساخت Session با نام | screen -S ralph |
| جدا شدن (Detach) | Ctrl-A بعد D |
| لیست Session ها | screen -ls |
| اتصال دوباره | screen -r ralph |
| بستن Session | Ctrl-D |
جریان واقعی کار: `screen -S ralph`، داخلش `node ralph.js`، بعد Ctrl-A D. حالا حتی اگر کل پنجره ترمینال را ببندی، حلقه در پسزمینه میچرخد. بعداً از هر پنجرهای `screen -r ralph` بزن و ببین هنوز دارد کار میکند.
ابزار دوم: tmux
tmux برادر مدرن screen است و خیلی منعطفتر. اولش میتواند ترسناک به نظر برسد — کانفیگهای غولپیکر، Plugin Manager، آدمهایی که سالها Setup شان را «پرفکت» کردهاند. خبر خوب: به هیچکدامش نیاز نداری.
| کار | screen | tmux |
|---|---|---|
| ساخت با نام | screen -S ralph | tmux new -s ralph |
| Detach | Ctrl-A D | Ctrl-B D |
| اتصال دوباره | screen -r ralph | tmux attach -t ralph |
| تقسیم عمودی صفحه | — | Ctrl-B % |
| تقسیم افقی صفحه | — | Ctrl-B " |
| جابهجایی بین Pane ها | — | Ctrl-B + جهتنما |
| خط فرمان داخلی | — | Ctrl-B : |
قاتل واقعی screen همین Pane هاست: داخل یک Session میتوانی صفحه را تقسیم کنی — چپ Lazygit، وسط Claude، راست یک ایجنت دیگر. با `Ctrl-B :` و دستور `set -g mouse on` کلیک موس هم Pane را انتخاب میکند. این را در `~/.tmux.conf` بگذار تا همیشه فعال باشد:
# ~/.tmux.conf
set -g mouse onترفند: تایپ همگام در چند ایجنت
یک قابلیت جالب: داخل Session با `Ctrl-B :` بنویس:
setw synchronize-panes onحالا هر چه تایپ کنی، همزمان در «همه» Pane ها تایپ میشود — یعنی میتوانی یک پرامپت را همزمان به چند ایجنت مختلف بدهی و خروجیها را مقایسه کنی. برای خاموش کردن: همان دستور با `off`.
Setup واقعی برای Ralph
استفاده عملی نویسنده سری ساده است: یک Session tmux با چند Pane، در هرکدام یک `node ralph.js` روی یک PRD متفاوت:
تجربه عملی: بیشتر از ۴ تا ۶ حلقه همزمان عملاً پیش نمیآید. و جمعبندی توصیه: هر جا میتوانی tmux؛ اگر محیطی tmux نداشت، screen یک Fallback عالی است.
به زبان ساده
اگر ترمینال را ببندی، هر چه داخلش است میمیرد. screen و tmux Session را از پنجره جدا میکنند؛ Detach کن و برو سراغ کارت.
مثال واقعی
یک Session tmux با چند Pane، در هرکدام `node ralph.js` روی یک PRD متفاوت. Ctrl-B D، پنجره را ببند، بعداً attach کن — حلقهها هنوز میچرخند. بیشتر از ۴ تا ۶ تا همزمان عملاً پیش نمیآید.