یک خطای ساده در ارسال پاسخهای همزمان — جایی که هم یک بات هوش مصنوعی و هم یک اپراتور انسانی بهطور همزمان به کاربر پیام میدهند — میتواند اعتماد کاربر به یک محصول پیامرسان حرفهای را بهطور کامل نابود کند. در ۱۱ سپتامبر ۲۰۲۶، یک راهنمای فنی جزئیات الگوی هماهنگی جدیدی را معرفی کرد که با استفاده از راهکار پیامرسانی اجتماعی Tencent RTC، مشکل «اختیار پاسخدهی» (Reply Authority) را از طریق انتقالهای اتمیک (Atomic Handoffs) حل میکند.
بسیاری از ادغامهای هوش مصنوعی با باتها، آنها را مانند یک همکار میبینند اما در پیادهسازی ابتداییترین مهارتهای اجتماعی انسان، یعنی دانستن زمانِ واگذاری گفتگو به دیگری، شکست میخورند. در بسیاری از سیستمهای فعلی، حتی پس از اینکه یک اپراتور انسانی گفتگو را باز میکند، بات همچنان در حال تولید پاسخ است. این وضعیت منجر به یک «شرایط مسابقه» (Race Condition) میشود که در آن کاربر دو پاسخ متفاوت دریافت میکند و مشخص نیست چه کسی واقعاً مسئول گفتگو است. مشکل عملی در اینجا انتخاب مدل خوشصحبتتر یا انسانیتر نیست، بلکه کنترل دقیق اختیار پاسخدهی است.
برای حل این چالش، معماری پیشنهادی یک قانون سختگیرانه (Invariant) را معرفی میکند: در هر لحظه حداکثر یک پاسخدهنده اختیار جواب دادن به پیام مستقیم (DM) را دارد و تغییر این اختیار، بلافاصله تمام پاسخهای ناتمام مالک قبلی را باطل میکند. این رویکرد، مسئله را از یک چالش «شخصیتپردازی» به یک مسئله «مدیریت وضعیت برنامه» (Application-State Problem) تبدیل میکند. به این ترتیب، کاربردهای عملی هوش مصنوعی زاینده — مانند پیشنویس کردن پاسخهای روتین، خلاصهسازی زمینههای منتخب یا توصیه به ارتقای گفتگو — از وعدههای بزرگتر درباره تبدیل هوش مصنوعی به یک همکار واقعی تفکیک میشود.
همانطور که در تحلیلهای پیشین ما دربارهی امنیت و مدیریت وضعیت عاملهای هوش مصنوعی اشاره کردیم، جداسازی لایه تصمیمگیری از لایه اجرا، کلید پایداری در مقیاس است. این رویکرد یادآور استراتژی تفکیک خلاقیت از بازبینی است که برای مهار ریسک در شبکههای اجتماعی پیشنهاد شده بود.
مکانیزم Epoch
هسته این راهکار، مفهوم Epoch (دوره) است؛ یک شماره نسخه که به عنوان مرز لغو (Cancellation Boundary) عمل میکند. هر بار که اختیار پاسخدهی تغییر میکند (مثلاً از هوش مصنوعی به انسان)، شماره Epoch افزایش مییابد.
- وقتی هوش مصنوعی شروع به نوشتن پیشنویس میکند، Epoch فعلی به آن اختصاص مییابد.
- اگر یک انسان گفتگو را به دست بگیرد (Claim کند)، شماره Epoch افزایش مییابد.
- هنگامی که هوش مصنوعی در نهایت پیشنویس خود را تمام میکند، سیستم بررسی میکند که آیا Epoch پیشنویس با وضعیت فعلی مطابقت دارد یا خیر.
- اگر مطابقت نداشته باشند، نتیجه به عنوان «کهنه» (Stale) رد شده و هرگز ارسال نمیشود.
طبق مستندات فنی، این روش بسیار استوارتر از تلاش برای لغو ساده یک درخواست HTTP است. لغو کردن تنها یک بهینهسازی است، اما رد کردن نتایج کهنه، مکانیزم اصلی صحت (Correctness) است. یک درخواست مدل ممکن است حتی پس از واگذاری گفتگو به پایان برسد، اما بازگشت (Callback) آن دیگر با Epoch فعال گفتگو همخوانی ندارد و بنابراین نمیتواند به مرحله نظارت (Moderation) یا تحویل برسد.
حالتهای اختیار مبتنی بر وضعیت
سیستم برای جلوگیری از هرگونه شکاف در اختیار، گفتگو را از طریق مجموعهای از حالتهای صریح مدیریت میکند. این حالتها دقیقاً تعریف میکنند که چه کسی مجاز به پاسخ است و کاربر چه چیزی را میبیند:
- consent_required: هیچکس (نه هوش مصنوعی و نه انسان) اختیار پاسخ ندارد. کاربر گزینهای را میبیند تا یا کمک هوش مصنوعی را شروع کند یا درخواست یک شخص واقعی دهد.
- ai_ready: هوش مصنوعی فعال است و منتظر پیام کاربر میماند. کاربر میبیند که دستیار هوش مصنوعی فعال شده است.
- ai_generating: مدل در حال کار است. کاربر یک نشانگر «در حال پردازش» میبیند که قابل لغو است؛ در این حالت هیچکس دیگری نمیتواند پاسخ دهد.
- moderating: پیشنویس ایجاد شده اما در حال بررسی از نظر ایمنی و سیاستهاست. پیشنویس هنوز برای کاربر قابل مشاهده نیست.
- bot_sending: پاسخ تأیید شده در حال انتقال است. هیچکس دیگری نمیتواند پاسخ دهد.
- delivery_unknown: سیستم در حال بررسی است که آیا پیام واقعاً رسید یا خیر تا از تلاشهای مجدد کورکورانه جلوگیری کند. کاربر پیام «در حال بررسی تحویل پیام...» را میبیند.
- handoff_pending: درخواست انسان داده شده اما هنوز کسی آن را نپذیرفته است. اختیار پاسخدهی صرفاً به دلیل کند بودن رسیدن اپراتور، به هوش مصنوعی باز نمیگردد؛ زیرا ارتقای کند همچنان ارتقاست.
- human_active: یک اپراتور خاص اجاره (Lease) گفتگو را در اختیار دارد. هویت یا نقش اپراتور برای کاربر قابل مشاهده است.
- ended: گفتگو بسته شده و هیچیک از طرفین نمیتوانند پاسخ دهند.
جزئیات پیادهسازی: هماهنگکننده
برای اجرای این ساختار، از یک هماهنگکننده (Coordinator) بر پایه TypeScript استفاده میشود که تغییرات وضعیت را مدیریت میکند. این هماهنگکننده از یک تابع reduce برای پردازش رویدادهایی مانند USER_OPTED_IN (پذیرش کاربر)، AI_DRAFTED (پیشنویس هوش مصنوعی) و HUMAN_CLAIMED (تصاحب توسط انسان) بهره میبرد.
مکانیزمهای فنی کلیدی
- ردیابی نوبت (Turn Tracking): هر تعامل هوش مصنوعی با یک
turnId(مثلاًturn:msg-1) ردیابی میشود. این کار تضمین میکند که یک پاسخ خاص دقیقاً به یک پیام خاص کاربر گره بخورد. - شناسههای قطعی (Deterministic IDs): پیامهای خروجی هوش مصنوعی از
clientMessageIdهای قطعی استفاده میکنند (با فرمتai:{conversationId}:{turnId}). این کار از ایجاد پیامهای تکراری در زمان بازسازی وضعیت (Reconciliation) جلوگیری میکند. - جداسازی اثرات (Effect Separation): هماهنگکننده مستقیماً SDKها را فراخوانی نمیکند، بلکه «اثراتی» (Effects) مانند
GENERATE(تولید)،MODERATE(نظارت) یاSEND_BOT(ارسال بات) برمیگرداند که سپس به رابطهای Tencent RTC یا بکاند نگاشت میشوند. - نویسندگی صریح: هر پیام قابل مشاهده باید یک نوع نویسنده صریح داشته باشد:
user(کاربر)،ai(هوش مصنوعی)،human(انسان) یاsystem(سیستم). این کار مانع از آن میشود که رابط کاربری هر پاسخی را با یک آواتار حساب کاربری عمومی نمایش دهد.
پیادهسازی اجاره در بکاند
برای جلوگیری از اینکه دو اپراتور انسانی بهطور همزمان یک گفتگو را تصاحب کنند، این راهنما استفاده از یک اجاره (Lease) با متد «مقایسه و جایگزینی» (Compare-and-Set) در بکاند را توصیه میکند. در حالی که تابع reducer از دو تصاحب در یک توالی رویداد محلی جلوگیری میکند، اما دو اپراتور همچنان میتوانند بهطور همزمان از دستگاههای جداگانه روی دکمه «تصاحب» کلیک کنند.
بکاند باید یک اجاره شامل conversationId (شناسه گفتگو)، ownerType (نوع مالک: هوش مصنوعی یا انسان)، ownerId (شناسه مالک) و یک شماره version (نسخه) را ذخیره کند. بکاند تنها زمانی باید اجاره را بهروزرسانی کند که نسخه ذخیره شده با نسخهای که توسط متقاضی خوانده شده، مطابقت داشته باشد. اگر دو اپراتور همزمان کلیک کنند، بازنده به جای اینکه بهطور خاموش به پاسخدهنده دوم تبدیل شود، هویت مالک فعلی را دریافت میکند. وضعیت رابط کاربری (UI) نمیتواند تصاحبهای توزیعشده را سریالسازی کند؛ بنابراین توسعهدهندگان نباید برای این منطق به یک دکمه غیرفعال (Disabled) تکیه کنند.
حفاظهای حریم خصوصی و زمینه
یک نکته حیاتی دیگر در مورد نحوه تدوین زمینه (Context) برای هوش مصنوعی است. واگذاری گفتگو به معنای ارسال تمام تاریخچه به مدل نیست. سیستم از یک کامپایلر مبتنی بر سیاست استفاده میکند که:
۱. فیلتر برای رضایت: تنها پیامهایی را میگنجاند که کاربر صراحتاً اجازه پردازش توسط هوش مصنوعی را داده است (consentedForAi).
۲. حذف دادههای انسانی: پیامهایی که نویسنده آنها «انسان» است را بهطور پیشفرض فیلتر میکند. این کار مانع از آن میشود که عبارات عملیاتی خصوصی اپراتور یا یادداشتهای داخلی او بهطور خودکار به زمینه مدلهای آینده تبدیل شود.
۳. محدود کردن حجم: تاریخچه را تا تعداد maximumMessages برش میزند تا کارایی سیستم حفظ شود.
اگر محصولی نیاز دارد که پیامهای انسانی در زمینه حضور داشته باشند، این باید یک تصمیم آگاهانه برای رضایت و نگهداری باشد، نه نتیجه تصادفی بارگذاری متن گفتگو.
مدیریت پیامهای چندزبانه
در محصولات جهانی، این راهنما هشدار میدهد که متنهای ترجمهشده نباید به عنوان متن اصلی به هوش مصنوعی داده شوند. ترجمه باید یک «نمای مشتقشده» (Derived View) باشد. سیستم باید متن منبع تغییرناپذیر را ذخیره کند و تنها در صورتی آن را به مدل بفرستد که مدل از آن زبان پشتیبانی کند.
اگر کاربر درخواست ترجمه در لحظه را داشت، ترجمه باید در کنار متن منبع نمایش داده شود، نه اینکه بهطور خاموش جایگزین رکورد منبع شود. این موضوع حیاتی است زیرا ترجمه میتواند ظرافتهای معنایی را تغییر دهد و یک اپراتور انسانی باید دقیقاً بداند دستیار هوش مصنوعی چه متنی را ارزیابی کرده است.
مستندات Tencent RTC ترجمه پیامهای متنی در لحظه را از طریق TUIChat، شامل انواع محتوای پشتیبانی شده، زبانها و شرایط نسخههای مختلف مستند کرده است. توسعهدهندگان باید پیش از فعال کردن این کنترل، مستندات رسمی ترجمه پیام TUIChat را برای محدودیتهای فعلی بررسی کنند. برای زمینه هوش مصنوعی، سیاست باید این باشد: ارسال متن منبع در صورت پشتیبانی، ارسال ترجمه با برچسب واضح و ارجاع به منبع، یا واگذاری به یک شخص چندزبانه. اجازه ندهید یک نمای ترجمهشده بهطور بیصدا به شواهد قانونی جدید تبدیل شود.
منطق تصمیمگیری برای ارتقاء (Escalation)
توسعهدهندگان نباید تمام تصمیمات ارتقاء را به مدل بسپارند. در عوض، از قوانین قطعی (Deterministic Rules) برای شرایط شناخته شده استفاده کنند و اجازه دهند مدل تنها در مناطق خاکستری توصیه به واگذاری کند. ترتیب عملی اختیار پاسخدهی به این صورت است:
- انتخاب کاربر: فشردن دکمه «صحبت با یک شخص» همیشه برنده است و اولویت دارد.
- سیاست حساب/ایمنی: جریانهای کاری حساس شناخته شده طبق قوانین برنامه مسیریابی میشوند.
- سلامت سیستم: عدم دسترسی به سیستم نظارت یا تحویل پیامهای حل نشده، گفتگو را از پاسخهای خودکار دور میکند.
- توصیه مدل: مدل ممکن است پیشنهاد دهد که درخواست مبهم است یا خارج از محدوده تواناییهایش است. این توصیه به یک «رویداد» برای هماهنگکننده تبدیل میشود، نه یک انتقال کنترل نامرئی در داخل یک پرامپت.
- جایگزینی انسانی: یک ناظر یا اپراتور مجاز، گفتگو را بهطور اتمیک تصاحب میکند.
این رویکرد در مدیریت ریسک، مشابه چارچوب LoopRails است که در آن تاییدات کلی جای خود را به سیستمهای درجهبندی ریسک در پشتیبانی AI میدهند.
تمرینهای شکست برای محیط عملیاتی
برای تأیید سیستم، این راهنما «تمرینهای شکست» (Failure Drills) خاصی را در محیطهای Staging پیشنهاد میکند. توسعهدهندگان باید وضعیت، Epoch، Turn ID، Client Message ID و وضعیت رابط کاربری را برای موارد زیر ثبت کنند:
- درخواست انسان در حین تولید پاسخ: Epoch باید افزایش یابد، رابط کاربری باید فوراً وارد حالت
handoff_pendingشود و هرگونه تکمیل متأخر هوش مصنوعی نباید هیچ اثر نظارت یا ارسالی ایجاد کند. کاربر باید ببیند که درخواست برای یک شخص ثبت شده است. - تایماوت نظارت: پیشنویسهای بررسینشده هرگز نباید نمایش داده شوند. گفتگو باید به جای فراخوانی مکرر مدل، به واگذاری (Handoff) منتقل شود. لاگهای داخلی باید بین «عدم دسترسی» و «مسدود شده» تفاوت قائل شوند، اما کاربر باید عبارات خنثی دریافت کند؛ جزئیات حساس نظارت را فاش نکنید.
- تایماوت ارسال پس از رسیدن به سرور: وضعیت باید به
delivery_unknownتغییر کند. سیستم باید از همانclientMessageIdقطعی برای بازسازی وضعیت استفاده کند. هیچ پاسخ دوم مدل نباید تولید شود. اگر تحویل پیام قابل احراز نبود، جریان کاری به جای حدس زدن، واگذار میشود. - تصاحب همزمان توسط دو اپراتور: مکانیزم Compare-and-Set بکاند باید تنها به یک نفر اجاره دهد. کلاینت بازنده باید صفحه را رفرش کند تا مالک واقعی را ببیند. تنها دارنده اجاره میتواند پاسخ انسانی ارسال کند.
- خروج انسان از گفتگو: هوش مصنوعی نباید بهطور خودکار بازگردد. وضعیت باید به
consent_requiredبرگردد. پیشنویسهای ناتمام اپراتور، پیشنویسهای انسانی باقی میمانند و بهطور پیشفرض وارد زمینه مدل نمیشوند. - نمایش ترجمه: پیام اصلی باید در دسترس باقی بماند و ترجمه بهطور واضح به عنوان محتوای مشتقشده برچسب بخورد. ترکیبهای زبان یا محتوای پشتیبانی نشده باید طبق محدودیتهای مستند، بهطور آشکار با خطا مواجه شوند.
چکلیست انتشار
پیش از اتصال این جریان کاری به پیامهای مستقیم (DM) در محیط عملیاتی، موارد زیر را تأیید کنید:
- مشارکت هوش مصنوعی دارای یک کنترل صریح برای پذیرش (Opt-in) است.
- کاربر میتواند در هر یک از حالتهای هوش مصنوعی، درخواست انسان دهد.
- هر بازگشت (Callback) نامتقارن، دارای Epoch و Turn ID است.
- بازگشتهای متأخر نمیتوانند اثرات نظارت یا ارسال ایجاد کنند.
- پیشنویسهای هوش مصنوعی پیش از تبدیل به پیامهای قابل مشاهده، نظارت میشوند.
- شکست در نظارت دارای یک مسیر تعریف شده غیر-هوش مصنوعی است.
- پیامهای هوش مصنوعی و انسانی دارای متادیتای نویسندگی متمایز هستند.
- تصاحبهای انسانی در بکاند سریالسازی شدهاند، نه فقط در رابط کاربری.
- پیامهای خروجی هوش مصنوعی از Client Message IDهای قطعی استفاده میکنند.
- تحویل نامشخص پیش از هرگونه تلاش مجدد، بازسازی (Reconcile) میشود.
- رها کردن گفتگو توسط انسان به حالت رضایت (Consent) برمیگردد، نه فعالسازی خاموش هوش مصنوعی.
- تنها پیامهای مورد رضایت و تأیید شده توسط سیاستها وارد زمینه مدل میشوند.
- ترجمه به عنوان یک نمای مشتقشده متصل به منبع باقی میماند.
- لاگها شامل شناسههای وضعیت هستند بدون اینکه متن پیامهای خصوصی را بهطور غیرضروری کپی کنند.
این تغییر معماری به این معناست که قابلیت اطمینان هوش مصنوعی دیگر به روانی متن (Fluency) بستگی ندارد، بلکه به پیشبینیپذیری وضعیت (State) وابسته است. با تبدیل هوش مصنوعی به یک «دارنده اجاره موقت» به جای یک «شرکتکننده دائمی»، توسعهدهندگان میتوانند دستیارانی بسازند که بیشتر شبیه ابزارهای حرفهای باشند تا باتهای غیرقابل پیشبینی.
گام بعدی شما
- اگر از سیستمهای چت ترکیبی استفاده میکنید، وضعیت «Race Condition» را در زمان واگذاری گفتگو به اپراتور تست کنید.
- برای مدیریت پاسخهای متأخر مدل، پیادهسازی یک شماره نسخه (Epoch) را جایگزین لغو ساده درخواستهای HTTP کنید.
- سیاستهای فیلتر کردن زمینه (Context) را بازبینی کنید تا یادداشتهای داخلی اپراتورها به مدل زبانی نشت نکند.
اما داستان سختافزاری این تحول حتی شگفتانگیزتر است — به تحلیل ما دربارهی تراشههای Blackwell مراجعه کنید.




گفتگو