رفتن به محتوا

منشن کردن عامل‌ها با @

این راهنما نشان می‌دهد چگونه در یک فضا عامل‌ها و هم‌تیمی‌ها را با @ منشن کنید.

در ویرایشگر پیام @ را تایپ کنید و از میان تکمیل خودکار یک عامل انتخاب کنید، یا نام را خودتان بنویسید:

@alice fix the login bug

عاملِ منشن‌شده، اگر از قبل مشارکت‌کنندهٔ فضا نباشد، به‌عنوان مشارکت‌کننده به فضا افزوده می‌شود و با بافت و حالت همان فضا اعزام می‌گردد. مشارکت‌کنندگانی که منشن نشده‌اند پیام را می‌بینند اما اعزام نمی‌شوند.

اگر پیامی بفرستید که هیچ منشنی از عامل در آن نباشد، Control Center خودش پاسخ‌دهنده را انتخاب می‌کند: عاملی که آخرین بار در گفتگو صحبت کرده است؛ در غیر این صورت مالک گفتگو، اگر داشته باشد؛ در غیر این صورت نخستین عامل سطح‌بالا میان مشارکت‌کنندگان فضا. در فضایی با یک عامل، این همیشه همان عامل یکتاست.

توکن منشن بدون توجه به بزرگی و کوچکی حروف و بر پایهٔ نام دقیق یا پیشوند تطبیق داده می‌شود. بنابراین @arch به عاملی با نام architect می‌رسد و @Alice به alice.

دو پیامد که ارزش برنامه‌ریزی دارند:

  • توکن کوتاه خطا نیست. اگر دو عامل پیشوند مشترکی داشته باشند، نخستین موردی که پیدا شود برنده است و اینکه کدام‌یک باشد به ترتیب بستگی دارد — نه به هیچ قاعدهٔ تساوی‌شکن. هر جا نام‌ها هم‌پوشانی دارند، نام کامل را به کار ببرید.
  • فقط حروف، رقم‌ها و زیرخط‌ها بخشی از توکن‌اند. تجزیه‌گر @(\w+) را تطبیق می‌دهد، پس @code-reviewer به‌عنوان توکن code خوانده می‌شود و @my agent به‌عنوان my. عاملی که نامش خط تیره، نقطه یا فاصله داشته باشد نمی‌تواند به‌شکلی قابل‌اتکا منشن شود — از جمله از راه تکمیل خودکار، که نام را به‌صورت متن ساده درج می‌کند. عامل‌ها را با یک واژه یا با زیرخط نام‌گذاری کنید.

منشن‌ها پیش از رسیدن متن به عامل از آن حذف می‌شوند. پس پیامی که تنها منشن باشد (@alice) چیزی اعزام نمی‌کند — چیزی برای انجام دادن به آن بدهید.

@alice refactor the auth module. @bob write tests for it.

هر دو عامل به‌صورت موازی در همان گفتگو اعزام می‌شوند و هر دو پیام کامل را دریافت می‌کنند.

آن‌ها همچنین worktreeهای همان فضا را به اشتراک می‌گذارند. worktreeهای مخزن به‌ازای هر فضا آماده می‌شوند، نه به‌ازای هر عامل؛ هر عامل دایرکتوری کاری لایه‌ای خودش را برای AGENTS.md، مهارت‌ها و پیکربندی‌اش می‌گیرد و مخزن‌های مشترک با دسترسی خواندن-نوشتن به آن پیوند می‌خورند. پس دو عاملی که با هم منشن شده‌اند می‌توانند ویرایش‌های یکدیگر را ببینند — و با آن‌ها برخورد کنند.

هر @tokenی که با هیچ عاملی تطبیق پیدا نکند، در برابر اعضای انسانی فضای کاری و بر پایهٔ شناسهٔ کاربری، با همان قاعدهٔ نام دقیق یا پیشوند و بدون توجه به بزرگی و کوچکی حروف آزموده می‌شود.

منشنی که به یک انسان تبدیل شود چیزی اعزام نمی‌کند. صرفاً سوار بر فرادادهٔ پیام است تا مسیریاب اعلان بتواند به آن شخص خبر دهد.

نام عامل‌ها همیشه نخست آزموده می‌شود و توکنی که عاملی آن را تصاحب کرده باشد هرگز به فهرست اعضا عرضه نمی‌شود — هر @word تنها می‌تواند به یک principal تبدیل شود.

عاملی که اعزام می‌شود در پرامپتش یک بلوک «Summons» می‌گیرد که نام کسی را که او را فراخوانده ذکر می‌کند و فهرست اعضای فضا را می‌آورد — عامل‌های دیگر (برچسب‌خورده به سطح‌بالا یا زیردست) و اعضای انسانی — تا بداند می‌تواند کار را به چه کسی واگذار کند. این بلوک همچنین به او می‌گوید که منشن کردن عامل دیگر در پاسخش آن عامل را بیدار می‌کند و منشن کردن خودش نادیده گرفته می‌شود.

وقتی یک عامل عامل دیگری را منشن می‌کند

بخش با عنوان “وقتی یک عامل عامل دیگری را منشن می‌کند”

هر عامل می‌تواند در پاسخ خودش کار را واگذار کند. وقتی یک نوبت تمیز به پایان می‌رسد، منشن‌های متنش حل می‌شوند و آن عامل‌ها به فضا افزوده و به همان گفتگو اعزام می‌شوند، و نوبتِ منشن‌کننده به‌عنوان پرامپتشان به کار می‌رود. نوبتی که شکست خورده یا قطع شده باشد کسی را بیدار نمی‌کند — در میانهٔ فکر کردن متوقف شده است.

این قاعده‌ها عمداً سخت‌گیرانه‌تر از قاعده‌های ویرایشگر پیام‌اند، چون کسی ناظر نیست تا حدس اشتباه را تصحیح کند:

  • فقط نام‌های دقیق. بدون تطبیق پیشوند. وقتی انسان @arch را تایپ می‌کند به architect می‌رسد؛ از سوی یک عامل به هیچ‌کس نمی‌رسد. نامی که با دو عامل تطبیق پیدا کند هم به هیچ‌کس نمی‌رسد.
  • کد نثر نیست. منشن‌های درون بلوک‌های حصاردار یا `backticks` نادیده گرفته می‌شوند، پس نقل کردن یک حاشیه‌نویسی @Override یا pip install foo@1.2 بی‌خطر است. حصارِ بسته‌نشده هر چیزی را که پس از آن بیاید بی‌اثر می‌کند.
  • @ی که به توکن پیشین چسبیده باشد منشن نیست — sam@host.com، pkg/@scope و node@20 به هیچ‌کس تبدیل نمی‌شوند.
  • خط تیره‌ها حفظ می‌شوند، پس @code-reviewer به‌عنوان خودش تبدیل می‌شود، نه به‌عنوان توکن code.
  • حداکثر سه عامل در هر نوبت. عاملی که در یک خلاصه شش هم‌تیمی را نام می‌برد در حال فهرست کردن‌شان است، نه فراخواندن‌شان.

زنجیرهٔ بیدارسازی همانند واگذاری محدود می‌شود: عمق ۳، و عاملی که از قبل در زنجیره باشد نمی‌تواند دوباره به‌وسیلهٔ آن بیدار شود (بدون A → B → A). برای هر جفت مرتب نیز در سراسر زنجیره‌ها محدودیت نرخ اعمال می‌شود. بیدارسازیِ ردشده یک پیام سیستمی در گفتگو می‌گذارد که می‌گوید کدام منشن تحویل نشد و چرا — نامِ حل‌نشده چنین پیامی نمی‌گذارد، چون در غیر این صورت هر @ی در یک جمله خودش را روایت می‌کرد.

برای واگذاری‌ای که نباید به نثر وابسته باشد — یک درخواست/پاسخ، یا رسیدن به عاملی بیرون از فضا — به‌جای آن از ابزارهای send_to_agent، ask_agent و delegate_task استفاده کنید.