آپدیت Kitesurf؛ مرورگر ایجنتها روی Cloudflare Workers
خلاصهٔ کاملتر
کلادفلر آگوست امسال Kitesurf رو معرفی کرد، یه مرورگر که کامل روی Cloudflare Workers اجرا میشه و به جای اینکه همهٔ امکانات سنگین مرورگرهای آدمها رو با خودش بکشه، فقط دور نیازهای ایجنتها ساخته شده. تو این پست تیم کلادفلر میگه از اون موقع تا حالا با کارهای واقعیتر و بازخورد مشتریها بهترش کردن و حالا چند تا تغییر مهم رو اعلام میکنن.
مهمترین خبر پشتیبانی از WebMCP ـه (یعنی استانداردی که به توسعهدهنده اجازه میده امکانات سایتش رو مستقیم در اختیار ایجنت بذاره). به جای اینکه ایجنت روی پیکسلها کلیک کنه و دعا کنه المان درست لود شده باشه، میتونه تابعی مثل searchFlights() رو صدا بزنه. کلادفلر چند هفته پیش هم کاری کرده بود که صاحب سایت بدون تغییر کد، با یه سوییچ WebMCP رو روشن کنه.
از نظر استانداردها هم Kitesurf رشد کرده: CSS Layout و CSSOM و CSS Typed OM و custom elements اضافه شدن، همینطور import map و JSON module و ماژولخوانی از روی URL که برای سایتهایی که جاوااسکریپت رو تیکهتیکه لود میکنن مهمه. عددی که تیم روش تأکید داره اینه که الان بیشتر از ۷۳۰ هزار زیرتست از Web Platform Tests رو پاس میکنه، یعنی حدود ۵۰۰ هزار تا بیشتر از زمان معرفی.
روی سرعت هم کار کردن، ولی با یه تعریف متفاوت: برای ایجنت مهم نیست صفحه چقدر سریع لود میشه، مهم تأخیر کل حلقهٔ ایجنته. پس خوندنهای پرتکرار مثل getAttribute و id و parentNode حالا داخل خود DOMِ Wasm جواب داده میشن و دیگه هر بار بین موتور جاوااسکریپت Boa و Wasm رفتوبرگشت نمیشه. فونتها هم فقط وقتی لازم بشن گرفته میشن. نتیجه اینه که با وجود اضافه شدن استانداردهای بیشتر، مصرف CPU و زمان اجرا تقریباً همون سطح روز اول مونده.
کنارش پوشش API مربوط به Browser Run هم کامل شده، یعنی Kitesurf رو با CDP و Playwright و Puppeteer و MCP میشه راه انداخت. Quick Actions هم که میانبر کارهای رایج مثل اسکرینشات گرفتن و بیرون کشیدن HTML و ساختن PDF ـه، حالا علاوه بر REST API از داخل خود Worker با بایندینگ env.BROWSER.quickAction() صدا زده میشه:
export default {
async fetch(request, env): Promise<Response> {
return await env.BROWSER.quickAction("screenshot", {
url: "https://example.com",
browser: "kitesurf"
});
},
} satisfies ExportedHandler<Env>;جذابترین بخش برای خیلیها هم نسخهٔ ترمینالیه. چون Kitesurf بخش اجرای صفحه (PageScript) رو از بخش تصویرسازی (PageRenderer) جدا کرده، تیم تونسته رندر رو جای دیگه ببره و خروجی رو با پروتکل گرافیکی Kitty تو ترمینالهایی مثل Ghostty و WezTerm نشون بده، حتی یه حالت متنی ANSI هم براش گذاشتن. با brew install cloudflare/cloudflare/kitesurf نصب میشه و فایدهٔ اصلیش اینه که میبینی ایجنت صفحه رو چطوری «میبینه». کلادفلر میگه هنوز قصد داره Kitesurf رو متنباز کنه و فعلاً تو بتا رایگانه، با محدودیت به ازای هر اکانت.
نکات کلیدی:
- Kitesurf حالا از WebMCP پشتیبانی میکنه و ایجنت میتونه تابعهای سایت رو مستقیم صدا بزنه
- بیشتر از ۷۳۰ هزار زیرتست Web Platform Tests رو پاس میکنه، حدود ۵۰۰ هزار بیشتر از زمان معرفی
- خوندنهایی مثل getAttribute و parentNode داخل DOMِ Wasm جواب داده میشن تا رفتوبرگشت با موتور Boa کم بشه
- پوشش کامل Browser Run با CDP و Playwright و Puppeteer و MCP
- نسخهٔ ترمینالی با پروتکل گرافیکی Kitty و یه حالت متنی ANSI، نصب با brew
- فعلاً تو بتا رایگانه و کلادفلر میگه متنباز کردنش هنوز روی میزه




