- นักพัฒนาเว็บแพลตฟอร์ม Paul Kinlan สำรวจความเป็นไปได้ของเบราว์เซอร์ในฐานะสภาพแวดล้อมการรันที่ปลอดภัยสำหรับ coding agent
- เขาชี้ว่าเบราว์เซอร์มี โครงสร้างแซนด์บ็อกซ์ ที่แข็งแกร่งสำหรับการรัน โค้ดที่ไม่น่าเชื่อถือ อยู่แล้ว
- เพื่อพิสูจน์เรื่องนี้ เขาได้สร้างเดโมชื่อ Co-do เพื่อทดลองทั้งการเข้าถึงไฟล์ การสื่อสารผ่านเครือข่าย และการรันโค้ดภายในเบราว์เซอร์
- Co-do ใช้ File System Access API, CSP header และ
<iframe sandbox>, WebAssembly in Web Workers
- นี่เป็นกรณีศึกษาที่แสดงให้เห็นว่าเบราว์เซอร์สามารถพัฒนาไปเป็น สภาพแวดล้อมการรัน AI agent ได้โดยไม่ต้องมีคอนเทนเนอร์ในเครื่อง
มุมมองที่มองเบราว์เซอร์เป็นแซนด์บ็อกซ์
- Paul Kinlan จาก Google มองว่าการรัน coding agent จำเป็นต้องมี สภาพแวดล้อมแซนด์บ็อกซ์ที่แข็งแกร่ง
- เขาเน้นว่าเบราว์เซอร์เป็นแพลตฟอร์มที่พัฒนามาตลอด 30 ปีเพื่อรัน มัลแวร์หรือโค้ดที่ไม่น่าเชื่อถือ ได้อย่างปลอดภัย
- คุณสมบัตินี้จึงเป็นเหตุผลที่ทำให้สามารถใช้เบราว์เซอร์เป็น สภาพแวดล้อมสำหรับการรันเอเจนต์ ได้
องค์ประกอบหลัก 3 อย่างของแซนด์บ็อกซ์บนเบราว์เซอร์
- Kinlan เสนอองค์ประกอบหลัก 3 อย่างของแซนด์บ็อกซ์ ได้แก่ การเข้าถึงระบบไฟล์, การควบคุมการเข้าถึงเครือข่าย, และ การรันโค้ดอย่างปลอดภัย
- File System Access API ให้ความสามารถในการจัดการไฟล์ในเครื่องจากเบราว์เซอร์ และปัจจุบันเป็นที่รู้กันว่า รองรับเฉพาะ Chrome
- สามารถควบคุมการเข้าถึงเครือข่ายผ่าน CSP(Content Security Policy) header และแอตทริบิวต์
<iframe sandbox>
- การใช้ WebAssembly และ Web Workers ช่วยให้รันโค้ดในสภาพแวดล้อมที่แยกจากกันได้
โครงสร้างและความสามารถของเดโม Co-do
- เพื่อทดสอบแนวคิดของ Kinlan จึงมีการสร้างแอปเดโมชื่อ Co-do
- ผู้ใช้เลือกโฟลเดอร์ และตั้งค่า ผู้ให้บริการ LLM กับ API key
- Co-do โต้ตอบกับ LLM ผ่าน การเรียก API ที่ CSP อนุญาต และมี อินเทอร์เฟซแชต ที่สามารถสนทนากับไฟล์ได้
- โครงสร้างนี้คล้ายกับ Claude Cowork แต่รันได้ด้วยเบราว์เซอร์เพียงอย่างเดียวโดยไม่ต้องมี คอนเทนเนอร์โลคัลขนาดใหญ่
ข้อจำกัดของ <iframe sandbox> และเทคโนโลยีความปลอดภัย
- ปัญหาสำคัญที่ถูกชี้คือ การมีเอกสารอธิบายไม่เพียงพอ ของ
<iframe sandbox>
- การติดตั้งใช้งานในแต่ละเบราว์เซอร์แตกต่างกันมาก และมีข้อมูลอ้างอิงที่เกี่ยวข้องไม่มาก
- Kinlan เสนอวิธีใช้ เทคนิค double-iframe เพื่อบังคับใช้กฎเครือข่ายกับเฟรมด้านใน
การค้นพบและการทดลองเพิ่มเติม
- มีการยืนยันว่าแอตทริบิวต์
<input type="file" webkitdirectory> ทำงานได้ทั้งบน Firefox, Safari, Chrome
- ทำให้เบราว์เซอร์สามารถเข้าถึง ทั้งไดเรกทอรีแบบอ่านอย่างเดียว ได้
- เพื่อทดสอบเรื่องนี้จึงได้สร้าง เดโม webkitdirectory ขึ้นมา และมีแผนจะนำไปใช้ในโปรเจกต์ต่อไป
บทสรุป
- เบราว์เซอร์ได้พัฒนาเป็น แพลตฟอร์มที่สมบูรณ์สำหรับการแยกความปลอดภัยและการรันโค้ด ไปแล้ว
- กรณีของ Co-do เป็นหลักฐานเชิงทดลองที่แสดงว่าเบราว์เซอร์สามารถขยายบทบาทไปเป็น สภาพแวดล้อมการรันสำหรับ AI coding agent ได้
1 ความคิดเห็น
ความเห็นจาก Hacker News
นี่คือบทความที่ฉันโพสต์ไว้ในลิงก์บล็อกของฉัน ถ้าอยากเข้าใจบริบททั้งหมด ต้องอ่านต้นฉบับ The Browser is the Sandbox ก่อน
ฉันคิดว่าเหตุผลที่ Google สร้าง NaCl ก็เพราะมันนำไปสู่การ ทำ sandbox ให้เป็นมาตรฐาน ของ WebAssembly นั่นเอง DOM, JS และ CSS ก็ทำงานเป็น rendering sandbox ด้วย เบราว์เซอร์ต้องจำกัดความสามารถบางอย่างเพื่อมอบ ประสบการณ์ผู้ใช้แบบสอดคล้องกัน
นี่ก็เป็นเหตุผลที่ IE กับ Edge รุ่นเก่าล้มเหลวด้วย external sandbox อย่าง Flash, ActiveX, Java Applet และ Silverlight หายไปหมดแล้ว และพอ asm.js กับ WebAssembly เสถียรขึ้น เว็บก็สะอาดขึ้นมาก อีกอย่าง ActionScript ของ Flash ก็มีอิทธิพลต่อการออกแบบ ECMAScript และ TypeScript ด้วย
ตอนที่ฉันเห็นแอตทริบิวต์
webkitdirectoryครั้งแรกก็ตกใจเหมือนกัน ทำเว็บแอปมาหลายปีแต่กลับพลาดสิ่งนี้ไป security model ของ browser sandbox คือสิ่งที่ถูกทดสอบมาแล้วโดยผู้คนนับพันล้านที่ กดลิงก์น่าสงสัยกันมาตลอดมันเป็นแนวทางที่สุกงอมกว่าการยกคอนเทนเนอร์ใหม่ขึ้นมาทุกครั้งมาก แต่อีกด้านหนึ่ง เบราว์เซอร์ก็มีข้อจำกัดคือเรียก system call, รันไบนารี หรือเข้าถึงฮาร์ดแวร์ไม่ได้ สำหรับ AI coding นั้นพอเพียง แต่บางงานก็ยังมีเพดานอยู่
น่าสนใจที่เวลาอภิปรายเรื่อง sandbox แทบไม่มีใครพูดถึง systemd หรือระบบสิทธิ์ผู้ใช้ของ Linux ทั้งที่จริง ๆ แล้วพวกมันก็ทรงพลังและให้ การแยกกั้นต้นทุนต่ำ ได้เหมือนกัน
File System Access API คือจุดเปลี่ยนสำคัญของวิวัฒนาการเว็บ ใน co-do.xyz คุณเลือกไดเรกทอรีแล้วให้ AI จัดการไฟล์ภายในได้อย่างปลอดภัย API นี้ทำให้เว็บแอปกลายเป็น เครื่องมือเพิ่มประสิทธิภาพการทำงาน อย่างแท้จริง
การรันบนเบราว์เซอร์น่าสนใจ แต่ แอปธุรกิจจริง ส่วนใหญ่ย้ายไปเน้นคลาวด์เพราะเรื่องการบำรุงรักษา ความปลอดภัย และการเข้าถึงข้อมูล การรันในเครื่องเหมาะกับงานเพิ่มประสิทธิภาพส่วนบุคคล แต่มีข้อจำกัดสำหรับแอปกระแสหลัก นี่ก็เป็นเหตุผลเดียวกับที่ฟีเจอร์ desktop automation อย่าง AppleScript, COM และ DDE ค่อย ๆ หายไป
อยากแนะนำอีกสองอย่างที่ทำได้ในเบราว์เซอร์
ในทางทฤษฎีแล้ว แค่มี URL เดียวก็สร้าง ระบบเอเจนต์ ที่ค่อนข้างสมบูรณ์ได้
เมื่อก่อนใน Chrome เราขอสิทธิ์อ่าน/เขียนไดเรกทอรีผ่าน File System Access API ได้ แต่พอรีเฟรชแท็บแล้วสิทธิ์จะหายไป ไม่แน่ใจว่าตอนนี้ดีขึ้นหรือยัง
วิธีนี้ sandbox แค่ไฟล์ซิสเต็มเท่านั้น แต่ผู้คนอยากเชื่อมต่อกับอีเมล ปฏิทิน แชต ซอร์สโค้ด ข้อมูลการเงิน และอื่น ๆ ด้วย ความปลอดภัยของไฟล์ซิสเต็มเป็นแค่จุดเริ่มต้น ส่วน ความปลอดภัยของระบบนิเวศข้อมูลทั้งหมด ยังเป็นโจทย์ต่อไป
ฉันสงสัยว่าข้อจำกัดของแนวทางนี้อยู่ตรงไหน เราจะทำ Gemini CLI เวอร์ชันที่ UX ดีขึ้นบนเบราว์เซอร์ได้ไหม? แล้วจะเชื่อมกับทูลในเครื่องได้หรือเปล่า?