Playwriter: کنترل کروم واقعیت به دست ایجنتها
خلاصهٔ کاملتر
خیلی از ابزارهای MCP مرورگر یا یه کروم تازه بالا میارن یا فقط یه مشت ابزار ثابت در اختیار ایجنت میذارن. مرورگر تازه یعنی نه لاگینی هست، نه اکستنشنی، و شناسایی بهعنوان بات هم خیلی راحتتره؛ ابزار ثابت هم یعنی ایجنت نمیتونه پرفورمنس رو پروفایل کنه، breakpoint بذاره یا ریکوئستهای شبکه رو ببینه. Playwriter اومده این دو مشکل رو حل کنه.
کار به این شکله که یه اکستنشن کروم رو تب موردنظر نصب میکنی؛ با کلیک رو آیکونش، اکستنشن از طریق chrome.debugger به تب وصل میشه و یه وبسوکت به یه relay محلی رو پورت 19988 باز میکنه. CLI یا MCP سمت ایجنت هم به همون relay وصل میشه و دستورهای پروتکل CDP از این مسیر رد و بدل میشن؛ نه نیازی به ریاستارت کروم هست، نه فلگ خاصی. این relay میتونه چند تا سشن رو همزمان مدیریت کنه، یعنی چندتا ایجنت یا CLI میتونن با یه مرورگر کار کنن.
برای اینکه ایجنت بفهمه تو صفحه چی هست، Playwriter بهجای اسکرینشات از accessibility snapshot استفاده میکنه: یه متن ۵ تا ۲۰ کیلوبایتی بهجای عکس ۱۰۰ کیلوبایتی، که هر خطش یه locator داره و مستقیم قابل استفاده تو page.locator()ه. برای موقعیتهایی که چیدمان بصری مهمه هم یه حالت دیگه به اسم screenshotWithAccessibilityLabels هست که رو هر المان قابل کلیک یه لیبل رنگی (شبیه Vimium) میذاره.
چون ایجنت داره تو مرورگر خود کاربر کار میکنه، کاربر هم میتونه هرلحظه وارد بشه: کپچا رو خودش حل کنه، یا وقتی ایجنت گیر کرد، اکستنشن رو رو اون تب خاموش کنه، دستی مشکل رو درست کنه و دوباره روشنش کنه. از نظر امنیتی هم relay فقط رو localhost گوش میده، فقط اورجین اکستنشن خود Playwriter رو قبول میکنه، و فقط تبهایی که خودت رو آیکون کلیک کردی کنترل میشن؛ کروم هم رو تبهای تحت کنترل یه بنر اتوماسیون نشون میده.
نکات کلیدی:
- اکستنشن کروم + CLI که کروم واقعی کاربر (با لاگین و اکستنشنهای موجود) رو در اختیار ایجنتها میذاره
- یه تابع execute کل API پلیرایت رو پوشش میده، بهجای دهها ابزار جدا
- اتصال از طریق relay محلی رو پورت 19988، بدون سرور یا اکانت بیرونی
- بهجای اسکرینشات از accessibility snapshot استفاده میکنه (۵ تا ۲۰ کیلوبایت)
- پشتیبانی از دیباگر، اینترسپت شبکه، ضبط صفحه و دسترسی از راه دور با تانل یا LAN




