6 คะแนน โดย GN⁺ 15 일 전 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • 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.md Gemini 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 ความคิดเห็น

 
chlrhdmltkfkd 14 일 전

gemini cli ขอแค่ทำงานได้ดีหน่อยก็ดีแล้ว แต่มันค้างตลอดเลย