Vercel نسخه ۷ از AI SDK خود را با قابلیت scoped tool context (زمینه ابزار محدودشده) عرضه کرد که هر ابزار در یک ایجنت هوش مصنوعی را مجبور می‌کند فقط اطلاعات حساسی (secrets) را دریافت کند که صراحتاً اعلام کرده است. با محدود کردن این میزان از دسترسی، توسعه‌دهندگان می‌توانند از مشاهده تصادفی تمام اعتبارنامه‌های ذخیره‌شده در محیط خود توسط ابزارهای شخص ثالث جلوگیری کنند.

چرا این تغییر اهمیت دارد

ایجنت‌های هوش مصنوعی اغلب چندین سرویس خارجی را به هم متصل می‌کنند — مانند جستجوی سفارش‌ها، ایجاد تیکت، یا پردازش پرداخت — که هر کدام به کلیدهای API یا URLهای مخصوص به خود نیاز دارند. میان‌بر رایج این است که کل شیء process.env به هر ابزار داده شود:

execute(input, { context: process.env })

این الگو باعث ایجاد یک گسترش ضمنی امتیازات (implicit privilege expansion) می‌شود: افزودن یک ابزار جدید، بلافاصله به آن اجازه دسترسی به تمام اطلاعات حساس موجود، از جمله رمزهای عبور پایگاه داده یا توکن‌های پرداخت را می‌دهد، بدون اینکه هیچ نشانه‌ای در بازبینی کد (code review) ایجاد شود. خطر اینجاست که یک ابزار آسیب‌دیده یا دارای باگ، ناگهان اعتبارنامه‌هایی را لو بدهد که هرگز قرار نبود در اختیار آن باشد.

نحوه عملکرد scoped tool context

در نسخه ۷ از SDK، یک ابزار یک context schema (طرح‌واره زمینه) را اعلام می‌کند — تعریفی مبتنی بر Zod از فیلدهای دقیقی که به آن‌ها نیاز دارد. وقتی ایجنت یک ابزار را فراخوانی می‌کند، فراخواننده یک شیء toolsContext را ارائه می‌دهد که فقط شامل همان فیلدهای اعلام‌شده است. SDK ساختار را قبل از اجرا اعتبارسنجی می‌کند و هرگونه کلید اضافی یا مفقود شده باعث بروز خطا می‌شود.

یک دمو ساده، دو ابزار با نیازمندی‌های مجزا را نشان می‌دهد:

  • lookupOrder – به baseUrl برای فراخوانی یک سرویس داخلی سفارش نیاز دارد.
  • createTicket – به supportToken برای باز کردن یک تیکت پشتیبانی نیاز دارد.

هر ابزار یک contextSchema را صادر می‌کند که تنها کلید مورد نیاز خود را لیست می‌کند. وقتی ایجنت اجرا می‌شود، این مقدار را پاس می‌دهد:

{
  lookupOrder: { baseUrl: "https://orders.internal" },
  createTicket: { supportToken: "s3cr3t-token" }
}

فقط lookupOrder به baseUrl دسترسی دارد؛ createTicket هرگز با آن برخورد نمی‌کند و بالعکس. SDK این مرز را در زمان اجرا اعمال می‌کند و یک وابستگی پنهان را به یک لیست قابلیت‌های صریح تبدیل می‌کند که بازبین‌ها می‌توانند آن را حسابرسی کنند.

مزایای امنیتی

  • محدود کردن قرارگیری داده‌ها در معرض خطر – اطلاعات حساس در همان جایی که نیاز است باقی می‌مانند.
  • اعتبارسنجی زمینه (context) – عدم تطابق یا مفقود بودن فیلدها باعث توقف اجرا می‌شود.
  • صریح کردن قابلیت‌ها – بازبین‌ها می‌توانند دقیقاً ببینند هر ابزار به چه چیزی دسترسی دارد.
  • کاهش شعاع آسیب (blast radius) – اگر یک ابزار هک شود، مهاجم فقط به اطلاعات حساسی دسترسی پیدا می‌کند که آن ابزار مجاز به داشتن آن‌ها بوده است.

این قابلیت جایگزین روش‌های سنتی ایزوله‌سازی (sandboxing) نمی‌شود. توسعه‌دهندگان همچنان باید از حذف اطلاعات حساس از لاگ‌ها (log redaction)، کنترل‌های خروجی شبکه و چرخش منظم توکن‌ها استفاده کنند. Scoped context یک مرز است؛ اما اتاق را کاملاً پلمب نمی‌کند.

آنچه توسعه‌دهندگان باید تغییر دهند

  1. تعریف یک schema برای هر ابزار – از کتابخانه Zod که همراه با SDK ارائه می‌شود استفاده کنید.
  2. ارسال یک toolsContext محدود – از استفاده از process.env به عنوان یک مخزن همه‌کاره خودداری کنید.
  3. بازبینی ایجنت‌های موجود – هرگونه اطلاعات حساسی که می‌توان از فراخوانی ابزارها حذف کرد را شناسایی کنید.
  4. افزودن تست‌های خودکار – اطمینان حاصل کنید که در صورت تزریق داده‌های اضافی، اعتبارسنجی زمینه با شکست مواجه می‌شود.

یک شروع سریع به این صورت است:

mkdir scoped-tools && cd scoped-tools
npm init -y
npm install ai zod
npm install -D typescript tsx @types/node

فایل demo.ts را ایجاد کنید، contextSchema هر ابزار را اعلام کنید و آن را با دستور tsx demo.ts اجرا کنید. اگر سعی کنید به ابزاری اطلاعات حساسی بدهید که درخواست نکرده است، SDK خطا خواهد داد.

دیدگاه مخالف

برخی تیم‌ها ممکن است استدلال کنند که تعریف طرح‌واره‌های (schema) اضافی باعث اضافه شدن کدهای تکراری (boilerplate) و کند شدن نمونه‌سازی اولیه (prototyping) می‌شود. اگرچه این موضوع درست است، اما هزینه آن ناچیز است — فقط چند خط کد برای هر ابزار — و بازده امنیتی آن با افزایش تعداد سرویس‌های یکپارچه‌شده، بیشتر می‌شود. در محیط‌هایی که با داده‌های پرداخت یا اطلاعات شخصی سروکار دارند، این سبک از معامله را نمی‌توان نادیده گرفت.

آنچه باید در آینده دنبال کرد

  • شاخص‌های پذیرش – کاربران اولیه گزارش می‌دهند که موارد نشت اطلاعات حساس کمتری رخ داده است.
  • ابزارهای جامعه کاربری – پلاگین‌هایی که طرح‌واره‌های زمینه را به صورت خودکار از فایل‌های پیکربندی تولید می‌کنند.
  • انتشار نسخه‌های آینده SDK – نشانه‌هایی مبنی بر اینکه Vercel ممکن است زمینه‌های محدودشده را برای شامل شدن مجوزهای شبکه و محدودیت‌های نرخ درخواست (rate-limit) گسترش دهد.

اگر در حال حاضر در حال ساخت ایجنت‌های هوش مصنوعی با SDK شرکت Vercel هستید، اولین قدم بازبینی نحوه استفاده فعلی از process.env است. مقداری را که می‌توان از تمام فراخوانی‌های ابزار حذف کرد شناسایی کنید و الگوی همه‌کاره را با یک toolsContext محدود جایگزین کنید. نتیجه، یک وضعیت امنیتی منسجم‌تر بدون از دست دادن انعطاف‌پذیری‌ای است که ایجنت‌های هوش مصنوعی را قدرتمند می‌کند.