
یک نویسنده، چند عامل: کنترل همزمانی مقاوم در برابر خرابی
راهنمای انتخاب صف، کنترل نسخه، تراکنش، اجاره و توکن حصارکشی وقتی چند عامل هوش مصنوعی میتوانند یک وضعیت مشترک را تغییر دهند.
ادامه مطلبتیم ژرف ایآی

اپراتور از یک عامل نگهداری تأسیسات میخواهد هشدار سامانه سرمایش را بررسی کند. عامل داده حسگرها را میخواند، از مدل تشخیص میگیرد، تیکت تعمیر باز میکند، زمان تکنسین را رزرو میکند و سفارش قطعه جایگزین را آغاز میکند. سپس اصلاحیه حسگر میرسد: هشدار کاذب بوده است. اپراتور دکمه توقف را میزند و نشانگر انتظار بیدرنگ ناپدید میشود.
اما دقیقاً چه چیزی متوقف شده است؟ شاید مرورگر دیگر منتظر نماند و ارکستراسیون همچنان اجرا شود. شاید ارکستراتور مرحله تازهای نسازد، اما پردازشگر RPC به محاسبه ادامه دهد. شاید کارگر درخواست لغو را دریافت کند، در حالی که سفارش تأمینکننده پیشتر ثبت شده است. رابط آرام میتواند واقعیتی ناآرام را پنهان کند: سیگنال توقف یعنی نیت تغییر کرده است؛ نه اینکه همه فرزندان حتماً متوقف شدهاند یا اثرهای پیشین بازگشتهاند.
این راهنما یک تصمیم عملیاتی را حل میکند: برای هر کار در حال اجرای هوش مصنوعی، آیا درخواست توقف باید به معنای رهاکردن مشاهده، درخواست لغو همکاریپذیر، انتظار برای اثبات سکون، یا جبران و تطبیق اثرهای ثبتشده باشد؟ پاسخ به آنچه هنوز اجرا میشود، نقطه تعهد بیرونی، شدت پیامد و زمانی بستگی دارد که سامانه میتواند با ایمنی منتظر بماند.
تیمها معمولاً سه وضعیت را در واژه «لغوشده» فشرده میکنند:
میان این سه وضعیت ممکن است چند ثانیه تا چند ساعت فاصله باشد. اولی سیگنال تقاضاست، دومی تصمیم گردش کار و فقط سومی میتواند از ادعای محکمی مانند «دیگر اتفاقی رخ نمیدهد» پشتیبانی کند. محصول نباید وضعیت اول را چنان نمایش دهد که گویی وضعیت سوم ثابت شده است.
این تمایز مکمل راهنمای تلاش دوباره و تکرارپذیری امن است. پایان مهلت، نتیجه را نامعلوم میکند؛ لغو، نیت آینده را روشن میسازد. هیچکدام بهتنهایی نمیگویند اثر بیرونی رخ داده است یا نه.
استاندارد DOM در WHATWG AbortController را راهی برای ذخیره دلیل توقف و خبرکردن مشاهدهگرها تعریف میکند؛ سیگنال وابسته نیز میتواند چند منشأ مانند اقدام کاربر و پایان مهلت را ترکیب کند. این سازوکار محلی مفید است، اما پروتکل بازگردانی توزیعشده نیست. هر API باید الگوریتم واکنش به سیگنال داشته باشد و سامانه دوردست فقط وقتی آن را میبیند که برنامه نیت توقف را منتقل کند.
راهنمای لغو gRPC بر همکاریپذیربودن این رفتار تأکید دارد: ممکن است هندلر سرور مشغول باشد، کتابخانه معمولاً نمیتواند کد برنامه را قطع کند و هندلر طولانی باید وضعیت لغو را بررسی و کار خودش را متوقف کند. در بعضی زبانها انتشار به فراخوانی بالادستی خودکار و در بعضی دیگر مسئولیت برنامه است. مفاهیم پایه gRPC هشدار مهمتری میدهد: تغییرهای پیش از لغو بازگردانده نمیشوند و حتی مشتری و سرور میتوانند درباره نتیجه همان RPC به جمعبندی محلی متفاوت برسند.
توقف زیرساخت نیز مرز مشابهی دارد. Kubernetes در چرخه عمر Pod مرحله آرام و سپس توقف اجباری را توضیح میدهد: فرایند سیگنال توقف و مهلت میگیرد و بعد ممکن است SIGKILL دریافت کند. حذف اجباری در API منتظر اثبات حذف فرایند از گره نمیماند. کشتن کارگر نیز بهتنهایی درباره پرداخت، پیام، رزرو یا نوشتنی که پیشتر به سامانه دیگر فرستاده شده چیزی نمیگوید.
ارکستراتورها این فاصله را صریح نشان میدهند. AWS Step Functions لغو کارهای یکپارچه .sync را تلاشی با بهترین توان میداند که ممکن است بهدلیل مجوز یا اختلال شکست بخورد. مایکروسافت در مستند مدیریت نمونه Durable Task میگوید درخواست پایان در صف قرار میگیرد، وضعیت Terminated بعداً حاصل میشود و در حال حاضر این توقف به فعالیتها یا زیرارکستراسیونها منتشر نمیشود؛ آنها ممکن است تا پایان ادامه دهند.
Temporal انتخاب را در حالتهای لغو فعالیت در SDK رسمی جاوا نمایان میکند: انتظار برای تأیید، تلاش برای لغو و بازگشت فوری، یا رهاکردن بدون درخواست لغو. اگر فعالیت ضربان نفرستد یا درخواست را نادیده بگیرد، انتظار برای تأیید میتواند طولانی شود. این اسناد سازوکار و محدودیت را ثابت میکنند. قرارداد عملیاتی ادامه این مقاله تحلیل ژرف است، نه استانداردی منتشرشده از سوی این پروژهها.
برای همه عملیات یک دکمه قرمز هممعنا نسازید. پیش از تولید، قرارداد توقف را تعیین کنید:
| قرارداد | نتیجهای که فراخواننده مجاز است بگیرد | کاربرد مناسب | خطر اصلی |
|---|---|---|---|
| رهاکردن | «دیگر منتظر نمیمانم و نتیجه را نمایش نمیدهم.» | خواندن موقت یا گزینه آزمایشی که ادامه آن اثر مهمی ندارد | مصرف پنهان محاسبه و فرزند ناشناخته |
| درخواست توقف | «سامانه از فرزندان خواسته متوقف شوند.» | تولید مدل، بازیابی، تبدیل و کار پسزمینه کماثر که همکاری میکنند | درخواست ممکن است دیر برسد، گم شود یا نادیده بماند |
| تأیید سکون | «فرزندان نامبرده به وضعیت نهایی شناختهشده رسیدهاند.» | کار گران، منبع مشترک و عملی که تکمیل دیرهنگامش کاربر را غافلگیر میکند | تأیید ممکن است کند یا در دسترس نباشد |
| جبران و تطبیق | «اثرهای ثبتشده فهرست و به وضعیت تجاری تأییدشده رسانده شدند.» | سفارش، پیام، رزرو، مجوز، استقرار، سند و اقدام فیزیکی | جبران نیز ممکن است شکست بخورد یا اثر دوم بسازد |
«کشتن اجباری» سازوکار اعمال درون قرارداد دوم یا سوم است، نه پاسخ پنجم برای همه چیز. این روش میتواند پس از مهلت یک فرایند را متوقف کند، اما نمیتواند در زمان به عقب برگردد و تراکنش ثبتشده را پاک یا ایمیل پذیرفتهشده در سرور دیگر را پس بگیرد.
لغو باید یک کار منطقی را در همه تلاشها و فرزندان نشانه بگیرد. این پاکت مورد اعتماد را بیرون متن تولیدشده مدل حمل کنید:
| فیلد | هدف |
|---|---|
| شناسه نیت منطقی | اتصال درخواست اصلی، تلاش دوباره، مسیر جایگزین و کار فرزند |
| شناسه درخواست توقف | تکرار پیام توقف را امن و قابل حسابرسی میکند |
| درخواستکننده و دلیل | خروج کاربر، جایگزینی دستور، پایان مهلت، سیاست و کنترل رخداد را جدا میکند |
| زمان درخواست و مهلت توقف | پاکسازی آرام را پیش از تشدید محدود میکند |
| دامنه انتشار | شاخهها، ابزارها، صفها و منابع پوششدادهشده را نام میبرد |
| قرارداد لازم | رهاکردن، درخواست، تأیید یا جبران |
| ارجاع دفتر اثر | به اقدام بیرونی تلاششده یا ثبتشده اشاره میکند |
| نسخه سیاست و انتشار | قواعد حاکم هنگام تصمیم را نگه میدارد |
هویت، اختیار، پیامد و دامنه را از وضعیت احراز هویتشده محصول بسازید. مدل میتواند منسوخشدن کار را پیشنهاد دهد، اما نباید خروج کاربر را جعل، دامنه لغو را گسترده یا تطبیق را غیرضروری اعلام کند. این همان مرز راهنمای مجوز ابزار هوش مصنوعی است: نیت تولیدشده، اختیار نیست.
یک مقدار cancelled=true گذار واقعی را نشان نمیدهد. حالتهای صریح به کار ببرید:
RUNNING: کار ممکن است آغاز یا ثبت شود؛STOP_REQUESTED: نیت تغییر کرده و ساخت فرزند تازه ممنوع است؛QUIESCING: فرزندان شناختهشده در حال تأیید، تخلیه یا توقف اجباریاند؛STOPPED_CLEAN: فرزندان لازم تأیید کردهاند اثر مرتبطی در حال حرکت نیست؛STOPPED_WITH_EFFECTS: اجرا متوقف شده، اما اثر ثبتشده معتبر و آشکار مانده است؛COMPENSATING: اقدام معکوس مجاز در حال اجراست؛RECONCILIATION_REQUIRED: سامانه نمیتواند وضعیت تجاری لازم را خودکار تشخیص دهد یا بازگرداند؛UNKNOWN: یک فرزند یا سامانه بیرونی در دسترس نیست و نتیجه حلنشده است.فقط کنترلگر باید با شاهد کارگر و سامانه بیرونی این حالتها را جلو ببرد. رابط میتواند فوراً «درخواست توقف ثبت شد» بگوید و بعد به «متوقف شد»، «متوقف شد؛ دو اثر باقی است» یا «نیازمند بررسی» تغییر کند. وضعیت میانی صادقانه از پایان مطمئن اما نادرست بهتر است.
حالت UNKNOWN را پس از پایان مهلت موفق نکنید؛ تطبیق را زمانبندی و شناسهها را حفظ کنید. راهنمای گردش کار پایدار عامل توضیح میدهد چرا وضعیت قابل بازسازی باید بیرون فرایند گذرای مدل بماند.
یک درخواست هوش مصنوعی میتواند به بازیابی، چند فراخوانی مدل، زیرعامل، مرورگر، رابط ابزار، پیام صف، کار پایگاه داده و API فروشنده شاخه بزند. درخت کار یا گراف اجرای جهتدار با شناسه والد و فرزند و قابلیت لغو در هر یال بسازید.
با رسیدن STOP_REQUESTED:
برای ترافیک کنترل ظرفیت رزرو کنید. سرویسی که هنگام اشباع جایی برای لغو، پرسوجوی وضعیت یا پاکسازی ندارد، اضافهبار را برگشتناپذیر کرده است. راهنمای کنترل پذیرش ذخیرهای باریک را برای همین کار سلامت و کنترل توصیه میکند.
هر رابط ابزار باید کلاس اثر و شاهد تعهد خود را اعلام کند:
| کلاس اثر | نمونه | رفتار توقف |
|---|---|---|
| خواندن خالص یا موقت | بازیابی سند، امتیازدهی پاسخ نامزد | لغو یا رها؛ نتیجه دیرهنگام دور ریخته شود |
| رزروشدنی و برگشتپذیر | نگهداشتن موجودی، رزرو زمان، ساخت پیشنویس | توقف، سپس آزادسازی یا انقضا با تأیید |
| نوشتن تکرارپذیر | درج یا بهروزرسانی با کلید تجاری پایدار | وضعیت مرجع دوباره خوانده شود؛ شکست انتقال به معنای نبود نوشتن نیست |
| اقدام جبرانپذیر | ساخت سفارشی که لغوشدنی است | شناسه اصلی ثبت، معکوس مجاز اجرا و هر دو حالت تأیید شود |
| برگشتناپذیر یا تابع بیرون | ارسال ایمیل، افشای داده، آغاز کار فیزیکی | گام آینده متوقف، اثر آشکار و به روند انسانی یا تخصصی سپرده شود |
هرجا یکپارچهسازی اجازه میدهد، prepared، submitted، accepted، committed و verified را جدا ثبت کنید. خطرناکترین لحظه رقابت لغو با تعهد بیرونی است. فروشنده شاید درست پیش از دیدن توقف درخواست را پذیرفته باشد، اما پاسخ هنوز نرسیده باشد. با شناسه نیت یا کلید تکرارپذیری جستوجو کنید؛ از لغو انتقال نتیجه نگیرید که ثبت رخ نداده است.
جبران، پاککن نیست؛ اقدام پیامددار تازهای با مجوز، تکرارپذیری، شاهد و تأیید مستقل است. پیش از اجرا وضعیت تجاری مطلوب و کمزیانترین مسیر رسیدن به آن را تعریف کنید.
به هشدار کاذب سرمایش برگردیم. گردش کار پنج فرزند دارد:
| فرزند هنگام توقف | وضعیت مشاهدهشده | تصمیم |
|---|---|---|
| بازیابی حسگر | کامل و فقط خواندنی | بهعنوان شاهد نگه داشته شود |
| تولید تشخیص | در حال جریان | درخواست توقف همکاریپذیر؛ توکن دیرهنگام دور ریخته شود |
| تیکت نگهداری | بهصورت پیشنویس ثبتشده | با دلیل پیوندخورده بهعنوان هشدار کاذب بسته شود؛ ردپا حذف نشود |
| رزرو تکنسین | با شناسه پذیرفتهشده | لغو تکرارپذیر و آزادسازی تأیید شود |
| سفارش قطعه | درخواست رفته؛ پاسخ گم است | نامعلوم؛ با کلید نیت از فروشنده پرسیده و فقط در صورت وجود لغو شود |
رابط نخست «درخواست توقف» نشان میدهد. فرزند تازه بسته میشود. تولید سریع تأیید میکند. رابط تیکت و تکنسین حالت نهایی را گزارش میدهند. API فروشنده در دسترس نیست؛ بنابراین گردش کار به RECONCILIATION_REQUIRED میرود، نه STOPPED_CLEAN.
ده دقیقه بعد، تطبیق روشن میکند سفارش قطعه پیش از توقف ثبت شده است. سیاست اجازه لغو زیر یک سقف ارزش را میدهد؛ پس اقدام مجاز جداگانه آن را لغو و رسید را ثبت میکند. کار با STOPPED_WITH_EFFECTS پایان مییابد: تیکت و سفارش تاریخی در دفتر میمانند، اما تعهد عملیاتی بازی وجود ندارد. این نتیجه از وانمودکردن به اینکه کار هرگز اجرا نشده صادقانهتر است.
برای هر نیت منطقی، کمینه شاهد لازم برای پاسخ به این پرسشها را نگه دارید:
این رخدادها را بدون ثبت بیدلیل محتوای پرامپت یا رازها پیوند دهید. راهنمای شاهد حسابرسی الگوی گستردهتر را میدهد: شاهد را پیرامون گزارهای بسازید که بازرس باید ثابت کند، نه پیرامون هر فیلدی که ابزار پایش اتفاقی نشان میدهد.
زمان درخواست تا بستن پذیرش، زمان تأیید، زمان سکون، نرخ توقف اجباری، فرزند کشفشده پس از توقف، محاسبه کاملشده بعد از خروج کاربر، اثر ثبتشده پس از درخواست، موفقیت جبران، سن تطبیق و نرخ «توقف پاک» نادرست را بسنجید. ناپدیدشدن سریع چرخنده، سنجه قابلیت اطمینان نیست.
آزمون لغو باید مرزهای زمان را هدف بگیرد:
ناوردای تجاری را بیازمایید، نه فقط خروج فرایند: پس از سد توقف فرزند تازهای نباشد؛ جبران دو بار رخ ندهد؛ هر اثر ثبتشده حالت نهایی مرجع یا نامعلوم داشته باشد؛ و رابط در مخالفت با دفتر اثر ادعای توقف پاک نکند.
پیش از آنکه گردش کار ابزارمحور هوش مصنوعی دکمه توقف تولیدی ارائه کند، پاسخ باید مثبت باشد:
دکمه توقف قابل اعتماد نه رخداد رابط است و نه سیگنال فرایند. پروتکلی است که پذیرش را میبندد، نیت تغییریافته را منتشر میکند، تأیید میگیرد، اثر ثبتشده را کشف میکند و ابهام را به نتیجه میرساند. این پروتکل را پیش از دادن ابزار پیامددار به عامل طراحی کنید؛ پس از آغاز عمل اشتباه، معنای تعریفنشده لغو به خود رخداد تبدیل میشود.

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