علیرضا اسکندری
دوره کامل وایب کدینگ مقدماتی و پیشرفته اضافه شدثبت‌نام با تخفیف (۴۰٪ تخفیف)

چند ایجنت کدنویسی موازی با git worktree، بدون قاطی شدن کدها

۱۱ آبان ۱۴۰۵ · ۵ دقیقه مطالعه

اگه می‌خوای Claude Code و Codex و بقیه همزمان روی یه پروژه کار کنن و کار هم رو خراب نکنن، git worktree همون چیزیه که لازم داری. اینجا میگم چطور راهش بندازی و Orca و T3 Code کجای ماجرا به کارت میان.

چند ایجنت کدنویسی موازی با git worktree، بدون قاطی شدن کدها

سلام، اولین باری که دو تا ایجنت رو همزمان روی یه پروژه ول کردم، فکر می‌کردم الان سرعتم دو برابر میشه. یکی داشت فرم ثبت‌نام رو درست می‌کرد، اون یکی یه باگ توی صفحه‌ی پرداخت رو. ده دقیقه بعد هر دوشون داشتن یه فایل مشترک رو ویرایش می‌کردن و کار همدیگه رو پاک می‌کردن. نتیجه؟ یه کدبیس قاطی‌پاتی و یه من که نمی‌دونستم کدوم تغییر مال کیه.

مشکل از ایجنت‌ها نبود؛ من دو نفر رو پشت یه میز و یه کیبورد نشونده بودم. راه‌حلش هم چیز تازه‌ای نیست، یه قابلیت قدیمی خود گیته به اسم git worktree (مستندات رسمیش اینجاست) که این روزها با موج ابزارهای «چند ایجنت موازی» دوباره حسابی سر زبون‌ها افتاده.

git worktree دقیقاً چیه و چرا به درد ایجنت‌ها می‌خوره؟

جواب کوتاه: git worktree یه پوشه‌ی جداست با برنچ و فایل‌های خودش، که تاریخچه و ریموت رو با ریپوی اصلی شریکه. پس به‌جای اینکه چند بار پروژه رو کلون کنی، از یه ریپو چند تا نسخه‌ی کاری می‌سازی و هر ایجنت توی پوشه‌ی خودش کار می‌کنه. هیچ‌کدوم به فایل‌های اون یکی دست نمی‌زنه، ولی همه‌شون آخرش به همون ریپو کامیت می‌کنن.

فرض کن پروژه‌ت توی پوشه‌ی myapp هست. با این سه تا دستور کل ماجرا دستت میاد:

  1. git worktree add ../myapp-auth -b feature-auth یه پوشه‌ی تازه کنار پروژه می‌سازه، روی یه برنچ جدید.
  2. git worktree list نشون میده الان چند تا worktree داری و هر کدوم روی چه برنچیه.
  3. git worktree remove ../myapp-auth وقتی کار تموم شد و مرج کردی، پوشه رو جمع می‌کنه.

Claude Code خودش worktree می‌سازه

اگه با Claude Code کار می‌کنی، لازم نیست حتی همین دستورها رو حفظ کنی. طبق مستندات رسمی worktree در Claude Code کافیه بزنی claude --worktree feature-auth تا یه worktree زیر .claude/worktrees/feature-auth/ با برنچ worktree-feature-auth ساخته بشه و ایجنت همونجا شروع به کار کنه. توی یه ترمینال دیگه با یه اسم دیگه همین رو اجرا کن، شد دو تا ایجنت موازی.

دو تا نکته که خودم اولش ازشون غافل بودم:

یک، worktree یه چک‌اوت تازه‌ست، یعنی node_modules و فایل‌های gitignore‌شده مثل .env توش نیستن. یا از ایجنت بخواه وابستگی‌ها رو نصب کنه، یا یه فایل .worktreeinclude بساز تا این فایل‌ها خودکار کپی بشن. دو، پوشه‌ی .claude/worktrees/ رو به .gitignore اضافه کن که توی ریپوی اصلی به‌عنوان فایل اضافه نشون داده نشه.

ابزارهای دیگه هم کم‌وبیش همین مسیر رو رفتن. اگه هنوز ابزار ترمینالی‌ت رو انتخاب نکردی، معرفی Codex CLI توی کتابخونه‌ی سایت به کارت میاد. با هر کدوم که باشی، git worktree add دستی همیشه جواب میده.

Orca و T3 Code: وقتی تعداد ترمینال‌ها از دستت در میره

دو تا ایجنت رو با دو تا ترمینال میشه مدیریت کرد. ولی وقتی تعدادشون به چهار پنج تا رسید، دیگه یادت نمی‌مونه کدوم کارش تموم شده و کدوم منتظر جواب توئه. اینجاست که ابزارهایی که این هفته توی ترندهای GitHub بالا اومدن معنی پیدا می‌کنن. هر دوی این‌ها اوپن‌سورس با لایسنس MIT هستن و با اشتراک خود تو روی ایجنت‌ها کار می‌کنن.

  • Orca: یه اپ دسکتاپ که Claude Code، Codex، OpenCode یا Pi رو کنار هم اجرا می‌کنه و هر کدوم رو توی worktree خودش می‌ذاره. یه پرامپت رو می‌تونی همزمان به چند ایجنت بدی، خروجی‌ها رو مقایسه کنی و بهترینش رو مرج کنی. اپ موبایل هم داره که خبرت کنه کار کدوم ایجنت تموم شده. امروز (۱۱ آبان ۱۴۰۵) که چک کردم حدود ۱۱۳ هزار ستاره داشت. بهترین برای: وقتی می‌خوای چند ایجنت رو روی یه تسک مسابقه بدی.
  • T3 Code: خودش رو «سطح کنترل ایجنت‌ها» معرفی می‌کنه؛ یعنی ایجنت‌هایی که روی سیستمت نصب و لاگین کردی (Claude Code، Codex، Cursor CLI، OpenCode و چند تای دیگه) رو از دسکتاپ، وب یا موبایل کنترل می‌کنی. سازنده‌هاش صادقانه نوشتن که پروژه خیلی اول راهه و باگ داره. برای امتحان بدون نصب، npx t3@latest کافیه. بهترین برای: وقتی پای سیستم نیستی و می‌خوای کار ایجنت‌ها رو از گوشی دنبال کنی.

چند تا ایجنت، نه چند تا دردسر

worktree فقط مشکل قاطی شدن فایل‌ها رو حل می‌کنه. بقیه‌ی مشکل‌ها هنوز با خودته. این‌ها قانون‌هایی‌ان که بعد از چند بار سوختن برای خودم گذاشتم:

  • تسک‌ها رو مستقل بچین. اگه دو تا ایجنت روی یه فایل یا یه ماژول کار کنن، worktree فقط دعوا رو عقب می‌ندازه تا لحظه‌ی مرج. یکی فرانت، یکی تست، یکی داکیومنت؛ این ترکیب کمتر به هم گره می‌خوره.
  • قوانین پروژه رو یه بار بنویس. هر worktree یه شروع تازه‌ست و ایجنت نباید هر بار از صفر بفهمه پروژه چه شکلیه. یه فایل AGENTS.md خوب (این پرامپت برای نوشتنش کمکت می‌کنه) و اسکیل‌هایی که یه بار به ایجنتت یاد دادی توی همه‌ی worktreeها همراهت هستن.
  • حواست به پورت‌ها باشه. اگه هر worktree سرور توسعه‌ی خودش رو بالا بیاره، همه دنبال یه پورت می‌گردن. از اول به هر کدوم یه پورت جدا بده.
  • گلوگاه اصلی، بازبینی خودته. پنج تا ایجنت یعنی پنج تا دیف که باید بخونی. اگه نمی‌رسی همه رو با دقت ببینی، ایجنت کمتری راه بنداز. این پرامپت بازبینی دیف قبل از مرج و چک‌لیست امنیت در وایب کد دقیقاً برای همین لحظه‌ان.

حالا حرفم چی بود؟

به نظرم کار کردن با چند ایجنت موازی بیشتر شبیه مدیریت یه تیم کوچیکه تا کدنویسی. به هر نفر میز خودش رو میدی، کار مشخص میدی، و آخر روز کار همه رو خودت می‌بینی. worktree همون میز جداست؛ بقیه‌ش هنوز مهارت تو در تقسیم کار و بازبینیه.

اگه تا حالا امتحانش نکردی، از دو تا شروع کن، نه پنج تا. یه تسک کوچیک و یه باگ ساده، هر کدوم توی worktree خودش.

ایجنت بیشتر، سرعت بیشتر نیست؛ تقسیم کار درست، سرعت بیشتره.

تو تا حالا چند تا ایجنت رو همزمان روی یه پروژه راه انداختی؟ کجاش برات گره خورد؟