สวัสดีครับ ผมได้สร้างระบบเอเจนต์บนมือถือชื่อ AgentBlue ขึ้นมา

AgentBlue คือระบบอัตโนมัติ AI แบบโอเพนซอร์สที่เมื่อพิมพ์คำสั่งภาษาธรรมชาติในเทอร์มินัลแล้ว อุปกรณ์ Android จะจัดการเปิดดูแอป แตะ และพิมพ์ข้อความได้เองโดยอัตโนมัติ

วิธีการทำงาน

ระบบจะอ่าน UI tree ของหน้าจอปัจจุบันผ่าน Accessibility Service ของ Android แล้วส่งต่อให้ LLM เพื่อตัดสินใจการกระทำถัดไป จากนั้นจะวนลูป ReAct (Reasoning + Acting) นี้ซ้ำไปเรื่อย ๆ จนกว่าจะตรงตามเงื่อนไขการเสร็จสิ้น

"ช่วยค้นหาเพลง lo-fi บน YouTube ให้หน่อย"
→ แยกวิเคราะห์ UI → LLM ตัดสินใจ → CLICK "YouTube" → TYPE "lo-fi" → CLICK ค้นหา → DONE
CLI และแอป Android สื่อสารกันแบบเรียลไทม์ผ่าน Firebase Firestore ที่ทำหน้าที่เป็น relay server โดยจับคู่กันด้วยรหัสเซสชัน 8 หลักโดยไม่ต้องมีเซิร์ฟเวอร์แยกต่างหาก

คุณสมบัติหลัก

  • รองรับหลาย LLM — เลือกใช้ได้ระหว่าง OpenAI, Google Gemini, Anthropic Claude, DeepSeek
  • เทอร์มินัล REPL — เริ่มเซสชันด้วย agentblue start และส่งคำสั่งด้วยภาษาธรรมชาติ
  • การตั้งค่าระยะไกล — เปลี่ยนการตั้งค่าแอป Android จาก CLI ด้วย /setting, /model
  • ตรวจสอบสถานะแบบเรียลไทม์ — ดูความคืบหน้าของแต่ละสเต็ปได้จากเทอร์มินัลแบบสด ๆ
  • ตัวป้องกันความปลอดภัย — หยุดอัตโนมัติก่อนการกระทำที่ย้อนกลับไม่ได้ เช่น ยืนยันการชำระเงินหรือลบบัญชี
  • ตรวจจับและกู้คืนอาการค้าง — หากล้มเหลวซ้ำ ๆ บนหน้าจอเดิม จะใส่ hint เพิ่มหรือสั่ง BACK แบบบังคับ
  • ใช้งานบนอุปกรณ์โดยตรง — สามารถพิมพ์คำสั่งจากตัวอุปกรณ์ได้ผ่านปุ่มลอย โดยไม่ต้องใช้ CLI
    เริ่มต้นอย่างรวดเร็ว

วิธีใช้งาน

npm install -g @agentblue/cli
agentblue init # ตั้งค่า Firebase + เลือกภาษา (มี shared server ให้โดยค่าเริ่มต้น)
agentblue start # ออกรหัสเซสชัน → กรอกในแอป Android → เชื่อมต่อเสร็จสิ้น
แอป Android สามารถใช้งานได้ทันที เพียงอนุญาต Accessibility Service และสิทธิ์ overlay

ทำไมถึงสร้างสิ่งนี้

เครื่องมือ RPA ส่วนใหญ่ทำงานบนพื้นฐานพิกัดหน้าจอ ดังนั้นถ้าแอปอัปเดตเพียงครั้งเดียว สคริปต์ก็มักพังได้ง่าย AgentBlue ค้นหาเป้าหมายจากความหมายของ UI (ข้อความ, contentDescription, resource ID) จึงทนต่อการเปลี่ยนเลย์เอาต์ได้ดีกว่ามาก และเพราะ LLM จะตัดสินใหม่ทุกสเต็ปว่า "ต้องทำอะไรต่อ" จึงไม่จำเป็นต้องเขียนสถานการณ์ล่วงหน้าไว้ก่อน

ยินดีรับฟีดแบ็กและการมีส่วนร่วม โดยเฉพาะถ้าคุณมีแนวทางการแยกวิเคราะห์ UI ที่ดีกว่าเดิม หรือไอเดียปรับปรุงการตรวจจับอาการค้าง สามารถบอกได้ผ่าน issue, PR หรือคอมเมนต์!

ขอบคุณครับ

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

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