Cloudflare OS؛ معماریای که به ایجنت اعتماد نمیکنه
خلاصهٔ کاملتر
نویسنده میگه عجیبترین چیزی که تو سورس Cloudflare OS پیدا کرده یه جمله تو قرارداد Gatekeeperه: پیشنهاد شده اکشنهایی که هنوز تأیید نشدن «شبیهسازی» بشن، یعنی ایجنت وضعیت منبع رو جوری ببینه که انگار همهچی اعمال شده. ایجنت درخواست merge میده، هیچ آدمی تأییدش نکرده، ولی Gatekeeper بهش میگه انجام شد و ایجنت با خیال راحت قدمهای بعدی رو روی همون واقعیت جعلی میچینه. به گفتهٔ نویسنده این یه هک نیست، فلسفهٔ کل سیستمه: فرض بر اینه که تصمیمهای ایجنت قابلاعتماد نیستن.
پایهٔ همهچی سندباکسه. وقتی تو Cloudflare OS یه فایل ارائه میسازی، از یه اپ مشترک استفاده نمیکنی؛ سیستم یه نمونهٔ خصوصی از کد (به اسم gadget) بالا میآره که تو Dynamic Worker خودش، با دیتابیس SQLite جدا و شبکهٔ خروجی بسته اجرا میشه. اینجوری مرز امنیت از دل کد درمیآد و میره تو پلتفرم: یه باگ فقط به صاحب همون نمونه ضرر میزنه، چون کاربر دیگهای تو اون سندباکس نیست که دادهش لو بره. این همون ایدهٔ Sandstormه که ده سال روی طاقچه مونده بود تا isolateهای V8 اجراش رو ارزون کنن.
تکهٔ دوم، کلیده. ایجنت هیچوقت توکن GitHub رو نمیگیره؛ Gatekeeper نگهش میداره و چیزی که دست ایجنت میرسه یه binding مثل env.PROJECTه — یعنی اجازهٔ انجام مجموعهای محدود از عملیات، نه خود کلید. ایجنت میتونه listIssues() رو صدا بزنه ولی نه توکن رو ببینه، نه دسترسی خودشو پهنتر کنه. این همون مدل object-capabilityه: کلید اقتدارِ حامله و هر کی داشته باشه ازش استفاده میکنه، ولی capability یه افساره که همیشه میشه پسش گرفت.
لایهٔ بعدی به خروجی ایجنت بیاعتماده، نه فقط به کارش. سیستم هر چیزی که یه gadget خونده رو ثبت میکنه و موقع اشتراکگذاری، از هر Gatekeeper جدا میپرسه که آیا گیرنده اجازهٔ خوندن همون دادهها رو داره یا نه؛ اگه نداشته باشه، اشتراک رد میشه. هستهٔ سیستم هم عمداً هویت رو نمیفهمه و فقط یه توکن مبهم دست Gatekeeper میده تا کسی وسوسه نشه هویت رو ازش دربیاره. برای دادههای خیلی حساس هم پرچم prohibitAllSharing هست که gadget رو میبره تو حالت lockdown و از اون به بعد هیچ اکشنی ازش برنمیآد.
نویسنده معتقده این معماری صادقانهست، چون خطای مدل رو یه محدودیت دائمی طراحی میبینه نه یه شکایت؛ ولی همزمان یه قفسه. ایجنتی که هیچوقت کلید نداره، کاری رو که واقعاً کلید میخواد هم نمیتونه انجام بده، و نوشتنِ همیشهموقتی یعنی آدم ساختاری تو حلقه میمونه — دقیقاً همون گلوگاهی که قرار بود ایجنتها حذفش کنن. یه نکتهٔ دیگه هم هست: تو این سیستم همه بیاعتمادن جز خود Cloudflare، چون کل این ساختمون روی Workers و Durable Objects و Facet خودش بنا شده.
نکات کلیدی:
- Gatekeeper اکشنهای تأییدنشده رو شبیهسازی میکنه تا ایجنت بدون توقف جلو بره
- هر سند تو نمونهٔ سندباکسشدهٔ خودش با SQLite جدا اجرا میشه
- ایجنت بهجای توکن، یه capability محدود و قابلابطال میگیره
- خوندن آزاده و فقط ثبت میشه، ولی نوشتن تا تأیید آدم موقتیه
- پرچم prohibitAllSharing گجت رو به حالت lockdown میبره
- کل معماری روی زیرساخت اختصاصی خود Cloudflare تکیه داره




