تیپ #۱۳

جلوگیری از اقدام‌های برگشت‌ناپذیر با الگوی پیشنهاد و تأیید

مؤثرترین محافظ در برابر اقدام‌های برگشت‌ناپذیر، پرامپت بهتر نیست؛ حذف کردن دسترسی است. ابزارهای حساس مثل حذف، پرداخت، ارسال پیام و دیپلوی را از جعبه‌ابزار پیش‌فرض ایجنت بیرون بگذارید و فقط از مسیر «پیشنهاد بده، بعد تأیید بگیر» در اختیارش قرار دهید. ایجنت یک طرح ساخت‌یافته می‌سازد، یک لایه قطعی آن را اعتبارسنجی می‌کند و تا وقتی انسان یا موتور سیاست تأیید نکند هیچ چیز اجرا نمی‌شود 🚦. کنارش dry-run و کلید idempotency هم بگذارید تا تلاش دوباره به حذف یا پرداخت تکراری منتهی نشود.

توضیح کامل‌تر

اقدام برگشت‌ناپذیر یعنی کاری که بعد از انجامش راهی برای برگشت نیست: حذف رکورد، ارسال ایمیل به مشتری، انتقال وجه یا دیپلوی روی محیط production. مسئله اصلی این است که مدل زبانی ماهیت احتمالی دارد و تصمیمش را با یک فراخوانی ابزار به اثر واقعی تبدیل می‌کند، پس یک توکن اشتباه می‌تواند خسارت دائمی بسازد. راه‌حل استاندارد، جدا کردن مرحله تصمیم از مرحله اجراست: ایجنت فقط پیشنهاد می‌دهد و یک لایه قطعی بیرون از مدل، آن پیشنهاد را اعتبارسنجی و اجرا می‌کند. این لایه می‌تواند سقف مبلغ، لیست سفید دامنه، تأیید انسانی یا تأیید دو مرحله‌ای باشد. یک مثال واقعی: ایجنت وظیفه دارد کاربران قدیمی را پاک کند و بدون محافظ، یک دستور DELETE بدون شرط WHERE می‌فرستد؛ با الگوی پیشنهاد و تأیید، همان دستور اول به‌صورت dry-run نمایش داده می‌شود و تا تأیید انسان اجرا نمی‌شود. علاوه بر این، کلید idempotency جلوی اجرای دوباره در اثر retry شبکه را می‌گیرد و ثبت لاگ کامل هم برای بررسی بعدی ضروری است. دسترسی‌ها را هم طوری محدود کنید که ابزار خطرناک اصلاً در جعبه‌ابزار پیش‌فرض ایجنت نباشد، نه اینکه فقط در پرامپت از آن نهی شده باشد.

نکته پیشرفته
← بازگشت به همهٔ نکته‌های روز