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

معماری تفکیک‌شده در برابر حلقه‌های یکپارچه برای مدیریت امن عامل‌های AI

·۱ مهر ۱۴۰۵۸ دقیقه مطالعه
راهنما
اتاق پیش‌نویس و کلید انتشار: تفکیک کار نماینده هوش مصنوعی
اتاق پیش‌نویس و کلید انتشار: تفکیک کار نماینده هوش مصنوعی
اشتراک‌گذاری
واقعاً چه چیز جدید است؟

معرفی الگوی تفکیک مسیرهای Plan و Act برای مدیریت دسترسی‌ها؛ به جای تکیه بر پرامپت، امنیت از طریق مسیریابی سخت‌افزاری و ایزوله‌سازی محیط اجرا تامین می‌شود.

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

به نقل از راهنمای فنی منتشر شده در dev.to در ۲۳ سپتامبر ۲۰۲۶، ادغام مراحل برنامه‌ریزی، بازیابی و تغییر وضعیت در یک رشته گفتگو (Chat Transcript)، عامل اصلی وقوع خطاهای جبران‌ناپذیر در محیط عملیاتی است. این ساختار باعث می‌شود این پرسش حیاتی نادیده گرفته شود: وقتی مدل در حال «بلند فکر کردن» است، چه کسانی به پنجره زمینه (Context Window) — شبیه به میز کاری که مدل تمام اطلاعات فعلی را روی آن پخش کرده تا ببیند چه می‌کند — دسترسی دارند؟

بسیاری از دموهای عامل‌های هوش مصنوعی، رابط‌های کاربری خوش‌رنگی دارند که ریسک‌های محیط محاسباتی (Compute) را پنهان می‌کنند. وقتی توسعه‌دهندگان از میزبانی‌های رایگان و مشترک استفاده می‌کنند، با خطر «همسایگان پرسرصدا» روبرو می‌شوند؛ یعنی احتمال اینکه کاربر دیگری محتوای پنجره زمینه آن‌ها را ببیند یا بدتر از آن، عامل دستوری را در یک میزبان ناامن اجرا کند که امکان بازگشت (Undo) ندارد. یک مسیر برنامه‌ریزی می‌تواند همسایگان پرسرصدا را تحمل کند، اما یک مسیر اجرا نمی‌تواند؛ زیرا اثرات جانبی (Side Effects) منتظر تلاش مجدد (Retry) نمی‌مانند. این نقص معماری، یک حلقه ساده‌ی عامل را به یک بدهی امنیتی تبدیل می‌کند، مگر اینکه سیستم بتواند از طریق یک git revert به حالت قبل بازگردد.

برای حل این مشکل، چارچوب پیشنهادی، انتخاب میزبان را به جای یک «خرید ساده»، به یک «مسئله مسیریابی» تبدیل می‌کند. در این مدل، هر حلقه کاری به دو مسیر متمایز تقسیم می‌شود: مسیر برنامه‌ریزی (Plan Lane) برای پیش‌نویس‌ها و مسیر اجرا (Act Lane) برای تغییرات وضعیت (Mutations). این ساختار تضمین می‌کند که عملیات‌های پرخطر هرگز روی یک سرور رایگان و مشترک فرود نیاییند. این رویکرد شباهت زیادی به مکانیسم مسیریاب وظایف دارد که برای جلوگیری از نشت داده‌های حساس در عامل‌های محلی طراحی شده است. دسترسی رایگان به مدل و سرور می‌تواند مسیر مناسبی برای پیش‌نویس‌ها، خلاصه‌های بازیابی و برنامه‌های رد شده باشد. اما زمانی که یک ابزار قرار است سیستمی را تغییر دهد که قابلیت بازگشت ندارد، استفاده از محاسبات ایزوله یا میزبان‌های شخصی (Self-hosted) و پولی الزامی است.

گام اول: طبقه‌بندی ابزارها

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

  • ابزارهای برنامه‌ریزی (Plan Tools): این‌ها شامل توابعی مانند read_tickets (خواندن تیکت‌ها)، search_docs (جستجو در مستندات)، draft_patches (پیش‌نویس اصلاحات) و explain_diffs (توضیح تفاوت‌ها) هستند. این ابزارها فقط می‌خوانند و توضیح می‌دهند، بدون اینکه به اعتبارنامه‌هایی که وضعیت سیستم را تغییر می‌دهند دست بزنند. این ابزارها معمولاً با پیشوندهایی مثل read_ ،search_ ،draft_ ،explain_ و lint_ شناسایی می‌شوند.
  • ابزارهای اجرا (Act Tools): این‌ها شامل توابعی مانند apply_ (اعمال)، deploy_ (استقرار)، pay_ (پرداخت)، email_ (ارسال ایمیل) و delete_ (حذف) هستند. این ابزارها به دلیل تغییر وضعیت جهان واقعی، نیاز به محاسبات ایزوله دارند. در این راستا، برای مدیریت پرداخت‌های امن در عامل‌ها، پلتفرم Elisym لایه‌ی پرداخت و شناسایی غیرمتمرکز را فعال کرده است تا ریسک‌های متمرکز کاهش یابد.
  • ابزارهای ممنوعه (Forbidden Tools): عملیات‌های بسیار پرخطر که حاوی زیررشته‌هایی مانند prod_admin (مدیریت محیط عملیاتی)، rotate_secret (تغییر کلیدهای امنیتی) یا wire_transfer (انتقال بانکی) هستند، در محیط‌های خاص به‌طور کامل مسدود می‌شوند.

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

گام دوم: قراردادهای میزبان

پس از برچسب‌گذاری، مسیریاب پیش از ارسال هر پرامپت، یک «قرارداد میزبان» (Host Contract) را ارزیابی می‌کند. قرارداد میزبان فایلی کوچک است که مسیریاب می‌تواند آن را ارزیابی کند تا صفت‌های تبلیغاتی صفحات قیمت‌گذاری را نادیده بگیرد؛ زیرا صفت‌ها جلوی یک عملیات نوشتن (Write) را نمی‌گیرند.

  • قرارداد مسیر برنامه‌ریزی: این پیکربندی معمولاً allow_tool_execution: false و allow_secret_injection: false را تنظیم می‌کند. در این حالت پذیرفته می‌شود که max_untrusted_neighbors (حداکثر همسایگان غیرقابل‌اعتماد) روی حالت unknown-ok باشد و خروجی فقط به صورت draft_only (فقط پیش‌نویس) باشد. در انتخاب بین مدل‌های محلی و ابری برای این مسیر، قاعده ۱.۴ برابر می‌تواند تردید توسعه‌دهندگان را در مورد تأخیر و هزینه برطرف کند.
  • قرارداد مسیر اجرا: این قرارداد نیازمند allow_tool_execution: true و allow_secret_injection: true است، اما الزام می‌کند که max_untrusted_neighbors: 0 باشد. خروجی باید به صورت mutates_with_receipt (تغییر وضعیت همراه با رسید) باشد.

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

گام سوم: ایزوله‌سازی جعبه اجرا

یک میزبان اجرا به سیاست شبکه‌ای نیاز دارد که بتوان آن را در یک پاراگراف، بدون ابهام و کلی‌گویی، توصیف کرد. طبق راهنمای dev.to، یک میزبان اجرای معتبر باید به سه پرسش مشخص پاسخ دهد: لیست سفید خروجی‌ها (Outbound Allowlist) چیست، ابزارها با چه هویتی اجرا می‌شوند و دیسکی که رسیدها را ذخیره می‌کند کجاست؟ محاسبات رایگان و مشترک تقریباً هرگز به این سه پرسش با دقتی که یک ابزار جبران‌ناپذیر می‌طلبد، پاسخ نمی‌دهند.

برای تایید این موارد، نویسنده یک اسکریپت تست دود (Smoke Test) به نام act-host-smoke.sh پیشنهاد می‌کند که سه مورد زیر را بررسی می‌کند:
۱. امنیت اعتبارنامه‌ها: اطمینان از اینکه اعتبارنامه‌های محیط عملیاتی (مثلاً در مسیر /etc/prod-creds) توسط همه قابل نوشتن (World-writable) نیستند.
۲. سیاست فایروال: تایید فعال بودن سیاست «حذف پیش‌فرض» (Default-drop) در فایروال از طریق دستور iptables -S | grep -q "policy DROP".
۳. ذخیره رسیدها: تایید وجود یک دایرکتوری اختصاصی برای رسیدهای عامل (مثلاً /var/agent-receipts).

اگر پلتفرمی اجازه دسترسی SSH برای بازرسی این تنظیمات را نمی‌دهد، برای مسیر اجرا نامناسب است و باید فقط در مسیر برنامه‌ریزی باقی بماند. نویسنده ترجیح می‌دهد راحتی را از دست بدهد تا تظاهر کند یک پلتفرم بسته، یک میزبان اجرای ایزوله است.

گام چهارم: تحویل امضاشده

خطرناک‌ترین لحظه در چرخه عمر یک عامل، لحظه انتقال (Handoff) بین مسیر برنامه‌ریزی و اجرا است، نه اولین توکن از پیش‌نویس. برای کاهش این ریسک، این چارچوب یک «رسید برنامه‌ریزی امضاشده» (Signed Plan Receipt) معرفی می‌کند. این رسید عمداً خسته‌کننده و ساده طراحی شده است، زیرا گیت‌های خسته‌کننده زمانی که رابط کاربری چت می‌خواهد جادویی به نظر برسد، دوام می‌آورند.

این رسید شامل موارد زیر است:

  • یک هش SHA-256 از متن برنامه (plan_sha256).
  • یک لیست مرتب‌شده از ابزارهای مجاز برای اجرا (allowed_act_tools).
  • هویت کسی که تصمیم گرفته است (decided_by) و یک برچسب زمانی (decided_at).
  • مسیر هدف که روی act تنظیم شده است.

این گیتِ حسابرسی‌پذیر تضمین می‌کند که یک هم‌تیمی بتواند تصمیم را بدون پیمایش در تاریخچه طولانی چت یا تکیه بر اسکرین‌شات از توکن‌های در حال استریم، بازپخش کند. اگر ابزار درخواستی در برنامه امضاشده نباشد، سیستم خطای PermissionError صادر کرده و اجرا را مسدود می‌کند.

کاربرد عملی: مثال تغییرات نسخه (Changelog)

تیکتی را در نظر بگیرید که از عامل می‌خواهد یک changelog را پیش‌نویس کرده و یک نسخه (Release) را تگ کند. خواندن تیکت و پیش‌نویس کردن متن، کارهای «برنامه‌ریزی» هستند زیرا انسان می‌تواند به سادگی پیش‌نویس را دور بریزد. اما اجرای دستور git tag -a و سپس push کردن، یک کار «اجرا» است، زیرا این یک پیشنهاد مودبانه نیست، بلکه یک تغییر واقعی است.

اجرای دستور تگ روی یک میزبان رایگان و مشترک، صرفاً به این دلیل که پیش‌نویس در همان رشته گفتگو خوب به نظر می‌رسید، یک شکست بحرانی است. منطق مسیریابی تضمین می‌کند پیش‌نویس در «اتاق پیش‌نویس» بماند، در حالی که دستور تگ به یک میزبان ایزوله و پولی مسیریابی شود. نویسنده این برچسب‌ها را به‌صورت محلی تست می‌کند؛ اگر draft_changelog در مسیر اجرا قرار بگیرد، نام ابزار را تغییر می‌دهد. اگر tag_release در مسیر برنامه‌ریزی قرار بگیرد، طبقه‌بندی‌کننده را خراب تلقی کرده و از میزبان رایگان استفاده نمی‌کند.

ماتریس تصمیم‌گیری برای انتخاب محاسبات

برای تعیین مسیر درست، توسعه‌دهندگان باید برای هر عامل یک جدول پر کنند، زیرا یک باتِ مستندات و یک باتِ استقرار، مسیرهای مشترکی ندارند. مقایسه‌ای که نتواند تفاوت این دو بات را تشخیص دهد، دوباره ابزارهای تغییردهنده را به اتاق پیش‌نویس می‌فرستد.

پرسش مسیر رایگان/مشترک (برنامه‌ریزی) مسیر ایزوله/پولی (اجرا)
آیا مرحله فقط پیش‌نویس یا توضیح است؟ بله، اینجا بماند اتلاف منابع است مگر اینکه ایزولاسیون اضافی داشته باشید
آیا خواندن پرامپت توسط همسایه پذیرفتنی است؟ برای مستندات عمومی بله برای داده‌های مشتری یا اسرار غیرقابل‌قبول است
آیا ابزار با git قابل بازگشت است؟ فقط پیش‌نویس‌ها برای apply یا deploy الزامی است
آیا به لیست سفید خروجی نیاز دارید؟ معمولاً نمی‌توان یکی را اثبات کرد پیش از اولین فراخوانی تغییردهنده الزامی است
آیا تأخیر در صف باعث شکست در جابجایی پول می‌شود؟ برای برنامه‌ریزی مشکلی نیست برای کارهای اجرا با ضرب‌الاجل پذیرفتنی نیست

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

محدودیت‌ها و حفاظ‌ها

این گردش‌کار، یک متدولوژی است، نه یک گواهینامه امنیتی. این روش نمی‌تواند توکنی را که قبلاً در یک پرامپت نشت کرده است، نجات دهد. اگر زمینه برنامه‌ریزی حاوی داده‌های حساس مشتری باشد، کاربر باید کاملاً گزینه رایگان را نادیده بگیرد و مسیر برنامه‌ریزی را نیز ایزوله تلقی کند. پیش‌نویس‌های مشترک یک ویژگی برای راحتی هستند، نه یک الحاقیه پردازش داده برای مشتریان.

علاوه بر این، این تفکیک برای موارد زیر نامناسب است:

  • محیط‌هایی که رگولاتورها انتظار یک زمان اجرای واحد و حسابرسی‌شده برای هر توکن را دارند.
  • عامل‌هایی که باید در یک تراکنش با زمان‌بندی دقیق و بدون رسید انسانی عمل کنند.
  • موقعیت‌هایی که در آن نمی‌توان یک میزبان اجرای ایزوله نام‌گذاری کرد.

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

در نهایت، هدف این است که انتخاب میزبان بر اساس این نباشد که «ظرفیت باقی‌مانده در داشبورد دوستانه به نظر می‌رسید». ظرفیت، یک «مسیر» نیست. تنها پرسشی که اهمیت دارد این است که آیا ابزار بعدی هنوز یک پیش‌نویس است یا به یک رسید نیاز دارد.

گام بعدی شما

  • ابزارهای فعلی عامل‌های خود را بر اساس قابلیت بازگشت (Undo) به دو دسته Read-only و Mutating تقسیم کنید.
  • برای ابزارهای Mutating، یک محیط ایزوله با سیاست فایروال Default-drop ایجاد کنید.
  • یک لایه تایید (Approval Gate) بین مرحله تولید پیش‌نویس و اجرای دستورات حساس پیاده‌سازی کنید.

اما داستان سخت‌افزاری این تحول حتی شگفت‌انگیزتر است — به تحلیل ما درباره تراشه‌های Blackwell مراجعه کنید.

چرا این موضوع مهم است؟

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

تأثیر برای ایران

برای توسعه‌دهندگان ایرانی که به دلیل هزینه‌های بالای سرورهای ایزوله از میزبانی‌های مشترک استفاده می‌کنند، این متدولوژی راهکاری برای کاهش ریسک بدون افزایش هزینه است.

·نگاه ما
تحریریه دات‌هوش

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

منابع

این گزارش با خط‌لولهٔ خودکار دات‌هوش از منابع معتبر جهانی تدوین و زیر نظر تحریریه منتشر شده است. روش کار ما

گفتگو

پنج‌شنبه‌های هوش‌محور

بسته‌ی هفتگی دات‌هوش

۵ خبر، ۲ ابزار، ۱ پرامپت در هر شماره. به‌زودی راه‌اندازی می‌شود — هر پنج‌شنبه صبح.

خبر کلیدی
ابزار کاربردی
پرامپت حرفه‌ای
تحلیل پژوهش
به‌زودی
زاویه‌ی ایرانی
به‌زودی
تمرین این هفته
به‌زودی

راهنماهای دات‌هوش

راهنماهای کاربردیِ دات‌هوش برای کار با هوش مصنوعی — از همین‌جا شروع کنید:

دات‌هوش

راهنمای فارسی هوش مصنوعی — با نگاه به ایران

اخبار روزانه، معرفی ابزارها و مدل‌ها، و آموزشِ کار با هوش مصنوعی؛ همیشه با این پرسش که از ایران چه چیزی کار می‌کند و چه چیزی نه.