وقتی یک عامل هوش مصنوعی ادعا میکند که وظیفهای را به پایان رسانده است، تنها پاسخ منطقی، تردید است. یک ورودی لاگ که میگوید «وظیفه در ساعت ۱۴:۳۲ تکمیل شد»، صرفاً یک رشته متن است. ممکن است عامل بهطور بیصدا کرش کرده باشد، یک فرم خالی ارسال کرده باشد، در نتایج جستجوی خالی در حلقه گیر کرده باشد، یا یک گردشکار کامل را توهم زده باشد. اگر معماری شما شامل چندین عامل است که روی ماشینها، مناطق ابری یا آدرسهای IP مختلف اجرا میشوند، مشکل به سرعت پیچیدهتر میشود. عامل B دلیلی برای اعتماد به گزارش عامل A ندارد، مگر اینکه عامل A بتواند روند کار خود را نشان دهد.
هر سیستم راستیآزمایی معتبری بر سه لایه بنا شده است. شواهد (Evidence) همان مصنوع خام است؛ مانند اسکرینشات، پاسخ API یا خروجی HTML. تاییدیه (Attestation) یک ادعای امضا شده یا رمزنگاریشده است که آن شواهد را به یک عامل خاص و یک شناسه وظیفه (Task ID) مشخص پیوند میدهد. راستیآزمایی (Verification) فرآیندی است که تایید میکند شواهد واقعاً هدف اصلی را برآورده کردهاند، نه اینکه صرفاً فایل وجود دارد. شواهد بدون تاییدیه را میتوان از یک کار به کار دیگر بازپخش (replay) کرد. تاییدیه بدون راستیآزمایی به شما میگوید که دادهها اصیل هستند، اما مشخص نمیکند که آیا به سوالی که پرسیدهاید پاسخ میدهند یا خیر.
اثبات بصری: اسکرینشات و OCR
وقتی یک عامل یک مرورگر را هدایت میکند یا با یک رابط گرافیکی تعامل دارد، سادهترین مدرک یک تصویر است. عامل پس از تکمیل عمل، یک اسکرینشات از کل صفحه میگیرد، از OCR برای استخراج متن قابل مشاهده استفاده میکند و هم تصویر و هم رشتههای استخراجشده را به عنوان شواهد ارسال میکند.
این الگو برای پستهای شبکههای اجتماعی، ارسال فرمها یا فرآیندهای پرداخت مناسب است. یک عامل را تصور کنید که وظیفه انتشار بهروزرسانی هفتگی در صفحه LinkedIn یک شرکت را بر عهده دارد. اسکرینشات، پست زنده را با برچسب زمانی رندر شده توسط سرور و شناسه پست که در URL تعبیه شده، نشان میدهد. OCR میتواند تایید کند که عنوان دقیق و متن بدنه در کنار آن نشانگرهای مخصوص پلتفرم در صفحه ظاهر شدهاند.
ریسک کار مشخص است: اسکرینشاتها را میتوان جعل کرد. یک عامل هکشده میتواند یک صفحه وب جعلی را بهصورت محلی رندر کند، از آن اسکرینشات بگیرد و اعلام موفقیت کند. برای بالا بردن سطح امنیت، از نشانگرهای متنی پویا که پیشبینی آنها دشوار است، استفاده کنید. یک شناسه تایید که توسط پلتفرم صادر میشود، یک برچسب زمانی از سرور، یا یک nonce منحصربهفرد که برنامه راستیآزمایی به دستورالعملهای کار اضافه میکند، همگی میتوانند به عنوان لنگر عمل کنند. اگر خروجی OCR حاوی شناسه تایید مورد انتظار که به آن وظیفه خاص متصل است نباشد، اثبات شکست میخورد.
با این حال، اسکرینشاتها سنگین هستند. آنها پهنای باند و فضای ذخیرهسازی مصرف میکنند و وقتی پلتفرمها چیدمان خود را بازطراحی میکنند، از کار میافتند. زمانی از آنها استفاده کنید که رابط کاربری (UI) تنها سطح در دسترس باشد، اما با آنها به عنوان یک خط پایه برخورد کنید، نه یک دژ نفوذناپذیر.
رسیدهای امضا شده API
وقتی عامل از طریق یک API بکاند کار میکند، از تصویر صرفنظر کنید. رسید امضا شده بخواهید.
پس از یک پست خودکار یا استخراج داده (scrape)، پلتفرم معمولاً یک محموله (payload) ساختاریافته برمیگرداند. آن JSON شامل یک ID، یک برچسب زمانی، فیلدهای وضعیت و گاهی اوقات هدرهای محدودیت نرخ (rate-limit) است. عامل کل این محموله را با یک کلید خصوصی امضا میکند، شناسه وظیفه را در داخل بلوب (blob) امضا شده قرار میدهد و بسته را ارسال میکند. راستیآزمای، امضا را با کلید عمومی عامل بررسی میکند و رسید را بازرسی میکند تا تایید کند که عمل با موفقیت انجام شده است.
نقطه ضعف در اینجا نگهداری کلید (key custody) است. اگر عامل کلید خصوصی خود را روی همان ماشینی که در آن اجرا میشود نگه دارد، یک تزریق دستور (prompt injection)، بدافزار یا فرار از کانتینر (container escape) میتواند آن را استخراج کرده و برای وظایفی که هرگز اتفاق نیفتادهاند، رسید جعلی بسازد. کلیدهای با طول عمر بالا را در محیط عامل قرار ندهید. در عوض، از یک سیستم مدیریت کلید (KMS) استفاده کنید که اعتبارنامههای کوتاهمدت و محدود به وظیفه (task-scoped) صادر میکند. برای هر وظیفه کلیدها را تغییر دهید (rotate). اگر عامل مجبور باشد برای یک بازه پنج دقیقهای، درخواست کلید امضا از یک محیط امن (secure enclave) یا KMS کند، شعاع تخریب یک نفوذ کوچک باقی میماند.
این الگو برای اتوماسیونهای بدون رابط گرافیکی (headless) با حجم بالا بهترین عملکرد را دارد: همگامسازی گزارشهای هزینه تبلیغات، انتشار از طریق APIهای شبکههای اجتماعی، یا استخراج از نقاط انتهایی (endpoints) که JSON ساختاریافته برمیگردانند. این روش از اسکرینشات سبکتر و تایید برنامهنویسیشده آن بسیار آسانتر است.
زنجیرههای اثبات برای کارهای مداوم
برخی وظایف در قالب یک
