• วิธีการสร้าง 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 และการร่วมพัฒนา

ทรัพยากรที่เกี่ยวข้อง

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

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