1 คะแนน โดย maestrojeong 4 시간 전 | ยังไม่มีความคิดเห็น | แชร์ทาง WhatsApp

1. Motivation?

เอเจนต์หนึ่งตัวต่อ Chrome หนึ่งตัว ถ้านี่เป็นค่าเริ่มต้น RAM จะถูกใช้ไป 500MB~1GB ต่อเอเจนต์ แค่รันเอเจนต์ 5 ตัว ก็ใช้ RAM กับเบราว์เซอร์อย่างเดียว 2.5~5GB แล้ว

นอกจากนี้ Playwright ยังใช้หน่วยความจำราว ~180MB ต่อ CDP session เองโดยค่าเริ่มต้น ไม่นับหน่วยความจำของโปรเซสเบราว์เซอร์ แปลว่าชั้น CDP เองก็หนักอยู่แล้ว ยิ่งเพิ่มจำนวนเอเจนต์ overhead นี้ก็ยิ่งคูณเพิ่มแบบเชิงเส้น

ถ้าจะรันมัลติเอเจนต์ในงานจริง ต้องทลายโครงสร้างนี้ก่อน


2. How?

เปิดเบราว์เซอร์เพียงตัวเดียว ไม่ว่าจะมีเอเจนต์กี่ตัวก็เชื่อมต่อบนเบราว์เซอร์นั้นด้วย raw CDP และเซิร์ฟเวอร์จะบังคับแยกแท็บตาม owner เอเจนต์ B จะไปแตะต้องแท็บของเอเจนต์ A ไม่ได้ รองรับ N ตัวด้วยอินสแตนซ์เดียว ดังนั้นแม้จำนวนเอเจนต์จะเพิ่มขึ้น หน่วยความจำของเบราว์เซอร์ก็ไม่เพิ่มตาม

ภาษาก็เปลี่ยนด้วย เขียนใหม่ด้วย Rust และทำเป็นโครงสร้างที่ไม่ฝังเบราว์เซอร์ไว้ในตัว (เชื่อมต่อกับ Chrome ที่มีอยู่ด้วย --connect) ทำให้ตัวเซิร์ฟเวอร์เป็นไบนารีเดี่ยวขนาด 6MB

หลีกเลี่ยงการตรวจจับ โดยได้แรงบันดาลใจจาก Patchright จึงไม่เปิด CDP domains ที่ตรวจจับได้ง่ายอย่าง Runtime.enable เลย และไม่ได้ใช้เบราว์เซอร์ปลอมที่ถูกแพตช์ แต่ใช้ Chrome จริงของผู้ใช้ + persistent profile เดิมไว้ตามเดิม


3. Summary

สรุปคือ: คอนโทรลเลอร์เบราว์เซอร์แบบสเตลท์สำหรับมัลติเอเจนต์ที่เบามาก

เครื่องมือ 62 รายการบนพื้นฐาน raw CDP — accessibility tree ref, action settle-diff, network/cookies/storage/PDF/upload/iframe/WebAuthn, stdio + HTTP/SSE.

การติดตั้ง

curl -fsSL https://raw.githubusercontent.com/maestrojeong/browser-rs-mcp/… | sh


4. Future work

งานถัดไปยังมี Windows build และการลงทะเบียนบน crates.io

ยังไม่มีความคิดเห็น

ยังไม่มีความคิดเห็น