Gemini CLI เพิ่มฟีเจอร์ซับเอเจนต์
(developers.googleblog.com)- Gemini CLI เริ่มรองรับสถาปัตยกรรมมัลติเอเจนต์อย่างเป็นทางการ ที่สามารถมอบหมายงานซับซ้อนและงานที่ทำซ้ำให้กับ ซับเอเจนต์เฉพาะทาง
- ซับเอเจนต์แต่ละตัวทำงานในสภาพแวดล้อมแยก มี context window อิสระ, system instruction แบบกำหนดเอง และชุดเครื่องมือเฉพาะ
- สามารถกำหนด ซับเอเจนต์แบบกำหนดเอง ด้วยไฟล์ Markdown และ YAML frontmatter และแชร์กับทีมได้ทั้งในระดับ global หรือระดับโปรเจ็กต์
- สามารถ รันแบบขนาน หลายซับเอเจนต์ได้ จึงช่วยลดเวลารวมของงานหลายประเภท เช่น การวิจัยหรือรีแฟกเตอร์ ได้อย่างมาก
- นอกจากเอเจนต์ที่มีมาในตัว (generalist, cli_help, codebase_investigator) ยังสามารถมอบหมายงานอย่างชัดเจนด้วย ไวยากรณ์ @agent ทำให้เวิร์กโฟลว์การพัฒนาแบบ CLI ขยายตัวได้มากขึ้น
แนวคิดของซับเอเจนต์และประโยชน์หลัก
- ซับเอเจนต์คือ เอเจนต์เฉพาะทาง ที่ทำงานร่วมกับเซสชันหลักของ Gemini CLI เมื่อได้รับงานที่ซับซ้อน Gemini CLI จะทำหน้าที่เป็นผู้ประสานงานเชิงกลยุทธ์และมอบหมายงานย่อยให้ซับเอเจนต์ที่เหมาะสมที่สุด
- ซับเอเจนต์แต่ละตัวมี tools, MCP server, system instruction และ context window ของตนเอง และทำงานแบบแยกขาดโดยสมบูรณ์
- การทำงานทั้งหมดของซับเอเจนต์ (รวมถึงการเรียกใช้เครื่องมือหลายสิบครั้ง การค้นหาไฟล์ และการรันทดสอบ) จะถูกรวมเป็น คำตอบเดียว แล้วส่งกลับไปยังเอเจนต์หลัก
- ช่วยป้องกันไม่ให้ context window หลักเต็ม และรักษาความเร็วกับความคุ้มค่าด้านต้นทุนของการโต้ตอบในลำดับถัดไป
- ประโยชน์หลักมี 3 ข้อ:
- เอเจนต์หลักสามารถโฟกัสที่ เป้าหมายโดยรวม การตัดสินใจ และคำตอบสุดท้ายได้
- เพิ่มความเร็วในการทำงานด้วยการ รันแบบขนาน ซับเอเจนต์เฉพาะทางสำหรับงานอย่างการวิจัย การสำรวจโค้ด การวิเคราะห์ และการทดสอบ
- ซับเอเจนต์ส่งกลับเป็น สรุปหรือคำตอบที่จัดรูปแบบแล้ว จึงช่วยป้องกัน context rot และ context pollution ในเซสชันหลัก
การสร้างซับเอเจนต์แบบกำหนดเอง
- กำหนดซับเอเจนต์แบบกำหนดเองด้วย YAML frontmatter ในไฟล์ Markdown (
.md) - หากวางไว้ที่
~/.gemini/agentsจะถูกลงทะเบียนเป็น เอเจนต์ global สำหรับเวิร์กโฟลว์ส่วนตัว และหาก commit ไว้ใน.gemini/agentsของรีโพซิทอรี ก็สามารถ แชร์กับทีมในระดับโปรเจ็กต์ ได้ - สามารถรวมไฟล์นิยามเอเจนต์ไว้ในไดเรกทอรี
agents/ของ Gemini CLI extensions เพื่อ bundle เป็นส่วนหนึ่งของส่วนขยาย ได้เช่นกัน - ตัวอย่างการตั้งค่าเอเจนต์
frontend-specialist:- กำหนด
name,description,tools(read_file, grep_search, glob, list_directory, web_fetch, google_web_search),model: inheritเป็นต้น ไว้ใน frontmatter - ใน system instruction ระบุบทบาทเป็น Senior Frontend Specialist และ UI/UX Architect
- ระบุหลักการสำคัญ เช่น การออกแบบสถาปัตยกรรมแบบโมดูลาร์, การเพิ่มประสิทธิภาพบนพื้นฐาน Core Web Vitals และ การปฏิบัติตามมาตรฐานการเข้าถึง WCAG 2.1+
- แนวทางประกอบด้วยการให้ความสำคัญกับ Browser Native API ก่อน, การออกแบบคอมโพเนนต์แบบ Atomic, ฟีดแบ็กภาพตามสถานะต่าง ๆ (loading, skeleton, error, empty state, success), Progressive Enhancement และการออกแบบที่เน้นการบำรุงรักษา
- บทบาทของเอเจนต์นี้จำกัดอยู่ที่การวิเคราะห์และเสนอแนะแนวทางปรับปรุง โดย ไม่แก้ไขโค้ดโดยตรง
- กำหนด
- หากวางไฟล์ไว้ที่
.gemini/agents/frontend-specialist.mdGemini CLI จะรู้จักผู้เชี่ยวชาญใหม่รายนี้ได้ทันที
การรันแบบขนาน
- Gemini CLI รองรับ การรันซับเอเจนต์แบบขนาน ทำให้สามารถรันหลายซับเอเจนต์หรือหลายอินสแตนซ์ของซับเอเจนต์ตัวเดียวกันพร้อมกันได้
- เมื่อต้องวิจัย 5 หัวข้อที่ต่างกัน หรือรีแฟกเตอร์คอมโพเนนต์หลายตัวแยกกัน สามารถ dispatch หลายเอเจนต์พร้อมกัน เพื่อลดเวลารวมได้อย่างมาก
- ตัวอย่างคำสั่งแบบระบุชัดเจน: "Run the frontend-specialist on each package in parallel."
- ข้อควรระวัง:
- การใช้ซับเอเจนต์แบบขนานกับ งานแก้ไขโค้ดขนาดใหญ่ อาจทำให้เกิดความขัดแย้งและเสี่ยงที่เอเจนต์จะเขียนทับโค้ดของกันและกัน
- เนื่องจากคำขอถูกส่งพร้อมกันในการรันแบบขนาน จึงอาจชน ขีดจำกัดการใช้งาน (usage limits) ได้เร็วขึ้น
ซับเอเจนต์ที่มีมาในตัวและวิธีใช้งาน
- ซับเอเจนต์ที่มีมาใน Gemini CLI โดยค่าเริ่มต้นมี 3 ตัว:
- generalist: เอเจนต์อเนกประสงค์ที่เข้าถึงทุกเครื่องมือได้ เหมาะกับงานที่ใช้หลายเทิร์น เช่น batch refactoring หรือการรันคำสั่งที่ให้ผลลัพธ์จำนวนมาก (เป็นการใช้สำเนาของเอเจนต์ Gemini CLI ปกติในรูปแบบซับเอเจนต์)
- cli_help: เอเจนต์ผู้เชี่ยวชาญเกี่ยวกับ Gemini CLI โดยเฉพาะ เข้าถึงเอกสาร Gemini CLI ได้โดยตรงเพื่อตอบคำถามเกี่ยวกับฟีเจอร์ต่าง ๆ
- codebase_investigator: เชี่ยวชาญด้านการสำรวจโค้ดเบส, การทำแผนผังสถาปัตยกรรม, การวิเคราะห์สาเหตุรากของบั๊ก และการทำความเข้าใจความเชื่อมโยงของ dependency ทั่วทั้งระบบ
- Gemini CLI จะทำ auto routing ตาม description ของซับเอเจนต์ แต่ก็สามารถใช้ ไวยากรณ์ @agent เพื่อมอบหมายงานให้เอเจนต์เฉพาะตัวได้อย่างชัดเจน
- ตัวอย่าง:
@frontend-specialistขอให้รีวิวแอปและระบุจุดที่ควรปรับปรุง - ตัวอย่าง:
@generalistอัปเดต license header ทั้งโปรเจ็กต์ - ตัวอย่าง:
@codebase_investigatorทำแผนผัง authentication flow
- ตัวอย่าง:
- หากใส่ชื่อซับเอเจนต์ต่อจากสัญลักษณ์ @ งานจะถูกประมวลผลภายใน context window แบบแยก ของเอเจนต์นั้น
- หากต้องการดูซับเอเจนต์ทั้งหมดที่ตั้งค่าอยู่ในปัจจุบัน ให้รันคำสั่ง
/agentsภายใน Gemini CLI
1 ความคิดเห็น
gemini cli ขอแค่ทำงานได้ดีหน่อยก็ดีแล้ว แต่มันค้างตลอดเลย