پرش به محتوای اصلی

قراردادهای سندباکس: آنچه یک عامل باید پیش از دست‌زدن به یک اندپوینت تولیدی اثبات کند

مهار عامل یک قرارداد مجوزها و راستی‌آزمایی است، نه یک پرامپت گاردریل. هر مرز ابزار به یک پیش‌شرط نیاز دارد که عامل نتواند در زمان اجرا بر سر آن چانه بزند.

نمای نزدیک از یک رک سرور که کابل‌های شبکه، چراغ‌های نشانگر و پچ‌پنل‌ها را در یک مرکز داده نشان می‌دهد.

الگوی شکست: توانایی اعطا شده، قصد راستی‌آزمایی‌نشده

این الگوی تکرارشونده است. یک عامل مجاز است یک سیستم را مرور کند، سپس روی آن عمل می‌کند. یا مجاز است یک رکورد را بخواند، سپس یکی می‌نویسد. بیشتر حوادث در همان شکاف بین فعلی که به عامل اعطا شده و فعلی که واقعاً اجرا کرده زندگی می‌کنند. اعطا معمولاً ضمنی است: یک اعتبارنامه با دامنه خواندن-نوشتن، یک ابزار با امضای عمومی http_request، یک حساب سرویس که می‌تواند به هر چیزی روی یک بخش شبکه دسترسی پیدا کند. قصد معمولاً راستی‌آزمایی‌نشده است: هیچ مصنوعی وجود ندارد که بگوید «این فراخوانی مشخص، علیه این اندپوینت مشخص، با این بار مشخص، پیش از خروج از فرایند بررسی شده است.»

لاگ‌گیری پس‌ازواقع نمی‌تواند این شکاف را ببندد. لاگ‌ها به شما می‌گویند چه اتفاقی افتاد؛ آن‌ها فراخوانی را رد نمی‌کنند. اگر تنها کنترل بین یک عامل و یک اندپوینت تولیدی یک جمله در یک پرامپت سیستمی باشد، آن کنترل توصیه‌ای است. یک مدل تحت جابه‌جایی توزیع، یک تزریق پرامپت حمل‌شده در یک سند بازیابی‌شده، یا یک برنامه‌ریز که دچار رانش شده، توصیه را به‌عنوان یک پیشنهاد تلقی می‌کند. رد باید در جایی اتفاق بیفتد که عامل نتواند با آن بحث کند.

یک قرارداد سندباکس چهار بند دارد

قرارداد سندباکس یک پیش‌شرط قابل‌بررسی ماشینی است که به یک مرز ابزار متصل می‌شود. یک سند سیاستی نیست و یک پرامپت نیست. چهار بند دارد، و هر چهار بند بیرون از مدل اعمال می‌شوند.

دامنه

دامنه مجموعه دقیق اندپوینت‌ها و فعل‌هایی است که عامل می‌تواند استفاده کند، که به‌صورت یک allowlist بیان می‌شود. یک denylist شکست می‌خورد چون باید هر عمل خطرناکی را برشمارد، و فضای اعمال خطرناک باز است. یک allowlist به‌صورت بسته شکست می‌خورد: هر چیزی که نام‌برده نشده باشد رد می‌شود. به‌طور مشخص، دامنه مجموعه‌ای از چندتایی‌هایی مانند (method, host, path-pattern, credential-id) است که پیش از ساخت درخواست تطبیق داده می‌شوند. ابزاری که یک URL آزاد ارائه می‌دهد، دامنه‌دار نیست؛ یک پروکسی با چند گام اضافه است.

Close-up of a colorful business chart on a table with documents showing trends

نرخ و شعاع انفجار

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

برگشت‌پذیری

هر عملی که یک ابزار می‌تواند انجام دهد باید به‌عنوان خودتوان، جبران‌پذیر، یا ممنوع طبقه‌بندی شود. اعمال خودتوان (یک خواندن، یک جست‌وجو) می‌توانند آزادانه دوباره تلاش شوند. اعمال جبران‌پذیر (یک ایجاد که می‌تواند حذف شود، یک پیام که می‌تواند پس گرفته شود) به یک مسیر جبران تعریف‌شده نیاز دارند که آزمایش شده باشد، نه فرض شده. اعمال ممنوع (پرداخت‌های برگشت‌ناپذیر، چرخش اعتبارنامه، حذف انبوه) هرگز به یک عامل واگذار نمی‌شوند، فارغ از اینکه برنامه‌ریز چقدر مطمئن باشد. این بند همان چیزی است که «عامل اشتباه کرد» را از یک حادثه به یک بازگردانی تبدیل می‌کند.

گواهی

گواهی شواهدی است که عامل باید پیش از باز شدن گام بعدی بازگرداند. این بندی است که بیشتر تیم‌ها از آن می‌گذرند، و همان بندی است که قرارداد را به یک قرارداد تبدیل می‌کند نه یک فیلتر. پیش از ثبت یک نوشتن، عامل یک رکورد ساختاریافته بازمی‌گرداند: شناسه قرارداد، اندپوینت حل‌شده، یک هش از بار، دیف اجرای آزمایشی، و هویت اعتبارنامه استفاده‌شده. گیت‌وی آن رکورد را در برابر قرارداد راستی‌آزمایی می‌کند و تنها پس از آن اعتبارنامه را برای فراخوانی واقعی صادر می‌کند. بدون گواهی، گیت‌وی می‌تواند دامنه را اعمال کند اما نمی‌تواند یک عمل برنIndustrial plant with large tanks and chimneys against a lush mountain backdropه

Server rack closeup

در گیت‌وی ابزار اعمال کنید، نه در پرامپت سیستمی. پرامپت‌ها توصیه‌ای هستند؛ گیت‌وی‌ها نیستند. گیت‌وی همان فرایندی است که اعتبارنامه‌ها را نگه می‌دارد، اندپوینت را حل می‌کند، و تصمیم می‌گیرد که آیا فراخوانی ادامه یابد. اگر عامل بتواند بدون عبور از گیت‌وی به اندپوینت برسد، قرارداد تزئینی است.

خروجی و صدور اعتبارنامه را به‌عنوان دو تصمیم جداگانه در نظر بگیرید. کنترل خروجی به این پاسخ می‌دهد که «آیا این فرایند می‌تواند یک اتصال به این میزبان باز کند؟» صدور اعتبارنامه به این پاسخ می‌دهد که «آیا این درخواست مشخص یک توکن می‌گیرد که میزبان آن را بپذیرد؟» جدا نگه‌داشتن آن‌ها یعنی یک برنامه‌ریز به‌خطرافتاده نمی‌تواند دامنه خودش را گسترش دهد: ممکن است بتواند به یک میزبان برسد، اما نمی‌تواند اعتبارنامه‌ای برای عملی خارج از قراردادش به دست آورد. این تفاوت بین یک سیاست شبکه و یک سیستم توانایی است، و همان بخشی است که بیشتر چارچوب‌های عامل در حال حاضر اشتباه می‌گیرند.

یک رکورد امضاشده از هر قرارداد پذیرفته‌شده نگه دارید. وقتی حادثه‌ای رخ می‌دهد، بازبینی باید یک کوئری باشد، نه یک پروژه باستان‌شناسی. یک لاگ امضاشده و فقط-افزودنی از شناسه قرارداد، هویت عامل، هش گواهی، و تصمیم (اجازه/رد) به شما امکان می‌دهد اجرا را به‌صورت قطعی بازسازی کنید. همچنین به شما امکان می‌دهد به پرسشی که تنظیم‌گران و پاسخ‌دهندگان به حادثه واقعاً می‌پرسند پاسخ دهید: نه «مدل چه گفت؟» بلکه «عامل مجاز به انجام چه کاری بود، و پیش از انجام آن چه چیزی را اثبات کرد؟»

کاری که تیم‌ها باید این فصل انجام دهند

هر ابزاری که یک عامل می‌تواند فراخوانی کند را برشمارید و هرکدام را به‌عنوان خواندن، نوشتن، خرج یا انتشار علامت‌گذاری کنید. این یک تمرین یک‌نشستی است که معمولاً توانایی بیشتری از آنچه کسی انتظار داشت را آشکار می‌کند. این طبقه‌بندی قرارداد را هدایت می‌کند: ابزارهای خواندن دامنه و نرخ می‌گیرند؛ ابزارهای نوشتن، خرج و انتشار به‌علاوه برگشت‌پذیری و گواهی می‌گیرند.

برای ابزارهای نوشتن و خرج، پیش از ثبت یک حالت اجرای آزمایشی و یک دیف قابل‌مشاهده برای انسان الزامی کنید. اجرای آزمایشی باید همان مسیر کد فراخوانی واقعی را طی کند، با گام ثبت به‌صورت استاب‌شده. دیف همان مصنوعی است که یک انسان یا یک بررسی‌کننده خودکار بازبینی می‌کند. اگر یک ابزار نمی‌تواند یک دیف تولید کند، آماده واگذاری نیست.

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

حادثه Medicare یادآوری است که مهار یک ویژگی مدل نیست. یک ویژگی مرز است: مجموعه‌ای از پیش‌شرط‌های صریح، که توسط زیرساختی اعمال می‌شوند که عامل نمی‌تواند در زمان اجرا با آن چانه بزند. تیم‌هایی که مرز را به‌عنوان واحد طراحی در نظر می‌گیرند، خواهند دید که بیشتر حوادث عامل دیگر حادثه نیستند و به فراخوانی‌های ردشده تبدیل می‌شوند.

اشتراک‌گذاریXLinkedInپیوند یکتا5 دقیقه مطالعه

خواندن مرتبط

پرسش‌هایی که این پاسخ می‌دهد

Why can't a system prompt enforce agent containment?

Prompts are advisory. A model under distribution shift, a prompt injection in retrieved content, or a drifted planner can ignore them. Refusal must happen at infrastructure the agent cannot negotiate with, such as a tool gateway that holds credentials and resolves endpoints.

What are the four clauses of a sandbox contract?

Scope (an allowlist of endpoints and verbs), rate and blast radius (calls per window and the hard stop on first anomaly), reversibility (idempotent, compensatable, or forbidden), and attestation (the evidence the agent returns before the next step is unlocked).

Why separate egress control from credential issuance?

Egress answers whether a process can reach a host; credential issuance answers whether a specific request gets a token the host will accept. Separating them means a compromised planner can reach a host but cannot obtain a credential for an action outside its contract.

What is a containment drill?

A rehearsal in which a credential is revoked mid-run and the agent is expected to fail closed: a clean stop with a typed error, not a retry loop or a fallback credential. It tests the gateway rather than the model.