- NanoClaw คือ ผู้ช่วย AI ส่วนตัวที่ขับเคลื่อนด้วย Claude ซึ่งทำงานบน Apple Container โดยเป็นระบบน้ำหนักเบาที่มีโครงสร้างแบบโปรเซสเดียวและประกอบด้วยไฟล์เพียงไม่กี่ไฟล์
- รองรับการ แยกคอนเทนเนอร์ตามแต่ละกลุ่ม เพื่อแยกประวัติการสนทนาและระบบไฟล์ พร้อมรองรับ การส่งข้อความผ่าน WhatsApp, งานตามกำหนดเวลา, การเข้าถึงเว็บ และอื่น ๆ
- โดยไม่ต้องมีไฟล์ตั้งค่า Claude Code จะช่วยแนะนำการติดตั้งและการปรับแต่ง และผู้ใช้สามารถแก้โค้ดได้โดยตรงเพื่อปรับให้เหมาะกับตนเอง
- ฟีเจอร์ใหม่ ๆ ขยายผ่านไฟล์ ‘สกิล (Skill)’ แทนการเพิ่มโค้ดโดยตรง และมีตัวอย่างคำขอขยายอย่าง
/add-telegram, /convert-to-docker เป็นต้น
- ให้ความสำคัญกับ โครงสร้างความปลอดภัยที่เข้าใจได้และความเรียบง่าย แทนเฟรมเวิร์กที่ซับซ้อน จึงเป็นฐานสำหรับนักพัฒนาเดี่ยวหรือสตาร์ตอัปในการสร้างผู้ช่วย AI อย่างปลอดภัย
ภาพรวมโปรเจ็กต์
- NanoClaw คือ ผู้ช่วย Claude ส่วนตัว ที่ทำงานในสภาพแวดล้อม Apple Container โดยออกแบบมาให้เน้นความเบาและความปลอดภัย
- ทำงานบนโปรเซส Node.js เดียว และแต่ละเอเจนต์ใช้ระบบไฟล์ที่ถูกแยกภายใน ลินุกซ์คอนเทนเนอร์
- โค้ดเบสมี TypeScript ราว 500 บรรทัด และอธิบายว่าผู้ใช้สามารถ เข้าใจโครงสร้างทั้งหมดได้ภายใน 8 นาที
- เปิดเผยภายใต้สัญญาอนุญาต MIT และมี Star บน GitHub มากกว่า 500 รายการ
ปรัชญาการออกแบบ
- ขนาดที่เข้าใจได้: ใช้โครงสร้างแบบโปรเซสเดียวโดยไม่มีไมโครเซอร์วิส คิวข้อความ หรือ abstraction ที่ซับซ้อน
- ความปลอดภัยผ่านการแยกสภาพแวดล้อม: เข้าถึงได้เฉพาะไดเรกทอรีที่เมานต์ไว้อย่างชัดเจน และคำสั่ง Bash ก็รันได้เฉพาะภายในคอนเทนเนอร์เท่านั้น
- เน้นผู้ใช้คนเดียว: ไม่ใช่เฟรมเวิร์ก แต่เป็นซอฟต์แวร์ที่ปรับให้เหมาะกับผู้ใช้รายบุคคล ซึ่งสามารถ fork แล้วแก้ไขได้โดยตรง
- แก้โค้ดแทนการตั้งค่า: ลดการใช้ไฟล์ตั้งค่าให้เหลือน้อยที่สุด และทำพฤติกรรมที่ต้องการผ่านการเปลี่ยนโค้ด
- แนวทางแบบ AI-native: การติดตั้ง ดีบัก และมอนิเตอร์ ทำผ่านอินเทอร์เฟซสนทนา Claude Code ทั้งหมด
- การขยายแบบอิงสกิล: การเพิ่มฟังก์ชันจัดการผ่านไฟล์สกิลในไดเรกทอรี
.claude/skills แทนการแก้โค้ด
ฟีเจอร์หลัก
- WhatsApp I/O: ส่งข้อความคุยกับ Claude ได้โดยตรงจากโทรศัพท์
- การแยกคอนเท็กซ์ตามกลุ่ม: แต่ละกลุ่มมีหน่วยความจำ
CLAUDE.md และระบบไฟล์คอนเทนเนอร์ของตัวเอง
- ช่องทางหลัก: ช่องทางส่วนตัวสำหรับการจัดการ ซึ่งแยกจากกลุ่มอื่นอย่างสมบูรณ์
- งานตามกำหนดเวลา: รันงานเป็นระยะและส่งข้อความอัตโนมัติ
- การเข้าถึงเว็บ: รองรับการค้นหาและการดึงเนื้อหา
- การเชื่อมต่อแบบเลือกใช้: สามารถเชื่อมต่อบริการภายนอกอย่าง Gmail ผ่านสกิล เช่น
/add-gmail
การปรับแต่ง
- สามารถแก้ไขได้โดยตรงผ่านการสนทนากับ Claude Code โดยไม่ต้องมีไฟล์ตั้งค่า
- ตัวอย่าง: “เปลี่ยนคำทริกเกอร์เป็น @Bob”, “ทำให้คำตอบสั้นลง”, “บันทึกสรุปการสนทนาทุกสัปดาห์” เป็นต้น
- คำสั่ง
/customize รองรับการปรับแก้แบบเป็นขั้นตอน
- เนื่องจากโค้ดเบสมีขนาดเล็ก Claude จึงสามารถแก้ไขได้โดยตรงอย่างปลอดภัย
แนวทางการขยายและการมีส่วนร่วม
- ฟีเจอร์ใหม่จะ ไม่เพิ่มเข้ามาโดยตรงผ่าน PR แต่ให้มาในรูปแบบสกิล
- ตัวอย่าง: ขยายช่องทางการสื่อสารด้วย
/add-telegram, /add-slack, /add-discord เป็นต้น
- เปลี่ยนจาก Apple Container เป็น Docker ด้วย
/convert-to-docker
- รองรับ Windows บนพื้นฐาน WSL2 ด้วย
/setup-windows
- เพิ่มฟังก์ชันสรุปและบีบอัดเซสชันด้วย
/add-clear
- ผู้มีส่วนร่วมสามารถใช้สกิลเพื่อแปลง fork ของตนเอง แล้วแชร์กลับเข้าสู่โปรเจ็กต์ได้
ความต้องการของระบบและโครงสร้าง
- ต้องใช้ macOS Tahoe(26) ขึ้นไป, Node.js 20+, Claude Code, และ Apple Container
- ลำดับการทำงานของสถาปัตยกรรม:
WhatsApp (baileys) → SQLite → Polling loop → Container (Claude Agent SDK) → Response
- โครงสร้างไฟล์หลัก:
src/index.ts: แอปหลักและการเชื่อมต่อ WhatsApp
src/container-runner.ts: จัดการการรันคอนเทนเนอร์
src/task-scheduler.ts: ฟังก์ชันงานตามกำหนดเวลา
src/db.ts: การเชื่อมต่อ SQLite
groups/*/CLAUDE.md: เก็บหน่วยความจำแยกตามกลุ่ม
สรุป FAQ
- เหตุผลที่ใช้ WhatsApp: เพราะผู้พัฒนาใช้ WhatsApp เป็นการส่วนตัว และสามารถเปลี่ยนเป็นช่องทางอื่นผ่านสกิลได้
- เหตุผลที่เลือก Apple Container: มีมากับ macOS น้ำหนักเบา และรวดเร็ว
- รันบน Linux ได้หรือไม่: สามารถพอร์ตได้ภายในราว 30 นาทีผ่าน Claude Code
- ความปลอดภัย: อิงการแยกคอนเทนเนอร์ จึงไม่สามารถเข้าถึงนอกเหนือจากส่วนที่เมานต์ไว้อย่างชัดเจนได้
- เหตุผลที่ไม่มีไฟล์ตั้งค่า: เพื่อหลีกเลี่ยงการกระจายตัวของการตั้งค่า และคงการปรับแต่งที่ยึดโค้ดเป็นศูนย์กลาง
- วิธีดีบัก: ถาม Claude Code โดยตรงเพื่อแก้ปัญหา
- การเปลี่ยนแปลงที่อนุญาต: อนุญาตเฉพาะการแก้ความปลอดภัย บั๊ก และการปรับปรุงค่าพื้นฐานเท่านั้น
สัญญาอนุญาต
- เผยแพร่ภายใต้ MIT License
- ทุกคนสามารถแก้ไขและเผยแพร่ต่อได้อย่างอิสระ
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
การเอาสิ่งนี้ไปรันจริง ๆ ให้ความรู้สึกว่าอันตรายมาก
ตอนนี้อาจดูโอเค แต่ถ้าเกิดปัญหาขึ้นมาครั้งเดียวก็จบเลย
การเอาอะไรแบบ Claw ไปเชื่อมกับพื้นที่สนทนาที่ใช้ร่วมกัน ฟังดูเหมือนการทดลองเสี่ยงอันตรายแบบตรงตัว
พวก black hat ก็กำลังจับตาดูอยู่แล้ว และสุดท้ายคงมีคนเจ็บหนักกันอีกเยอะ
ตอนนี้เราอาจกำลังอยู่ในยุคทองที่ได้ใช้ LLM ราคาถูกโดยไม่มีโฆษณาก็ได้
ช่วงนี้ผมก็ใช้มันถามเปรียบเทียบหรือขอใบเสนอราคาโดยตรงจาก AI เพราะผลการค้นหาทุกวันนี้มันกลายเป็นสแปมไปมากแล้ว
แต่ก็กลัวว่าอีกไม่นานเราจะได้คำตอบที่ปนทั้งโฆษณาและคำแนะนำแบบเสียเงิน
ทุกวันนี้เวลาเผยแพร่โค้ดที่ผมทำ ผมพยายามเขียนเอกสารหรือ README ด้วยมือตัวเอง
เอกสารที่มีกลิ่นว่า LLM เขียน ต่อให้โปรเจ็กต์ดีแค่ไหนก็น่าสนใจน้อยลง
มันไม่รู้สึกถึงความจริงใจที่อยากสื่อสารกับคนอ่าน
ต่อให้มีพิมพ์ผิดบ้าง ผมก็คิดว่าคำอธิบายแบบมนุษย์ยังดีกว่า
อนึ่ง หลังจากคอมเมนต์ของผม ผู้เขียนก็แก้ README แล้ว
ลิงก์คอมมิตที่แก้ไข
ผมแก้ส่วนที่มีกลิ่น AI ตามที่คุณทัก และตอนนี้มันดีขึ้นมาก
โค้ดนี้ไม่ใช่งานชิ้นเอก แต่เป็นโค้ดเชิงปฏิบัติที่มีประโยชน์กับผม
หวังว่ามันจะช่วยคนอื่นเป็นข้อมูลอ้างอิงได้ด้วย
ผมทำมันช่วงสุดสัปดาห์โดยใส่ใจกับโครงสร้างความปลอดภัยพอสมควร แต่ตอนนี้ต้องปิดงานก่อนเลยปล่อยในสภาพที่ยังหยาบ ๆ
ถ้าอ่าน README จะเข้าใจบริบทของโปรเจ็กต์ได้ดีขึ้น
ใช้ AI กับโค้ดน่ะได้ แต่ข้อความแนะนำควรให้คนเขียนเอง
เมื่อก่อนตัวโค้ดเองเป็น ‘หลักฐานของความพยายาม’ แต่ตอนนี้มันสร้างได้ง่ายเกินไปจนความหนักแน่นนั้นหายไป
ลิงก์เธรดที่เกี่ยวข้อง
ข้อดีอย่างหนึ่งของ Clawdbot คือมันอนุญาตทุกสิทธิ์
แต่ก็ยังสงสัยว่าการกระทำภายนอกแบบนี้ถูก sandbox ไว้อย่างไร
Apple Container ค่อนข้างมั่นคง เพราะแต่ละคอนเทนเนอร์จับคู่แบบ 1:1 กับ lightweight VM
ตัวอย่าง sandbox สำหรับรันโค้ดทั่วไปที่ใช้แนวคิดนี้คือ instavm/coderunner
และยังเชื่อมกับ AI อย่าง Claude Code ได้ด้วย
Clawdbot ให้ความรู้สึกเหมือนมีนักศึกษาปีสอง 100 คนมาเคาะประตูขอสิทธิ์ root
โปรเจ็กต์นี้ดูเท่มาก
ช่วงนี้ผมสงสัยอยู่พอดีว่าใช้ Agent SDK ได้กับการสมัคร Claude Pro/Max ไหม
ตาม เอกสาร Quickstart อย่างเป็นทางการ ดูเหมือนว่าจะได้
เขียนไว้ว่าหลังติดตั้งแล้วล็อกอินในเทอร์มินัล ตัว SDK จะใช้การยืนยันตัวตนอัตโนมัติ
หมายความว่าน่าจะใช้ SDK โดยตรงกับบัญชีสมัครสมาชิกไม่ได้
อยากให้ Anthropic ชี้แจงส่วนนี้ให้ชัด
เพราะใช้ Agents SDK อยู่ ผมจึงคิดว่าคงไม่ผิด TOS
แต่ผมไม่รู้วิธีคง session การยืนยันตัวตนไว้ในคอนเทนเนอร์ ก็เลยใช้วิธีแอบง่าย ๆ ด้วยการinject OAuth token ผ่าน environment variable
นี่คือช่องโหว่ด้านความปลอดภัยเพียงจุดเดียว ผู้ใช้ไม่หวังดีอาจขโมยโทเค็นได้ผ่าน prompt injection
ถ้าใครรู้วิธีเชื่อม session auth ให้ถูกต้องในคอนเทนเนอร์ รบกวนช่วยแนะนำด้วย
ถ้าตามเอกสารนี้ก็ดูเหมือนว่าสามารถสร้างแอปแบบเอเจนต์ด้วยบัญชีสมัครสมาชิกได้อย่างอิสระ
คนที่ไม่ใช่สายเทคนิคมีแนวโน้มจะมั่นใจในโมเดลมากเกินไปเพราะเห็นแค่ว่าอัตราการหลอนลดลง
แต่ความเสี่ยงที่แท้จริงคือการโจมตีด้วยพรอมป์ต์อันตราย
เหมือนยุคแรกของบัตรเครดิต ตอนนี้แค่ยังไม่เห็นความเสียหายเท่านั้น
กว่าจะเกิดคดีหลาย ๆ กรณีขึ้น คนถึงจะเริ่มตระหนัก
ผมหวังว่าจะมีคนทำเวอร์ชันที่ปลอดภัยกว่านี้ออกมา
OpenClaw มีประโยชน์ แต่ก็ชวนกลัวในเวลาเดียวกัน
เพราะงั้น Mac mini ของผมตอนนี้เลยยังปิดอยู่
น่าสนใจที่เลือกใช้Apple Containerแทน Docker
น่าจะเพื่อประหยัดทรัพยากรบน Mac Mini
แต่ก็สงสัยเหมือนกันว่ามันจะจำกัด Linux tooling มาตรฐานหรือเปล่า
ชอบไอเดียของ OpenClaw เวอร์ชันย่อส่วน
โค้ดดูมีราว ๆ 2500 บรรทัด และโครงสร้าง Apple Container ก็น่าสนใจ
ใน Quick Start เขียนว่า
git clone https://github.com/anthropics/nanoclaw.gitแต่รีโพนั้นไม่มีอยู่จริง เลยสงสัยว่าเป็นโปรเจ็กต์ทางการของ Anthropic หรือเปล่า
หรือว่า README ถูกสร้างขึ้นแบบหลอน ๆ
ลิงก์คอมมิตที่เกี่ยวข้อง
ผมเอา Claude Code ไปต่อกับ Obsidian vault และทำให้ตั้งงาน cron ผ่าน WhatsApp ได้
มันเรียบง่ายกว่า OpenClaw ขนาดใหญ่เยอะ และอยู่ในขอบเขตที่ผมเข้าใจได้ เลยสบายใจกว่า
หวังว่าคนอื่นจะใช้เป็นแค่งานอ้างอิงเท่านั้น
ช่วงนี้พอเห็นแอปที่ vibe-coded ผมก็มักจะไปสร้างอะไรคล้าย ๆ กันเองด้วย Claude Code
ทำเองให้ตรงกับความต้องการยังมีประสิทธิภาพกว่าการใช้ของคนอื่น
มูลค่าของไลบรารีภายนอกจึงลดลง
ความเสี่ยงจาก supply chain attack หรือการเปลี่ยนไลเซนส์ก็หายไปด้วย
นี่คือยุคที่โค้ดเป็นทั้งเอกสารและคอนฟิกในตัวเอง
เพราะงั้นผมเลยชอบเวอร์ชันเบาและปรับเองได้แบบนี้มากกว่า OpenClaw
จะแยก fork ไปใช้เป็นจุดตั้งต้น หรือให้ Claude ใช้เป็นข้อมูลอ้างอิง ก็ทำเวอร์ชันของตัวเองได้ทันที