رفتن به محتوا

هدف: نگه‌داشتن Claude در مسیر یک هدف

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

از یک goal برای کارهای پرحجم با یک حالت پایانیِ قابل‌راستی‌آزمایی استفاده کن:

  • مهاجرت یک ماژول به یک API جدید تا وقتی همه‌ی محل‌های فراخوانی کامپایل شوند و تست‌ها پاس شوند
  • پیاده‌سازی یک سند طراحی تا وقتی همه‌ی معیارهای پذیرش برقرار شوند
  • تقسیم یک فایل بزرگ به ماژول‌های متمرکز تا وقتی هرکدام زیر سقف اندازه بمانند
  • رسیدگی به یک صف از ایشوهای برچسب‌خورده تا وقتی صف خالی شود

این صفحه به این موارد می‌پردازد:

مقایسه‌ی راه‌های روشن‌نگه‌داشتن یک نشست

Section titled “مقایسه‌ی راه‌های روشن‌نگه‌داشتن یک نشست”

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

رویکردنوبت بعدی شروع می‌شود وقتیمتوقف می‌شود وقتی
/goalنوبت قبلی تمام شودیک مدل تأیید کند شرط برقرار است
/loopیک بازه‌ی زمانی بگذردتو متوقفش کنی، یا Claude تشخیص دهد کار تمام است
Stop hookنوبت قبلی تمام شوداسکریپت یا پرامپت خودت تصمیم بگیرد

/goal و یک Stop hook هر دو بعد از هر نوبت اجرا می‌شوند. /goal یک میان‌بُرِ محدود به نشست است: یک شرط تایپ می‌کنی و فقط برای نشست جاری فعال است. یک Stop hook در فایل تنظیماتت زندگی می‌کند، برای هر نشستی در دامنه‌اش اعمال می‌شود، و می‌تواند یک اسکریپت را برای بررسی‌های قطعی یا یک پرامپت را برای بررسی‌های ارزیابی‌شده توسط مدل اجرا کند.

Auto mode به‌تنهایی فراخوانی ابزارها را درون یک نوبت تأیید می‌کند ولی نوبت تازه‌ای را شروع نمی‌کند. Claude وقتی کار را تمام‌شده تشخیص دهد متوقف می‌شود. /goal یک ارزیابِ جداگانه اضافه می‌کند که شرط تو را بعد از هر نوبت بررسی می‌کند، پس تکمیل را یک مدل تازه تصمیم می‌گیرد، نه همان مدلی که کار را انجام می‌دهد. این دو مکمل هم‌اند: auto mode پرامپت‌های هر-ابزار را حذف می‌کند و /goal پرامپت‌های هر-نوبت را.

در هر نشست یک goal می‌تواند فعال باشد. همان دستور بسته به آرگومان، آن را تعیین، بررسی و پاک می‌کند.

/goal را به‌همراه شرطی که می‌خواهی برآورده شود اجرا کن. اگر یک goal از قبل فعال باشد، goal جدید جایگزینش می‌شود.

/goal all tests in test/auth pass and the lint step is clean

تعیین یک goal بلافاصله یک نوبت را شروع می‌کند، با خودِ شرط به‌عنوان دستورالعمل. لازم نیست یک پرامپت جداگانه بفرستی. تا وقتی goal فعال است، یک نشانگرِ ◎ /goal active نشان می‌دهد goal چقدر در حال اجرا بوده است.

بعد از هر نوبت، ارزیاب یک دلیل کوتاه برمی‌گرداند که توضیح می‌دهد چرا شرط برقرار است یا نیست. تازه‌ترین دلیل در نمای وضعیت و در رونوشت ظاهر می‌شود تا ببینی Claude در نوبت بعدی به‌سمت چه چیزی کار می‌کند.

ارزیاب شرط تو را در برابر چیزی که Claude در گفت‌وگو رو کرده است قضاوت می‌کند. خودش دستوری اجرا نمی‌کند یا فایلی نمی‌خواند، پس شرط را طوری بنویس که خروجیِ خودِ Claude بتواند نشانش دهد. «همه‌ی تست‌های test/auth پاس می‌شوند» کار می‌کند چون Claude تست‌ها را اجرا می‌کند و نتیجه در رونوشت می‌نشیند تا ارزیاب آن را بخواند.

شرطی که در طول نوبت‌های زیاد دوام بیاورد معمولاً این‌ها را دارد:

  • یک حالت پایانیِ قابل‌اندازه‌گیری: یک نتیجه‌ی تست، یک کد خروجیِ build، یک شمارش فایل، یک صف خالی
  • یک بررسیِ تصریح‌شده: این‌که Claude چطور باید آن را اثبات کند، مثل «npm test با ۰ خارج می‌شود» یا «git status پاک است»
  • محدودیت‌هایی که مهم‌اند: هر چیزی که در مسیر رسیدن نباید تغییر کند، مثل «هیچ فایل تست دیگری تغییر نمی‌کند»

شرط می‌تواند تا ۴٬۰۰۰ کاراکتر باشد.

برای محدودکردن مدت اجرای یک goal، یک بند نوبتی یا زمانی در شرط بگنجان، مثل or stop after 20 turns. Claude در هر نوبت پیشرفت را در برابر آن بند گزارش می‌کند و ارزیاب از روی گفت‌وگو قضاوتش می‌کند.

/goal را بدون آرگومان اجرا کن تا وضعیت فعلی را ببینی.

/goal

اگر یک goal فعال باشد، وضعیت این‌ها را نشان می‌دهد:

  • شرط
  • چه مدت در حال اجرا بوده
  • چند نوبت ارزیابی شده
  • مصرف فعلی توکن
  • تازه‌ترین دلیل ارزیاب

اگر هیچ goalی فعال نباشد ولی یکی پیش‌تر در نشست محقق شده باشد، وضعیت شرطِ محقق‌شده را به‌همراه مدت، شمار نوبت‌ها و مصرف توکنش نشان می‌دهد.

/goal clear را اجرا کن تا یک goal فعال را پیش از برقرارشدن شرطش حذف کنی.

/goal clear

stop، off، reset، none، و cancel به‌عنوان مترادف‌های clear پذیرفته می‌شوند. اجرای /clear برای شروع یک گفت‌وگوی جدید هم هر goal فعالی را حذف می‌کند.

goalی که در پایان یک نشست هنوز فعال بوده، وقتی آن نشست را با --resume یا --continue از سر بگیری بازگردانده می‌شود. شرط منتقل می‌شود، ولی شمار نوبت‌ها، تایمر و مبنای مصرف توکن همه با ازسرگیری ریست می‌شوند. goalی که از قبل محقق یا پاک شده باشد بازگردانده نمی‌شود.

/goal در حالت غیرتعاملی، در اپلیکیشن دسکتاپ، و از طریق Remote Control کار می‌کند. تعیین یک goal با -p حلقه را در یک فراخوانیِ واحد تا تکمیل اجرا می‌کند:

Terminal window
claude -p "/goal CHANGELOG.md has an entry for every PR merged this week"

برای متوقف‌کردن یک goal غیرتعاملی پیش از برقرارشدن شرط، فرایند را با Ctrl+C قطع کن.

/goal یک لایه‌ی پوششی روی یک Stop hookِ مبتنی‌بر-پرامپتِ محدود-به-نشست است. هر بار که Claude یک نوبت را تمام می‌کند، شرط و گفت‌وگوی تا آن لحظه به مدل کوچک و سریعِ پیکربندی‌شده‌ات فرستاده می‌شود که به‌صورت پیش‌فرض Haiku است. مدل یک تصمیمِ بله-یا-نه و یک دلیل کوتاه برمی‌گرداند. یک «نه» به Claude می‌گوید کار را ادامه دهد و دلیل را به‌عنوان راهنمایِ نوبت بعدی همراه می‌کند. یک «بله» goal را پاک می‌کند و یک ورودیِ محقق‌شده در رونوشت ثبت می‌کند.

ارزیاب روی هر providerی که نشستت برایش پیکربندی شده اجرا می‌شود. ابزارها را فرا نمی‌خواند، پس فقط می‌تواند چیزی را قضاوت کند که Claude از قبل در گفت‌وگو رو کرده است.

/goal فقط در workspaceهایی اجرا می‌شود که دیالوگ trust را پذیرفته‌ای، چون ارزیاب بخشی از سیستم hooks است. /goal همچنین وقتی disableAllHooks در هر سطحی از تنظیمات تنظیم شده باشد، یا وقتی allowManagedHooksOnly در managed settings تنظیم شده باشد، در دسترس نیست. در هر مورد، دستور به‌جای این‌که بی‌صدا کاری نکند، دلیلش را به تو می‌گوید.