กลับไปบล็อก

การเปิดเบราว์เซอร์หลายสภาพแวดล้อมสำหรับ AI Agent: 3 ความต้องการด้านการแยกและต้นทุนทรัพยากร

สำหรับเดโม การใช้ Agent หนึ่งตัวกับหน้าต่างเบราว์เซอร์หนึ่งหน้าต่างก็เพียงพอ แต่เมื่อใช้งานจริง งานพร้อมกันหลายสิบงานต้องมีสภาพแวดล้อมแยกกัน ไม่เช่นนั้นสถานะล็อกอินจะปะปน แท็บจะแย่งการควบคุม และวิเคราะห์สาเหตุของข้อผิดพลาดได้ยาก

หากต้องการสาธิตว่า AI Agent ทำอะไรได้บ้าง หน้าต่างเบราว์เซอร์เพียงหนึ่งหน้าต่างก็เพียงพอ แต่เมื่อถูกนำไปใช้ในงานจริง ความต้องการจะเพิ่มเป็นหลายสิบหน้าต่างอย่างรวดเร็ว และแต่ละหน้าต่างต้องไม่รบกวนกัน สาเหตุไม่ได้อยู่ที่ Agent เอง แต่อยู่ที่สภาพแวดล้อมของเบราว์เซอร์ที่รองรับมันอยู่

จะเกิดปัญหาอะไรเมื่อใช้สภาพแวดล้อมเดียวร่วมกัน

ปัญหาที่เห็นได้ชัดที่สุดคือ Cookie และสถานะการเข้าสู่ระบบปะปนกัน หากงานสองงานใช้ไดเรกทอรีข้อมูลเบราว์เซอร์เดียวกันและสลับกันเข้าสู่ระบบด้วยคนละบัญชี การเข้าสู่ระบบภายหลังอาจเขียนทับเซสชันของงานก่อนหน้าได้ หากงานหนึ่งล้างแคช สถานะของหน้าในอีกงานก็อาจหายไปด้วย

ถัดมาคือการแย่งทรัพยากร ในอินสแตนซ์เบราว์เซอร์เดียว แท็บ โฟกัส ไดเรกทอรีดาวน์โหลด และป๊อปอัปเป็นทรัพยากรที่ใช้ร่วมกัน หากสองงานเปิดแท็บใหม่พร้อมกัน จะเริ่มไม่ชัดเจนว่างานใดกำลังควบคุมหน้าใด กล่องโต้ตอบที่งานหนึ่งเปิดขึ้นอาจทำให้สคริปต์ของอีกงานค้างได้ ความขัดแย้งของสถานะล็อกอิน การเขียนทับข้อมูล และการรบกวนกันระหว่างงานแทบจะหลีกเลี่ยงไม่ได้เมื่อทำงานพร้อมกัน

ปัญหาที่สามจะเห็นหลังเกิดความล้มเหลว การแยกให้ออกว่าเป็นความผิดของตรรกะในสคริปต์หรือสภาพแวดล้อมถูกรบกวนโดยงานอื่นในขั้นตอนใดขั้นตอนหนึ่งทำได้ยาก เมื่อหลายงานใช้โปรเซสและบันทึกเดียวกัน อาการของข้อผิดพลาดก็อาจไม่เหมือนกัน ทำให้ต้นทุนในการตรวจสอบเพิ่มขึ้นมาก

ยังมีความเสี่ยงอีกชั้นหนึ่งที่สังเกตได้ยากกว่า เมื่อหลายตัวตนทำงานเป็นเวลานานในสภาพแวดล้อมเดียวกัน จะทิ้งสัญญาณที่เชื่อมโยงกันได้ พารามิเตอร์อุปกรณ์ สถานะพื้นที่เก็บข้อมูล และทางออกเครือข่ายเหมือนกันทั้งหมด แพลตฟอร์มจึงอาจมองว่าเป็นการทำงานจำนวนมากจากอุปกรณ์เดียวกันได้ง่าย หากบัญชีหนึ่งถูกมองว่าผิดปกติ บัญชีอื่นก็อาจได้รับผลกระทบตามไปด้วย

เปิดหลายหน้าต่างไม่ได้หมายความว่าแยกสภาพแวดล้อมแล้ว

สิ่งแรกที่หลายคนนึกถึงคือเปิดหลายหน้าต่างด้วยตนเอง ภายนอกดูเหมือนแยกกัน แต่จริง ๆ แล้วใช้โปรไฟล์เบราว์เซอร์เดียวกัน ได้แก่ Cookie ชุดเดียว พื้นที่เก็บข้อมูลในเครื่องชุดเดียว และข้อมูลอุปกรณ์ชุดเดียว หน้าต่างต่าง ๆ มองเห็นสถานะล็อกอินของกันและกันได้ และการทำงานในหน้าต่างหนึ่งอาจส่งผลต่ออีกหน้าต่างหนึ่ง

การแยกจริงต้องลงไปถึงระดับไดเรกทอรีข้อมูลและพารามิเตอร์ของสภาพแวดล้อม แต่ละสภาพแวดล้อมต้องมีไดเรกทอรีจัดเก็บของตัวเอง พารามิเตอร์อุปกรณ์ของตัวเอง เช่น ความละเอียด ภาษา เขตเวลา ฟอนต์ Canvas และ WebGL รวมถึงทางออกเครือข่ายของตัวเอง หากขาดองค์ประกอบใดองค์ประกอบหนึ่งจากสามส่วนนี้ การแยกก็ยังไม่สมบูรณ์ แม้จะแยกสภาพแวดล้อมแล้ว แต่ถ้ายังใช้ทางออกเครือข่ายร่วมกัน การเชื่อมโยงก็ยังเกิดขึ้นได้

并发 Agent 任务一一映射到独立浏览器环境,并由环境调度器管理状态和资源开销

ต้นทุนของการแยกและสิ่งที่ได้กลับมา

การแยกไม่ฟรี เบื้องหลังแต่ละสภาพแวดล้อมคือโปรเซสเบราว์เซอร์อิสระและไดเรกทอรีข้อมูลแยกต่างหาก เมื่อจำนวนสภาพแวดล้อมเพิ่มขึ้น หน่วยความจำและ CPU จะเริ่มรับแรงกดดันก่อน หากต้องรันหลายสิบสภาพแวดล้อมบนเครื่องเดียว ควรคำนวณทรัพยากรที่เหลือไว้ล่วงหน้าแทนที่จะรอให้ระบบล่มแล้วค่อยแก้

มีหลายจุดที่ปรับสมดุลได้ เช่น นำสภาพแวดล้อมที่ไม่ค่อยใช้งานออกแล้วเปิดใหม่เมื่อจำเป็น กระจายงานตามภาระไปยังหลายเครื่องแทนที่จะกองไว้เครื่องเดียว และกำหนดวงจรชีวิตของสภาพแวดล้อมให้ชัดเจนเพื่อไม่ให้มีหลายร้อยสภาพแวดล้อมเปิดค้างอยู่ตลอด โครงสร้างของงานเองก็สำคัญ งานแบบลำดับภายใต้บัญชีเดียวกันไม่จำเป็นต้องแยกหลายสภาพแวดล้อม เพราะจะเป็นการสิ้นเปลืองทรัพยากรเท่านั้น

อีกด้านคือประโยชน์ เมื่อทำการแยกได้ถูกต้อง อาการของความล้มเหลวจะมีความคงที่มากขึ้น ปัญหาจะระบุได้ว่าอยู่ที่สภาพแวดล้อมใด ไม่ใช่เหตุการณ์ที่อธิบายไม่ได้ เมื่อขยายขนาด คุณค่าของความคาดการณ์ได้นี้สูงกว่าทรัพยากรเล็กน้อยที่ประหยัดจากการใช้ร่วมกันมาก

สามสิ่งที่ควรอยู่ในชั้นสภาพแวดล้อมเมื่อขยายขนาด

อย่างแรกคือการจัดตารางแบบกลุ่ม สภาพแวดล้อมควรถูกขอใช้และคืนได้เหมือนทรัพยากรประมวลผล รองรับการสร้างตามต้องการ การเริ่มหลายตัวพร้อมกัน การควบคุมงานพร้อมกัน การลองใหม่เมื่อเกิดความล้มเหลว และการนำกลับมาใช้ใหม่อัตโนมัติ แทนที่จะสร้างและปิดทีละตัวในสคริปต์

อย่างที่สองคือทางออกเครือข่ายอิสระ แต่ละสภาพแวดล้อมควรผูกกับทางออกของตัวเอง และภูมิภาคของทางออกควรสอดคล้องกับพารามิเตอร์ทางภูมิศาสตร์ของสภาพแวดล้อม ข้อนี้ถูกมองข้ามได้ง่าย แต่เป็นเงื่อนไขพื้นฐานให้การแยกทั้งระบบสมบูรณ์

อย่างที่สามคือสถานะที่ตรวจสอบได้ ควรรู้ได้ตลอดว่าสภาพแวดล้อมใดกำลังทำงาน ใดว่าง และใดผิดปกติ Agent ทำงานโดยไม่มีคนเฝ้า หากตรวจสอบสถานะไม่ได้ เมื่อเกิดปัญหาก็เหลือเพียงการคาดเดา

ความสามารถทั้งสามอย่างนี้ไม่เหมาะจะยัดไว้ในสคริปต์ เพราะต้องอาศัยพื้นที่จัดเก็บ การกำหนดค่า และการจัดตารางในระดับสภาพแวดล้อม เครื่องมือจัดการหลายสภาพแวดล้อมบางประเภททำงานอยู่ตรงชั้นนี้ PurpleMark เป็นหนึ่งในนั้น โดยทำให้สภาพแวดล้อมเบราว์เซอร์กลายเป็นทรัพยากรที่แยกได้ จัดตารางเป็นกลุ่มได้ และเรียกใช้ผ่านอินเทอร์เฟซได้

เมื่อใดที่ไม่จำเป็นต้องใช้หลายสภาพแวดล้อม

หาก Agent ใช้เพียงบัญชีเดียวและทำงานไม่บ่อย เบราว์เซอร์ทั่วไปก็เพียงพอจริง ๆ และการแยกเพิ่มเติมเพียงเพิ่มภาระในการดูแล แต่หากมีเงื่อนไขใดเงื่อนไขหนึ่งต่อไปนี้ ก็ควรแยกชั้นสภาพแวดล้อมออกมา: งานต้องทำพร้อมกัน หลายตัวตนต้องเข้าถึงแพลตฟอร์มเดียวกัน ต้องรักษาสถานะล็อกอินเป็นเวลานาน หรือขนาดของงานพร้อมกันจะเพิ่มขึ้นต่อไป

สถานการณ์เหล่านี้มีจุดร่วมเดียวกัน ปัญหาไม่ได้อยู่ที่ Agent ฉลาดพอหรือไม่ แต่อยู่ที่สภาพแวดล้อมใต้ Agent สะอาดและแยกจากกันเพียงพอหรือไม่

ขอบเขต

ไม่ว่าจะเลือกแนวทางใด ขอบเขตของกฎยังเหมือนเดิม: ปฏิบัติตามข้อกำหนดการให้บริการและกฎ robots ของแต่ละแพลตฟอร์ม ไม่ใช้ข้อมูลตัวตนปลอม ไม่หลีกเลี่ยงมาตรการป้องกันทางเทคนิค ควบคุมความถี่ของคำขอ และไม่รบกวนการทำงานตามปกติของบริการของอีกฝ่าย