- วิธีการสร้าง AI workspace โดยใช้ LLM ในเครื่องและ สภาพแวดล้อมแซนดบ็อกซ์โค้ด เพื่อรัน AI ได้โดยไม่ต้องพึ่งพาคลาวด์
- รัน LLM ในเครื่องด้วย Ollama และใช้ Apple Container เพื่อรันโค้ดใน VM ที่แยกโดดเดี่ยว พร้อมใช้ Playwright เพื่อทำการทำงานอัตโนมัติผ่าน headless browser และเข้าถึงอินเทอร์เน็ตได้
- UI ใช้พื้นฐานจาก
assistant-ui โดยเพิ่ม dropdown เลือกโมเดลและการรวมกับ ai-sdk และสร้างสภาพแวดล้อมรันโค้ดที่ปลอดภัยผ่าน MCP (Model Context Protocol)
- ภายใน VM Coderunner ที่เชื่อมต่อผ่าน MCP ทำการรัน Jupyter server และ browser ทำให้สามารถสร้างกราฟ ตัดต่อภาพ/วิดีโอ ติดตั้งเครื่องมือ GitHub และค้นหาข้อมูลบนเว็บได้ในโหมดที่ปกป้องความเป็นส่วนตัว
- ขณะนี้รองรับเฉพาะ Apple Silicon และยังมีภารกิจต่อไปคือการพัฒนา UI, การหลีกเลี่ยงการตรวจจับ browser และการเสริมความสามารถในการจัดการเครื่องมือ
ข้อกำหนดและภูมิหลัง
- เป้าหมาย: รันทุกอย่างบนเครื่อง โดยไม่ใช้การรันโค้ดบนคลาวด์หรือเซิร์ฟเวอร์ระยะไกล
- LLM chat app ที่มีอยู่ (เช่น ChatGPT, Claude) มักมีทั้งการแชตที่ใช้ LLM แบบคลาวด์, การรันโค้ดแบบคลาวด์/ในเครื่อง และการเข้าถึงอินเทอร์เน็ต
- การขยายตัวของการใช้ LLM โอเพ่นซอร์ส ทำให้เกิดคำถามว่าสามารถทำสิ่งเหล่านี้ทั้งหมดแบบท้องถิ่นได้จริงหรือไม่
- LLM ในเครื่องอย่างเดียวไม่เพียงพอ จึงต้องมีการรันโค้ดในสภาพแวดล้อมที่แยกออกจากเครื่องหลัก และยังต้องการการเข้าถึงเนื้อหาผ่าน browser ด้วย
แนวคิดการออกแบบ
- รัน LLM ใน สภาพแวดล้อมท้องถิ่นอย่างสมบูรณ์
- รันการประมวลผลโค้ดในเฉพาะ VM ขนาดเบา เพื่อปิดกั้นความเสี่ยงต่อระบบโฮสต์
- เพิ่ม headless browser เพื่อรองรับการทำงานอัตโนมัติ การดึงข้อมูลใหม่ และการค้นหาเครื่องมือ
- สร้าง workflow ที่เน้น การปกป้องความเป็นส่วนตัวเป็นหลัก โดยให้ทุกขั้นตอนตั้งแต่การวางแผนด้วย AI จนถึงการรันโค้ดเกิดขึ้นในเครื่องทั้งหมด
- สามารถทำงานหลากหลาย เช่น ตัดต่อภาพและวิดีโอ โดยไม่ต้องส่งข้อมูลไปยังบริการภายนอก
เทคโนโลยีที่ใช้
- LLM: Ollama (รองรับโมเดลท้องถิ่นและโมเดลภายนอกบางตัว)
- UI:
assistant-ui + ai-sdk (เพิ่มความสามารถเลือกระบบโมเดล)
- VM runtime: Apple
container (ให้สภาพแวดล้อม VM ที่แยกตัว)
- การ orchestrate:
instavm/coderunner (เชื่อมต่อ Jupyter server ผ่าน MCP)
- อัตโนมัติของ browser: Playwright (เปิดเป็นเครื่องมือผ่าน MCP)
การลองสร้างแอป Mac และการเปลี่ยนแนวทาง
- ลองสร้างแอป Mac แบบเนทีฟด้วย
a0.dev แต่พบปัญหาหลายอย่างเพราะเป็นแพลตฟอร์มที่เน้น iOS
- เคยลองห่อด้วย Electron + NextJS แต่ยกเลิกเนื่องจากความซับซ้อน
- สุดท้ายเปลี่ยนไปใช้
assistant-ui แบบเว็บในเครื่องเป็นทางเลือกหลัก
ปรับแต่ง Assistant-UI
- คาดหวังว่าจะรองรับฟีเจอร์หลากหลาย เช่น dropdown เลือกโมเดลได้ แต่พบว่ามีข้อจำกัด
- หลังจากอิงตัวอย่างแล้วได้พัฒนาฟังก์ชันเลือกโมเดลหลายตัวเองผ่าน ai-sdk
- ในช่วงแรกยังรองรับโมเดลคลาวด์ เช่น OpenAI/Anthropic และค่อยๆ ชี้นำให้ย้ายไปใช้ โหมดท้องถิ่น
ปัญหาเรื่อง Tool-calling และการรองรับโมเดล
- ต้องการโมเดลที่รองรับ Tool-calling แต่บางโมเดลเช่น Ollama ยังไม่รองรับจริง
- แม้เอกสารทางการจะระบุรองรับเครื่องมือ แต่ในทางปฏิบัติมักมีการรองรับไม่ครบถ้วน
- เนื่องจาก ecosystem โอเพ่นซอร์สเปลี่ยนแปลงเร็ว สถานะการรองรับเครื่องมือและราคา token จึงผันผวนสูง
การรันโค้ดแบบแยกด้วย Container
- โดยใช้ Container ของ Apple ซึ่งให้สภาพแวดล้อม VM ที่แยกสนิทต่อแต่ละ container มากกว่า Docker จึงปลอดภัยมากขึ้นสำหรับการรันโค้ดที่ AI สร้าง
- วาง Jupyter server ลงในสภาพแวดล้อม VM และเปิดเผยผ่าน Model Context Protocol (MCP) เพื่อให้อุปกรณ์ภายนอกหลากหลาย (เช่น Claude Desktop, Gemini CLI) ใช้งานได้ทันที
- โค้ด MCP server ของ
coderunner ถูกเปิดเผยสู่สาธารณะ และมีตัวอย่างการเชื่อมต่อกับเครื่องมือภายนอก
- เครื่องมือ Apple Container ยังไม่เสถียร จึงต้องทำการ rebuild/ลบภาพใหม่ซ้ำๆ เมื่อเกิดปัญหาการ build หรือ image
- การทดสอบใช้งานจริง เช่น การตัดต่อวิดีโอ ยืนยันว่าชุด UI + LLM + coderunner ทำงานได้ปกติ
การรวม headless browser
- วาง Playwright headless browser ไว้ใน container และเปิดให้เป็น MCP tool
- คาดหวังว่าได้แก่การสำรวจเครื่องมือ/ข้อมูลใหม่ การค้นหาวิธีใช้ Github และการทำรีเสิร์ชแบบอัตโนมัติ
- สร้าง workflow หลักสำเร็จ: การผสาน LLM ท้องถิ่น + รันโค้ดใน sandbox + headless browser
ตัวอย่างงานที่ทำได้
- การรีเสิร์ชและสรุป หัวข้อเฉพาะ
- สร้างและเรนเดอร์ กราฟจาก CSV ด้วยคำสั่งภาษาธรรมชาติ
- ตัดต่อวิดีโอด้วย ffmpeg (เช่น ตัดช่วง)
- รีไซส์ ครอป และแปลงฟอร์แมตรูปภาพ
- ติดตั้งเครื่องมือของ Github ภายใน container
- เว็บสแป่ม/เก็บข้อมูลหน้าเว็บและสรุปผ่าน headless browser เป็นต้น
การ mount โวลุ่มไฟล์และการแยกตัว
- แมปโฟลเดอร์ของโฮสต์
~/.coderunner/assets ไปยัง /app/uploads ใน container เพื่อเก็บไฟล์ในพื้นที่แชร์ที่ปลอดภัย
- โค้ดที่รันแล้วไม่สามารถเข้าถึงระบบโฮสต์โดยตรง เพื่อยกระดับความปลอดภัย
ข้อจำกัดและงานต่อไป
- ทำงานได้เฉพาะสภาพแวดล้อม Apple Silicon ส่วน macOS 26 เป็นตัวเลือกเสริม
- ต้องปรับปรุง UI สำหรับการจัดการเครื่องมือ, การสตรีมผลลัพธ์ และอื่นๆ เพิ่มเติม
- headless browser ยังมีปัญหาถูกบล็อกในบางไซต์เนื่องจากการตรวจจับว่าเป็น bot
สรุป
- โปรเจกต์นี้เป็นมากกว่าการทดลอง มุ่งเน้นที่ความเป็นอธิปไตยด้านการคำนวณและ การปกป้องความเป็นส่วนตัว
- มอบประสบการณ์การประมวลผลข้อมูลอย่างปลอดภัยบนเครื่องคอมพิวเตอร์ส่วนตัวโดยไม่ต้องพึ่งพาคลาวด์หรือเซิร์ฟเวอร์ระยะไกล
- แม้ LLM ชั้นยอดอาจยังคงอยู่ในคลาวด์ขนาดใหญ่ แต่เป้าหมายคือการขับเคลื่อนเครื่องมือ AI แบบท้องถิ่นที่ช่วยรักษาความเป็นส่วนตัวของผู้ใช้
- โค้ดโอเพ่นซอร์ส
coderunner-ui พร้อมใช้งานบน GitHub และยินดีรับ feedback และการร่วมพัฒนา
ทรัพยากรที่เกี่ยวข้อง
ยังไม่มีความคิดเห็น