วิธีสร้าง AI agent แบบ OpenClaw ด้วยตัวเอง
เรียนรู้วิธีสร้าง AI agent แบบ self-hosted ที่รันคำสั่งบน server ได้ พร้อมเจาะลึกความสำคัญของการทำ hardening เพื่อป้องกันช่องโหว่ CVE-2026-32922
OpenClaw คืออะไรกันแน่
OpenClaw คือ AI agent ส่วนบุคคลแบบ self-hosted คุณสามารถรันมันบน server ของคุณเอง เชื่อมต่อกับแอปพลิเคชันแชทที่ใช้งานอยู่ และมันสามารถรัน shell commands, ควบคุม browser, อ่านและเขียนไฟล์ รวมถึงดำเนินการตามข้อความที่คุณส่งไป OpenClaw ใช้สัญญาอนุญาตแบบ MIT, เน้นการทำงานแบบ local-first และมี GitHub stars มากกว่า 380,000 stars ณ ช่วงกลางปี 2026 ซึ่งทำให้เป็นหนึ่งในโปรเจกต์ที่มีคนกด star มากที่สุดบนแพลตฟอร์ม หากมองข้ามความซับซ้อนภายนอก มันคือชุดส่วนประกอบขนาดเล็กที่ถูกเชื่อมต่อกันอย่างเป็นระบบ บทความนี้จะอธิบายถึงส่วนประกอบเหล่านั้นเพื่อให้คุณเข้าใจว่าเครื่องมือลักษณะนี้ถูกสร้างขึ้นอย่างไร และจุดที่ต้องระวังคือตรงไหน
คำเตือนหนึ่งประการที่ต้องแจ้งให้ทราบล่วงหน้า เนื่องจากสิ่งนี้ส่งผลต่อการออกแบบทุกอย่างด้านล่าง ในเดือนมีนาคม 2026 OpenClaw มีช่องโหว่ด้านความปลอดภัยถูกเปิดเผย 9 รายการภายในเวลาเพียง 4 วัน รวมถึงช่องโหว่ระดับวิกฤตประเภท privilege-escalation ที่มีคะแนน 9.9 จาก 10 (CVE-2026-32922) โปรเจกต์นี้ถูกออกแบบมาเพื่อให้คุณซึ่งเป็นผู้ใช้งานเป็นผู้เสริมความปลอดภัย (harden) ตัวระบบเอง Agent ที่สามารถรันคำสั่งใดก็ได้จะมีความปลอดภัยเท่ากับเครื่องที่มันรันอยู่และขอบเขตที่คุณกำหนดไว้เท่านั้น โปรดคำนึงถึงเรื่องนี้ในขณะที่อ่านต่อไป
The gateway daemon: หนึ่งโปรเซสที่เก็บเป็นความลับ
หัวใจสำคัญคือโปรเซสเดียวที่ทำงานต่อเนื่อง ซึ่งมักเรียกว่า gateway มันทำหน้าที่เป็น control plane ทำหน้าที่รับข้อความ, ตัดสินใจว่าจะทำอะไร, รันเครื่องมือต่างๆ และส่งคำตอบกลับ ทุกส่วนประกอบอื่นจะเชื่อมต่อเข้ากับโปรเซสนี้
ข้อเท็จจริงที่สำคัญที่สุดเกี่ยวกับ gateway คือจุดที่มันรับการเชื่อมต่อ (listen) โดยค่าเริ่มต้น OpenClaw จะ bind ไว้กับ loopback address คือ 127.0.0.1 ดังนั้นจึงไม่สามารถเข้าถึงได้จากอินเทอร์เน็ต เว้นแต่คุณจะตั้งใจเปิดให้เข้าถึงได้ จงปล่อยมันไว้เช่นนั้น gateway นี้เป็นโปรเซสเดียวที่รันคำสั่งต่างๆ ดังนั้นหาก gateway ถูกเปิดสู่สาธารณะ ใครก็ตามที่พบจะสามารถเข้าควบคุม server ของคุณจากระยะไกลได้ หากคุณต้องการเข้าถึงจาก laptop ให้ใช้งานผ่าน VPN หรือ SSH tunnel แทนการเปิด port เพราะไม่มีใครสามารถโจมตี port ที่พวกเขาเข้าถึงไม่ได้
Channel connectors: การรับข้อความเข้าและส่งคำตอบออก
AI agent ส่วนบุคคลจะมีประโยชน์ก็ต่อเมื่อคุณสามารถสื่อสารกับมันผ่านแอปพลิเคชันที่คุณใช้งานอยู่ได้ นั่นคือหน้าที่ของ channel connectors แต่ละตัวจะสื่อสารกับหนึ่งแพลตฟอร์ม เช่น Telegram, WhatsApp, Slack หรือ Discord โดยใช้ bot API หรือ webhooks ของแพลตฟอร์มนั้นๆ
รูปแบบการทำงานเหมือนกันทั้งหมด ตัว connector จะลงทะเบียน bot กับแพลตฟอร์ม, รับข้อความขาเข้าของคุณ (โดยการ polling แพลตฟอร์ม หรือรับ webhook ที่แพลตฟอร์มส่งมา), ส่งข้อความนั้นให้ gateway และโพสต์คำตอบจาก gateway กลับผ่าน API เดิม connector ทำหน้าที่เป็นชั้นแปลภาษา (translation layer) ที่บางเบา โดยแปลงจาก "มีข้อความ Telegram เข้ามา" เป็น "นี่คือข้อความสำหรับ agent" และในทางกลับกัน การสร้าง connector ขึ้นมาเองส่วนใหญ่เป็นเพียงการอ่านเอกสาร bot ของแพลตฟอร์มนั้นๆ และจับคู่รูปแบบข้อความเข้ากับรูปแบบของ gateway
The brain and the tool loop
ภายใน gateway คือส่วนที่ทำให้มันเป็น agent ไม่ใช่แค่ chatbot มันคือ loop การทำงาน
เมื่อมีข้อความเข้ามา gateway จะส่งข้อความนั้นไปยัง language model พร้อมกับรายการเครื่องมือที่ model ได้รับอนุญาตให้ใช้ model จะอ่านข้อความและตัดสินใจว่า: จะตอบกลับโดยตรง หรือจะเรียกใช้เครื่องมือ หากมีการเรียกใช้เครื่องมือ gateway จะรันเครื่องมือนั้น, เก็บผลลัพธ์ และส่งผลลัพธ์กลับไปยัง model จากนั้น model จะพิจารณาผลลัพธ์และตัดสินใจอีกครั้ง กระบวนการนี้จะทำซ้ำจนกว่า model จะไม่มีอะไรต้องทำต่อและสร้างคำตอบสุดท้ายออกมา
loop ดังกล่าวคือแนวคิดหลักของ agent และเป็น loop แบบเดียวกันไม่ว่า agent จะอยู่ในแอปแชทหรือใน terminal สำหรับวิธีการเชื่อมต่อเครื่องมือเข้ากับ loop นี้ในรูปแบบมาตรฐาน connecting tools through the Model Context Protocol เป็นเนื้อหาที่ควรศึกษาต่อ และสำหรับฝั่ง model running the model itself on your own hardware จะช่วยเติมเต็มข้อมูลอีกครึ่งหนึ่ง
The tool set is the point, and the danger
เครื่องมือคือสิ่งที่ทำให้ OpenClaw ทรงพลัง เครื่องมือที่รัน shell command, เครื่องมือที่ควบคุม browser, เครื่องมือที่อ่านและเขียนไฟล์ หากให้ loop ข้างต้นเข้าถึงเครื่องมือเหล่านี้ มันจะสามารถทำได้เกือบทุกอย่างที่คุณทำได้ผ่านคีย์บอร์ด ความสามารถนี้คือจุดขายหลักของผลิตภัณฑ์ และก็เป็นความเสี่ยงหลักเช่นกัน
Agent ที่สามารถรันคำสั่งใดก็ได้ตามคำสั่งที่ได้รับจากแอปแชท ถือเป็นพื้นที่การโจมตี (attack surface) ที่กว้างมาก คำสั่งที่ไม่เหมาะสม, การโจมตีแบบ prompt-injection ที่ซ่อนอยู่ในหน้าเว็บที่เครื่องมือ browser เข้าไปเยี่ยมชม หรือ bug อย่างช่องโหว่ในเดือนมีนาคม 2026 สามารถเปลี่ยนคำสั่ง "อ่านปฏิทินของฉัน" เป็น "ลบไฟล์ของฉัน" ได้ ดังนั้นการกำหนดขอบเขตจึงไม่ใช่ทางเลือกเสริม แต่เป็นสิ่งที่จำเป็น ต้องรัน agent ในฐานะ user ที่ไม่มีสิทธิ์พิเศษ (unprivileged user) และไม่มี sudo เพื่อไม่ให้การถูกเจาะระบบสามารถยกระดับสิทธิ์ได้ (escalate) ควรใช้การอนุมัติ (approval step) สำหรับเครื่องมือที่อันตราย เพื่อให้ agent สอบถามก่อนดำเนินการที่อาจสร้างความเสียหาย และควรทำ sandbox สำหรับการรันเครื่องมือเพื่อจำกัดขอบเขตหากคำสั่งทำงานผิดพลาด นอกจากนี้ควรแยก API key ของ model ออกจากกันเพื่อป้องกันไม่ให้ข้อมูลรั่วไหลจนผู้โจมตีเข้าถึงบัญชีของคุณได้
ก่อนที่คุณจะเปิดใช้งานส่วนใดก็ตามที่รัน shell commands โปรดดำเนินการตามขั้นตอนพื้นฐานอย่างรอบคอบ คุณสามารถสร้างรายการตรวจสอบ (checklist) สำหรับเครื่องของคุณได้ที่นี่ และปฏิบัติตามตั้งแต่ต้นจนจบ:
รายละเอียดเกี่ยวกับการใช้งาน unprivileged-user มีอยู่ใน running services as an unprivileged user และขั้นตอนการตั้งค่าอย่างปลอดภัยแบบเต็มรูปแบบสำหรับโปรเจกต์จริงมีอยู่ใน running OpenClaw safely on a VPS
Memory as plain files
คนส่วนใหญ่คาดหวังว่าหน่วยความจำของ agent จะต้องอยู่ใน database แต่ OpenClaw ไม่ได้ใช้เช่นนั้น มันเก็บหน่วยความจำในรูปแบบ Markdown files บน disk ซึ่งเป็นทางเลือกที่ควรนำไปใช้ตาม
ไฟล์มีความเรียบง่าย ไม่ต้องมีการทำ schema migration, ไม่ต้องมี service ที่ต้องคอยรัน และไม่ต้องเรียนรู้ภาษา query นอกจากนี้ยังสามารถตรวจสอบได้ คุณสามารถเปิดโฟลเดอร์เพื่ออ่านสิ่งที่ agent รับรู้เกี่ยวกับคุณ, แก้ไขบันทึกที่ผิดพลาดโดยการแก้ไขไฟล์ หรือลบความจำโดยการลบไฟล์ทิ้ง และไฟล์เหล่านี้ยังสามารถเคลื่อนย้ายได้ง่าย เพราะการย้าย agent ไปยัง server ใหม่ทำได้เพียงแค่การคัดลอก directory สำหรับ agent ส่วนบุคคลที่ใช้งานคนเดียว การใช้โฟลเดอร์เก็บไฟล์ข้อความนั้นเพียงพอแล้ว และช่วยให้ระบบทั้งหมดจัดการได้ง่าย
Skills: a portable way to add abilities
นอกเหนือจากเครื่องมือที่มีมาให้แล้ว OpenClaw ยังใช้รูปแบบ skill ที่เคลื่อนย้ายได้ เพื่อให้ชุมชนสามารถขยายความสามารถของมันได้โดยไม่ต้องแก้ไข core หลัก skill คือชุดคำสั่งที่รวมกันเป็นหนึ่งเดียว และบางครั้งอาจมี code ที่สอนงานใหม่ๆ ให้แก่ agent โดย agent จะโหลด skill ขึ้นมาเมื่อต้องทำงานนั้นๆ
คุณค่าของรูปแบบนี้คือความสามารถต่างๆ สามารถแบ่งปันกันได้ หากมีคนเขียน skill สำหรับงานเฉพาะทางและเผยแพร่ออกมา ผู้อื่นก็สามารถนำไปใช้งานได้ทันที หากคุณสร้าง agent ของตัวเอง การกำหนดรูปแบบ extension ที่ชัดเจนและขนาดเล็กตั้งแต่เนิ่นๆ จะช่วยป้องกันไม่ให้คุณต้องเขียนความสามารถทุกอย่างลงใน core ในภายหลัง
Bring your own model
OpenClaw เป็นแบบ model-agnostic คือไม่ขึ้นกับ model ใด model หนึ่งโดยเฉพาะ มันไม่ได้มาพร้อมกับ language model ของตัวเอง แต่จะเชื่อมต่อกับ model ที่คุณเลือก ซึ่งอาจเป็น hosted API หรือ model ที่คุณรันเอง
การแยกส่วนนี้มีความสำคัญต่อต้นทุน, ความเป็นส่วนตัว และการควบคุม การใช้ hosted API จะให้ model ที่ทรงพลังที่สุดโดยไม่ต้องจัดการ hardware แต่จะมีค่าใช้จ่ายตามจำนวน token และ prompt ของคุณจะถูกส่งออกจาก server ส่วนการใช้ self-hosted model (เช่น การรันด้วย Ollama) จะเก็บทุกข้อความไว้ในเครื่องของคุณเอง โดยมีต้นทุนเพียงค่า hardware และค่าไฟ แต่จะได้ model ที่มีขนาดเล็กกว่าหรือทำงานช้ากว่า หลายคนเลือกใช้ทั้งสองแบบผสมกัน หากคุณต้องการความเป็นส่วนตัวสูงสุด self-hosting the model on your VPS คือส่วนที่จะปิดช่องว่างสุดท้ายนี้ และ Hermes Agent เป็น agent แบบ self-hosted อีกตัวที่ควรนำมาเปรียบเทียบ
Should you build one?
คุณสามารถสร้างสิ่งเหล่านี้ขึ้นมาเองได้ ส่วนประกอบต่างๆ ไม่ใช่เรื่องแปลกใหม่: มีทั้ง daemon, ตัวเชื่อมต่อแชท, loop ของ model และเครื่องมือ, โฟลเดอร์ Markdown และรูปแบบ plugin การเข้าใจสิ่งเหล่านี้มีประโยชน์อย่างยิ่ง เพราะมันจะช่วยให้คุณเข้าใจการทำงานของ agent ทุกตัวที่คุณจะใช้งาน และบอกให้ทราบว่าจุดอันตรายอยู่ที่ใด
แต่สำหรับคนส่วนใหญ่ คำตอบที่ตรงไปตรงมาคือ การนำของจริงมาใช้งานและเสริมความปลอดภัย (harden) จะดีกว่าการสร้างขึ้นมาใหม่ OpenClaw ได้แก้ปัญหาเรื่องตัวเชื่อมต่อ, loop และรูปแบบ skill ไว้แล้ว และยังผ่านการตรวจสอบด้านความปลอดภัยมาแล้วด้วย ความพยายามของคุณควรนำไปใช้กับส่วนที่คุณต้องรับผิดชอบเอง นั่นคือการตั้งค่าและการเสริมความปลอดภัยบน server ของคุณเอง จงสร้างตัวเล็กๆ เพื่อการเรียนรู้ และใช้งานตัวจริงที่ถูกป้องกันไว้อย่างแน่นหนา
พื้นฐานทั่วไปสามารถศึกษาได้จาก building your own AI agent on a VPS และ building an agent with Claude จะแสดงแนวคิดเดียวกันโดยใช้ model เฉพาะเจาะจงเป็นสมอง
FAQ
การสร้าง agent แบบ OpenClaw ยากไหม?
ส่วนประกอบแต่ละส่วนไม่ยาก มีทั้ง gateway process, chat connector, loop ของ model และเครื่องมือ และโฟลเดอร์ไฟล์ ซึ่งแต่ละส่วนมีความตรงไปตรงมาในตัวเอง ส่วนที่ยากคือการทำให้มันปลอดภัย Agent ที่รัน shell commands จากข้อความแชทถือเป็นพื้นที่เสี่ยงด้านความปลอดภัยที่ร้ายแรง การจัดการเรื่อง sandbox, การกำหนดสิทธิ์ (permissions) และการตั้งค่า unprivileged-user ให้ถูกต้องนั้นต้องใช้ความพยายามมากกว่าการเชื่อมต่อฟีเจอร์ต่างๆ เข้าด้วยกัน
ทำไม OpenClaw ถึงเก็บหน่วยความจำในรูปแบบ Markdown files แทนที่จะเป็น database?
เพราะสำหรับ agent ส่วนบุคคลที่ใช้งานคนเดียว ไฟล์นั้นเพียงพอและเรียบง่ายกว่ามาก ไม่ต้องมี service database ให้รัน, หน่วยความจำสามารถอ่านและแก้ไขด้วยมือได้ง่าย และการย้าย agent ไปยัง server อื่นก็เพียงแค่การคัดลอก directory Database จะมีความจำเป็นเมื่อระบบมีขนาดใหญ่ขึ้นเท่านั้น ไม่ใช่ในกรณีนี้
ส่วนที่อันตรายที่สุดของ personal AI agent คืออะไร?
คือเครื่องมือที่ทำให้มันลงมือทำสิ่งต่างๆ ได้: การรัน shell commands, การควบคุม browser และการเขียนไฟล์ สิ่งเหล่านี้คือเหตุผลที่ต้องสร้างมันขึ้นมา และเป็นเหตุผลที่มันสามารถทำอันตรายต่อคุณได้ เหตุการณ์ด้านความปลอดภัยของ OpenClaw ในเดือนมีนาคม 2026 ที่มี 9 ช่องโหว่ภายใน 4 วัน (รวมถึงช่องโหว่ระดับวิกฤตคะแนน 9.9) เป็นข้อพิสูจน์ที่ชัดเจนที่สุดว่าต้องจัดการกับชั้นของเครื่องมืออย่างระมัดระวัง: จงรันในฐานะ unprivileged user, กำหนดการอนุมัติสำหรับการกระทำที่ทำลายล้าง และทำ sandbox สำหรับการรันคำสั่ง
ฉันจำเป็นต้องมี language model ของตัวเองเพื่อสร้างมันไหม?
ไม่จำเป็น Agent อย่าง OpenClaw เป็นแบบ model-agnostic ดังนั้นคุณสามารถเชื่อมต่อกับ model ใดก็ได้ที่คุณเลือก ซึ่งอาจเป็น hosted API สำหรับ model ที่ทรงพลังที่สุด หรือเป็น model ที่คุณรันเองเพื่อความเป็นส่วนตัวสูงสุด การรันเองด้วย Ollama จะช่วยให้ทุกข้อความอยู่ใน server ของคุณเอง แต่ต้องแลกมาด้วยการใช้ model ที่มีขนาดเล็กกว่า