แพลตฟอร์มพัฒนา AI สำหรับโฮมแล็บของฉัน
(rsgm.dev)- เพื่อจัดการบริการในโฮมแล็บ จึงเชื่อมการเข้าถึง Git เข้ากับ OpenCode Web UI และจัดเวิร์กโฟลว์ให้ AI ทำการเปลี่ยนแปลง จากนั้น GitOps จะนำไป deploy หลังผ่านการรีวิว PR
- ย้ายสแต็ก docker compose ราว 12 ชุดไปยัง Arcane เพื่อจัดการด้วย GitOps และใช้เครื่องมือ AI ในการบำรุงรักษาบริการ
- เวลาจะอัปเดตคอนเทนเนอร์ เดิมต้องใช้เวลาหลายชั่วโมงในการอ่าน release notes ตรวจสอบ breaking changes และยืนยันด้วยตนเอง แต่ตอนนี้สามารถอ่านสรุป release notes ได้ภายในไม่กี่นาที ทำให้การอัปเกรดเวอร์ชันง่ายและปลอดภัยขึ้น
- OpenCode รันเป็นเซิร์ฟเวอร์ และมีเทอร์มินัล, file browser, Git diff และ git worktree พร้อมซิงก์เซสชันการเขียนโค้ดแบบต่อเนื่องข้ามอุปกรณ์หลายเครื่อง
- AI ไม่สามารถเข้าถึงบริการจริงได้โดยตรง และทำได้เพียง push ไปยัง Git branch เท่านั้น จึงเป็นโครงสร้างที่ทำให้ โค้ดที่ยังไม่ได้รีวิว ไม่ถูกนำไป deploy
เวิร์กโฟลว์การจัดการโฮมแล็บ
- ให้ OpenCode Web UI เข้าถึง Git เพื่อให้การจัดการโฮมแล็บง่ายขึ้น และเมื่อ OpenCode push การเปลี่ยนแปลงไปยัง Git มนุษย์จะอนุมัติ PR ก่อน จากนั้น GitOps จึง deploy การเปลี่ยนแปลง
- OpenCode รันเป็นเซิร์ฟเวอร์ และ เซสชันการเขียนโค้ดแบบต่อเนื่อง จะซิงก์ข้ามหลายอุปกรณ์
- บริการที่ดูแลอยู่มีประมาณ 12 สแต็ก docker compose และเพิ่งย้ายไป Arcane เพื่อจัดการและ deploy ด้วย GitOps
- กรณีใช้งานแรกของการนำเครื่องมือ AI มาใช้คือ การอัปเดตคอนเทนเนอร์
- ก่อนหน้านี้ต้องหา release notes ของแต่ละบริการ ตรวจสอบ breaking changes รันการอัปเดต และตรวจปัญหาของแต่ละบริการด้วยตนเอง
- กระบวนการนี้เคยใช้เวลาหลายชั่วโมง แต่ตอนนี้อ่านสรุป release notes ได้ภายในไม่กี่นาที ทำให้การอัปเกรดเวอร์ชันง่ายและปลอดภัยขึ้น
- ใช้ AI เพิ่ม healthcheck ให้กับคอนเทนเนอร์ส่วนใหญ่ จึงตรวจพบปัญหาได้เร็วขึ้น
OpenCode
- เดิมใช้ Claude Code เป็นหลัก แต่ผู้ให้บริการ AI หลายรายกำลังลดคุณค่าที่ลูกค้าได้รับด้วยการจำกัดโทเค็น จึงเริ่มมองหาทางเลือกอื่น
- เครื่องมือที่ต้องการคือสภาพแวดล้อมการเขียนโค้ดที่ไม่ผูกติดกับ vendor รายใดรายหนึ่ง และรองรับปลั๊กอินหลัก ๆ
- หลังจากลองหลายสภาพแวดล้อมการเขียนโค้ด ก็เลือก OpenCode ซึ่งเป็นเครื่องมือที่ชอบที่สุดในบรรดาตัวเลือกที่ลองมา
- การที่ OpenCode มี เว็บเซิร์ฟเวอร์และเว็บ UI ในตัว เป็นจุดเริ่มต้นของแนวคิดแพลตฟอร์มพัฒนา AI สำหรับโฮมแล็บนี้
แพลตฟอร์มพัฒนา AI
- สร้าง VM แบบเรียบง่ายบนโฮสต์ Truenas ที่มีเครื่องมือพัฒนาพื้นฐาน และเพิ่มเว็บเซิร์ฟเวอร์ OpenCode เป็น systemd unit
- สภาพแวดล้อมนี้มีเทอร์มินัลในตัว, file browser, Git diff และรองรับ git worktree ทำให้จัดการหลายเซสชันการเขียนโค้ดพร้อมกันได้
- เว็บ UI บนมือถือของ OpenCode มีป๊อปอัปถาม-ตอบที่ใช้งานได้ดีมาก
- บนเซิร์ฟเวอร์ Git กำหนดผู้ใช้เฉพาะสำหรับ OpenCode และคีย์ SSH เฉพาะ
- OpenCode สามารถ clone โปรเจ็กต์และ push branch ได้
- แต่ไม่สามารถ push ตรงไปยัง deployment branch ได้
- เวิร์กโฟลว์นี้วาง AI ไว้ ก่อนการรีวิว PR เสร็จสิ้น โดยให้ OpenCode เขียนการเปลี่ยนแปลง และมนุษย์ทำการ merge ใน PR โดยตรง
- โครงสร้างนี้ช่วยป้องกันไม่ให้โค้ดที่ยังไม่ได้รีวิวถูก deploy
- VM นี้เข้าถึงอินเทอร์เน็ตและเซิร์ฟเวอร์ Git ได้ แต่เข้าถึงบริการจริงไม่ได้
- เพราะขอบเขตผลกระทบมีขนาดเล็ก จึงมองว่ายอมรับได้ที่จะให้สิทธิ์ root บน VM แก่ OpenCode เมื่อจำเป็นต้องติดตั้ง build tools หรือ test dependency
- โครงสร้างนี้สามารถขยายไปเป็นแพลตฟอร์มนักพัฒนา production ในรูปแบบคอนเทนเนอร์ชั่วคราวสำหรับนักพัฒนา ที่มีเครื่องมือเตรียมไว้ล่วงหน้า, access guardrails และ audit logs
- การตั้งค่าปัจจุบันให้ความสามารถที่ต้องการโดยที่ยังไม่มีองค์ประกอบมากเกินไป
Workflow
- เวิร์กโฟลว์พื้นฐานเริ่มจากการวางแผนฟีเจอร์หรือการปรับปรุงใน OpenCode
- แผนจะมีทั้งสเปก, แผนการนำไปใช้ และการรีวิวด้วยตนเอง
- หากเป็นไปได้ จะทดสอบหรือตรวจสอบการเปลี่ยนแปลง
- หากมีส่วนที่ยังไม่ถูกใจ ก็จะปรับแก้ร่วมกับ OpenCode แบบวนซ้ำ
- OpenCode จะ push การเปลี่ยนแปลงไปยัง feature branch
- เปิด PR จาก branch นั้น และเมื่อพอใจก็ merge PR
- หลัง merge แล้ว GitOps จะรับช่วงการ deploy ต่อ
- การเปลี่ยนแปลงของบริการ docker จะให้ Arcane จัดการ
- การเปลี่ยนแปลงการตั้งค่า Home Assistant จะให้ปลั๊กอิน GitOps จัดการ
- การเปลี่ยนแปลงของบล็อกจะให้ Cloudflare Pages worker จัดการ
การผสาน Arcane GitOps กับ OpenCode
- ได้ย้ายบริการต่าง ๆ จาก Truenas ไปยังโปรเจ็กต์ Arcane GitOps โดยเป้าหมายหลักคือจัดการ docker compose stack ทั้งหมดที่เคยรันบน Truenas ผ่านรีโพซิทอรีที่อิง Git
- เมื่อเพิ่ม OpenCode เข้าไปด้วย วิธีนี้กลับทำงานได้ดีกว่าที่คาดไว้
- สามารถอัปเดตเครือข่ายของคอนเทนเนอร์ทั้งหมดจากโทรศัพท์ได้ ทำให้การจัดการคอนฟิกที่กระจายอยู่หลายจุดง่ายขึ้นมาก
- ก่อนหน้านี้ต้องใช้เวลาหลายชั่วโมงไล่ดู compose stack ทั้งหมดและตามรอยการเชื่อมต่อเครือข่าย
- ตอนนี้เพียงระบุ codebase และเป้าหมายให้ OpenCode จากนั้นตรวจสอบการเปลี่ยนแปลงใน PR ที่สร้างขึ้นแล้วค่อย merge
ข้อจำกัดที่ยังเหลือและการควบคุมการเข้าถึง
- ช่องว่างที่ใหญ่ที่สุดคือ CI feedback
- บน GitHub เอเจนต์เขียนโค้ดสามารถดู Actions logs เพื่อวินิจฉัยการทดสอบที่ล้มเหลว, ข้อผิดพลาดจาก linter, stack trace และการเปลี่ยนแปลงของ IaC plan ได้
- วิธีนี้ช่วยรักษาวงจร feedback ที่รวดเร็ว แม้กับการเปลี่ยนแปลงที่ unit tests ครอบคลุมไม่ถึง
- บน Forgejo เวิร์กโฟลว์นี้ทำได้ยากกว่า
- Forgejo Actions ไม่เปิดเผย job logs ผ่าน public API
- แม้จะมี API ที่ไม่ได้จัดทำเอกสารไว้ แต่ก็ไม่อยากสร้างระบบโดยอิงกับ API นั้น
- การตั้งค่าปัจจุบันทำให้ AI สามารถสร้างการเปลี่ยนแปลงต่อโฮมอินฟราจากอุปกรณ์ใดก็ได้ โดยที่ยังเข้าถึงบริการเป้าหมายโดยตรงไม่ได้
- สามารถเริ่มการเปลี่ยนแปลงจากคอมพิวเตอร์ รีวิว PR จากโทรศัพท์ และปล่อยให้ GitOps จัดการ deployment ต่อไป
1 ความคิดเห็น
ความคิดเห็นบน Hacker News
ตอนนี้ผมยังหาวิธี ผสาน AI ที่เข้ากับสภาพแวดล้อมของตัวเองได้ไม่ลงตัว ตอนนี้ยังไม่มีการโต้ตอบกันระหว่าง Forgejo กับเอเจนต์เขียนโค้ด และแม้จะลอง Forgejo Actions runner แล้ว แต่การจัดการบริบทยังดูคลุมเครือ
มันรับข้อมูลจาก issue หรือ PR ได้ แต่พอมีการโต้ตอบไปกลับหลายรอบ หรือบทสนทนาย้ายจาก issue ไป PR ความต่อเนื่องก็หายไปเร็วมาก
ผมก็กำลังทำอะไรคล้าย ๆ กันอยู่ แต่แทนที่จะใช้เซิร์ฟเวอร์ opencode แบบถาวร ผมใช้เวิร์กโฟลว์ที่รัน opencode ภายใน Forgejo action runner: https://codeberg.org/dragonfyre13/forgejo-opencode
ยังปรับแต่งอยู่ แต่ใจความคือเรียก Opencode จากใน Forgejo issue ด้วย
/ocแล้วมันจะกลับมาพร้อม PR สำหรับตรวจทานบางครั้งก็รู้สึกว่าในวงการเทคมีหลายคนเจอเรื่องคล้าย ๆ กันอย่างอิสระในช่วงเวลาไล่เลี่ยกัน แต่กลับมีคนน้อยมากที่เขียนหรือแชร์ออกมา
ผมเองก็กำลังสร้าง ระบบคล้ายกัน อยู่ เลยรู้สึกสนุกที่ได้อ่านโพสต์กับคอมเมนต์แล้วเห็นว่าทุกคนกำลังผ่านกระบวนการเดียวกัน
ปัญหาคือเราใช้เวลา 99% ไปกับการแฮ็กของเจ๋ง ๆ และใช้แค่ 1% ไปกับการพูดถึงมัน เราควรพูดกันให้มากกว่านี้
ตอนคุยกับทนาย เวลาก็แทบหมดแล้ว ผมกำลังจะถามว่า “ขออีกคำถามหนึ่ง” แต่ทนายบอกว่า “นัดเพิ่มอีก 30 นาทีแล้วค่อยคุยเรื่องนั้น” ซึ่งก็ยุติธรรมดี
ผมกำลังหาแรงจูงใจให้ตัวเองเขียนเรื่อง AI lab ของตัวเองอยู่พอดี และโพสต์นี้ก็เป็นแรงกระตุ้นที่ต้องการเลย
ชุดระบบของผมก็เป็นแนวคิดคล้ายกัน แต่ใช้ n8n/git/argo/k3s และเน้นเวิร์กโฟลว์อัตโนมัติที่ให้ Qwen หรือ Gemma4 จัดการเป็นหลัก
สงสัยว่ามีใครรู้ไหมว่าทำไมโดเมนนี้ถึงถูกบล็อกโดย Quad9 resolver Quad9 กรองโดเมนนี้ไว้จนเปิดเว็บไซต์ไม่ได้
ผล
dig @9.9.9.9 rsgm.dev NSขึ้นEDE: 17 (Filtered)เหตุผลหลักสองอย่างที่ผมยังไม่ใช้ชุดนี้คือ ทรัพยากร ที่ต้องให้กับ VM ที่รัน opencode เพื่อใช้ build โปรเจกต์ และเรื่องการทดสอบที่เร็วกว่า
ผมรัน pi coding agent บน Mac โดยตรง พร้อมกับรันชุดซอฟต์แวร์เต็มอย่าง redis, postgres, kratos ไปด้วย ถ้าเอเจนต์เขียนโค้ดรันอยู่บนเครื่องพัฒนาหลัก ก็จะ build ได้เร็วกว่า และสามารถ build ใหม่เฉพาะแบ็กเอนด์แล้วรีสตาร์ต ก่อนจะทดสอบการเปลี่ยนแปลงจาก UI client ได้ทันที ทำให้ตรวจสอบได้ไวกว่า
ผมก็ทำคล้ายกันมาก รัน OpenCode บน Proxmox LXC แล้วเพิ่มเลเยอร์ Kimaki ทับเข้าไปเพื่อเชื่อมกับ Discord
จะชอบหรือไม่ก็ตาม คุณคุยกับโค้ดเบสได้ และถ้าชอบก็ส่งข้อความเสียงได้ด้วย ซึ่งเจ๋งใช้ได้เลย
เยี่ยมมาก โฮมแล็บ AI น่าจะสนุกมาก
ตอนนี้ผมให้ Claude ช่วยจัดการโฮมแล็บของผมที่กระจายอยู่หลายเครื่อง และมันทำให้การติดตั้งกับดูแลโฮมแล็บเปลี่ยนจาก “กับดักที่น่าหลงใหลอยู่หลายปีแต่ไม่เคยทำงานได้สมบูรณ์และกินเวลา” มาเป็น “ไอเดียที่ดีจริง ๆ และช่วยขยายขีดความสามารถของผม”
ถ้าเป็นงานที่กำหนดขอบเขตแคบมากอย่าง “ช่วยทำไฟล์ docker compose ให้หน่อย” หรือ “ขอการตั้งค่า NSD” ก็พอใช้ได้ แต่ถึงอย่างนั้นคุณก็ต้องรู้อยู่แล้วว่าต้องใช้เทคโนโลยีพื้นฐานอะไร และควรถามอะไร
การเพิ่มการเข้าถึง Git ให้ OpenCode Web UI เพื่อให้จัดการโฮมแล็บได้ง่ายขึ้น แล้วให้ OpenCode push เข้า Git จากนั้นผมค่อยอนุมัติ PR และให้ GitOps deploy การเปลี่ยนแปลง ฟังดูเป็นแนวทางที่ดีทีเดียว
แต่ก่อนจะอ่านต่อ ผมสงสัยว่าถ้าจะทำอะไรแบบนี้คล้าย ๆ กัน จำเป็นต้องใช้เงินหลายพันดอลลาร์เพื่อเตรียม RAM กับ GPU หรือเปล่า
เราก็ทำอะไรคล้ายกัน แต่เปิดให้เอเจนต์เปิด PR ได้ด้วย และใช้ระบบ ReARM ติดตามรีลีสเมทาดาทากับ agent session
ช่วงหลังยังออกตัวเลือกให้เอเจนต์ติดตามการ deploy แบบ Helm-based ผ่าน ReARM ได้ด้วย: https://docs.rearmhq.com/workflows/devops.html
น่าเสียดายที่ Forgejo ไม่มี CLI แบบ GitHub