رفتن به محتوا

گفتگو با یک عامل

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

  1. در نوار کناری به فضاها بروید
  2. روی دکمهٔ + کنار عنوان فضاها کلیک کنید
  3. یک نام تایپ کنید — این الزامی است. نام خالی پذیرفته نمی‌شود؛ پنجرهٔ گفتگو باز می‌ماند
  4. در صورت تمایل، عامل‌هایی از فضای کاری اضافه کنید
  5. اگر فضای کاری مخزنی داشته باشد، یک انتخابگر مخزن ظاهر می‌شود. در آغاز همهٔ مخزن‌ها انتخاب‌شده‌اند؛ آن را (حتی با برداشتن انتخاب یک تک‌مخزن) به مخزن‌هایی محدود کنید که این فضا باید برای‌شان worktree آماده کند
  6. تأیید کنید

Control Center فضا را باز می‌کند و آماده‌سازی یک worktree با کپی هنگام نوشتن را برای هر مخزن انتخاب‌شده در پس‌زمینه آغاز می‌کند.

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

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

وقتی عامل کار می‌کند، جریان نوبتش را می‌بینید: بخش‌های استدلال، فراخوانی‌های ابزار (خواندن و نوشتن فایل، فرمان‌های پوسته) و متن پاسخ، همه درون یک پیام نوبت عامل.

وقتی عاملی مشغول کار است، متن گفتگوی معمولی نوبت جدیدی در صف نمی‌گذارد. این متن به یک کارت هدایت در صف در نوار بالای ویرایشگر پیام تبدیل می‌شود و در مرز نوبت بعدی به اجرای زنده تزریق می‌شود. اعلان شناوری در کار نیست — خود کارت بازخورد است.

سه چیز این رفتار را عوض می‌کند:

  • پیامی که منشن @ دارد همیشه به‌عنوان پیام فرستاده می‌شود، نه به‌عنوان هدایت
  • پیامی که با یک دستور اسلش شروع می‌شود همیشه به‌عنوان همان دستور پردازش می‌شود
  • پیامی که پیوست دارد همیشه به‌عنوان پیام فرستاده می‌شود — صف هدایت فقط متن است
  • اگر همهٔ اجراهای زنده از قبل تمام شده باشند، متن از این قواعد عبور می‌کند و به‌عنوان یک پیام عادی فرستاده می‌شود

وقتی عامل به اقدامی برمی‌خورد که گاردریل‌هایش آن را می‌گیرند — یک فرمان مخرب، یک ابزار دارای دسترسی ویژه — سرور اجرا را مسدود می‌کند و یک درخواست تأیید برای هر کارخواه متصل منتشر می‌کند. اگر آن گفتگو را باز داشته باشید، درخواست در گفتگو، بالای ویرایشگر پیام، به‌شکل همان کارت گزینه‌های شماره‌دارِ ask_user ظاهر می‌شود (رد، تأیید و به‌اختیار تأیید برای هشت ساعت). رد کردن در کار نیست: عامل مسدودشده منتظر یک تصمیم است.

اگر جای دیگری در برنامه باشید، پنلی در پوسته که همیشه بالای صفحه می‌ماند همچنان چیزهایی را که در انتظارند فهرست می‌کند، تا بتوانید بدون گشتن به‌دنبال فضا، عامل را از حالت مسدود خارج کنید. این پوشاننده به‌محض اینکه گفتگوی آن فضا روی صفحه باشد درخواست را پنهان می‌کند، تا هرگز به یک درخواست دو بار پاسخ ندهید.

مهلت زمانی در کار نیست: عامل مسدودشده تا وقتی کسی تصمیم بگیرد منتظر می‌ماند. همین درخواست در نوار توجه صندوق ورودی و در کارخواه تلفن هم ظاهر می‌شود.

عاملی که به یک ترجیح، یک نیاز جاافتاده یا یک دو‌راهی واقعی بربخورد باید ask_user را فراخوانی کند. نوشتن پرسش به‌صورت یک پیام گفتگو نوبت را تمام می‌کند و باید دوباره پرامپت بدهید. این ابزار یک کارت شماره‌دار در گفتگو نمایش می‌دهد — گزینه‌ها، متن آزاد اختیاری یا هر دو — و اجرا منتظر پاسخ شما می‌ماند.

برای فرستادن یک گزینه، روی آن بزنید (شمارهٔ انتهایی هنگام رفتن نشانگر روی آن به یک فلش تبدیل می‌شود). پاسخ‌های چندگزینه‌ای و تایپ‌شده با ادامه (⌘↵ / Ctrl↵) فرستاده می‌شوند. رد شدن به عامل می‌گوید یک پیش‌فرض معقول انتخاب کند و دیگر نپرسد.

این سازوکاری جدا از کارت تأیید بالاست: تأیید یعنی «اجازه دارم این کار را بکنم؟»، پرسش یعنی «کدام‌یک از این‌ها را منظورتان بود؟». پرسیدن روی هارنس داخلی در هر حالتی در دسترس است، از جمله حالت‌های فقط‌خواندنی (چیزی را تغییر نمی‌دهد)، و عمداً در یک پرامپت تأیید پیچیده نشده است — یک پنجرهٔ گفتگو جلوی پنجرهٔ گفتگویی دیگر، بی‌آنکه تأییدکننده‌ای وصل باشد، به‌صورت بسته شکست می‌خورد. اجرایی که گفتگویی برای نمایش نداشته باشد، این ابزار را نمی‌گیرد.

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

در سرصفحهٔ فضا هیچ کنترل توقفی و هیچ میانبر صفحه‌کلیدی برای آن نیست. برای متوقف کردن فقط یک اجرا وقتی چند اجرا زنده‌اند، زبانهٔ فعالیت آن اجرا را باز کنید — سرصفحهٔ آن یک مکث/ادامه و توقف محدود به همان اجرا دارد (توقف از شما تأیید می‌خواهد). مشاهده‌پذیری ← زنده هر عامل در حال اجرا در فضای کاری را با همان کنترل فهرست می‌کند.

اجرای متوقف‌شده به‌عنوان متوقف علامت می‌خورد. برای اعزام دوباره پیام تازه‌ای بفرستید.

برای دیدن فهرست دستورها، در ویرایشگر پیام / را تایپ کنید. دستورهایی که رفتار گفتگو را عوض می‌کنند:

دستور کاری که می‌کند
/plan فضا را به حالت برنامه می‌برد. /plan تنها حالت را آماده می‌کند؛ /plan <request> آن را آماده می‌کند و باقی متن را به‌عنوان پیام شما می‌فرستد
/goal <text> هدف کاری گفتگو را ثبت می‌کند
/loop <text> تا کامل شدن یک کار، روی آن تکرار می‌کند
/compact تاریخچهٔ قدیمی‌تر را در یک خلاصهٔ لنگرشده جمع می‌کند و روی بافت فشرده‌شده ادامه می‌دهد
/todo … فهرست کارهای ماندگار این گفتگو را می‌بیند و ویرایش می‌کند

مهارت‌ها در همان فهرست زیر فضای‌نام skill: خودشان ظاهر می‌شوند، پس هرگز با دستورهای بالا تلاقی نمی‌کنند — مهارتی به نام plan یا compact همچنان قابل فراخوانی می‌ماند:

دستور چه چیزی اجرا می‌کند
/skill:<name> مهارتی که در فضای کاری نصب شده یا به عامل پیوست شده است
/skill:<repo>:<name> مهارتی که یکی از مخزن‌های checkout‌شده در این فضا ارائه می‌کند

مهارت‌های مخزن با نشان مخزنی که از آن آمده‌اند مشخص می‌شوند، چون نام به‌تنهایی نمی‌گوید کدام قراردادهای کدام سرویس را رمزگذاری می‌کند و ممکن است دو مخزن هرکدام یک testing منتشر کنند. برای یافتن یکی از آن‌ها لازم نیست پیشوند را تایپ کنید: تایپ نام خالی مهارت با مدخل‌های فضای‌نام‌دار هم مطابقت می‌کند.

یک عامل تنها مهارت‌های مخزنی را دارد که هم‌اکنون در آن کار می‌کند — به مهارت‌های محدود به مخزن نگاه کنید. ویرایشگر پیام این محدودیت را ندارد: می‌توانید مهارت هر مخزنی را با نام‌بردنش فراخوانی کنید.

/compact و /todo توسط کارخواه گرفته می‌شوند و هرگز به‌عنوان پیام ماندگار نمی‌شوند — یک خط /compact در رونوشت، برش فشرده‌سازی بعدی را یک نوبت عقب می‌اندازد. /plan به‌جای اینکه به‌عنوان متن حرکت کند، حالت ذخیره‌شدهٔ فضا را برمی‌گرداند. پس هیچ‌کدام از این سه «پیامی که برای عامل می‌فرستید» نیستند؛ انتظار نداشته باشید در تاریخچه ببینیدشان.

پیش از یک تغییر پیچیده، فضا را با /plan، فهرست کشویی حالت در نوار ابزار ویرایشگر پیام، یا Shift+Tab به حالت برنامه ببرید. سپس عامل به‌صورت فقط‌خواندنی پژوهش می‌کند و یک برنامهٔ نوع‌دار تحویل می‌دهد که پیش از شروع هر کاری آن را تأیید می‌کنید. به استفاده از حالت برنامه نگاه کنید.

دسترسی به یک عامل بدون فضای اختصاصی

بخش با عنوان “دسترسی به یک عامل بدون فضای اختصاصی”

لازم نیست برای هر عامل یک فضا داشته باشید. در هر فضا:

@alice can you look at the failing tests in src/auth_test.dart?

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