ผมสร้างเดสก์ท็อปเพ็ตด้วย Claude Code Hook
(github.com/IMMINJU)ที่บริษัทผมทำงานโดยเปิด Claude Code หลายเซสชันพร้อมกันบ่อย ๆ แต่ก็มักพลาดว่าเซสชันไหนกำลังรออินพุตอยู่ เพราะอยู่ในออฟฟิศเลยเปิดเสียงไม่ได้ด้วย
ใน Claude Code สามารถใช้ Hook เพื่อรันคำสั่งภายนอกก่อนและหลังการเรียกใช้เครื่องมือได้ ซึ่งปกติมักใช้สำหรับ lint หรือ logging แต่ผมลองเอามาใช้ทำอะไรที่ต่างออกไปหน่อย
ผมทำวิดเจ็ตที่รับเหตุการณ์จาก Hook แล้วแสดงเป็นตัวละครอีโมจิลอยอยู่บนเดสก์ท็อป ถ้ารันหลายเซสชันก็จะติดตามแยกแต่ละอันและแสดงเรียงกันให้เห็น
พอแมปสถานะกับอีโมจิแล้วมันมีทั้งสีหน้ายิ้ม งง และง่วง ดูสนุกดี เลยตัดสินใจเรียกมันว่าเพ็ต
Claude Code hooks → claude-pet --hook → TCP(:19876) → Tauri(Rust) → WebView
Hook จะสร้างและปิดโปรเซสใหม่ในแต่ละอีเวนต์ ทำให้เก็บสถานะค้างไว้ไม่ได้ ดังนั้นเลยออกแบบให้ฝั่งแอปมี TCP server แล้วให้ Hook ยิง JSON เข้ามาทุกครั้งที่เกิดเหตุการณ์ สร้างด้วย Tauri 2 + Rust ทำให้ไบนารีมีขนาดราว 8MB และถ้าติดตั้งด้วย curl ... | sh บรรทัดเดียว ก็จะลงทะเบียน Hook ให้อัตโนมัติด้วย
มีธีมในตัว 3 แบบ (หุ่นยนต์, แมว, ผลไม้) และยังทำธีมแบบกำหนดเองด้วย JSON ได้ ตอนนี้ใช้งานบน Windows อยู่ และมีบิลด์สำหรับ macOS/Linux ด้วย แต่ยังไม่ได้ทดสอบเองโดยตรง MIT
GitHub: https://github.com/IMMINJU/claude-pet
ยินดีรับฟีดแบ็กครับ
ยังไม่มีความคิดเห็น