สร้างเครื่องมือตรวจสอบโค้ดหลายภาษาด้วย Parallel Antigravity Agents

1. บทนำ

3072ce11df4b71eb.jpeg

ใน Codelab นี้ คุณจะได้สร้างระบบการตรวจสอบคุณภาพโค้ดแบบหลายภาษาและการแก้ไขอัตโนมัติโดยใช้การจัดระเบียบแบบหลาย Agent แบบคู่ขนานใน Antigravity แทนที่จะตรวจสอบไดเรกทอรีบริการแยกกันหลายรายการด้วยตนเองแบบเดิม คุณจะใช้เอเจนต์ย่อย AI เฉพาะทางเพื่อตรวจสอบสแต็กภาษาต่างๆ แบบคู่ขนาน

คุณจะสร้าง Agent ผู้ประสานงานเพื่อค้นหารูปแบบโปรเจ็กต์ จัดการ Subagent เพื่อดำเนินการทำ Unit Test สร้างแผนการตรวจสอบ สแกนหาการปฏิบัติตามข้อกำหนด สร้างรายงานการตรวจสอบ และปรับโครงสร้างปัญหาการเขียนโค้ดที่มีลำดับความสำคัญสูงในฐานของโค้ดโดยอัตโนมัติ

สิ่งที่คุณจะได้เรียนรู้

  • การค้นหาโปรเจ็กต์: วิธีติดตั้งใช้งาน Agent ผู้ประสานงานเพื่อทำแผนที่ไดเรกทอรีและตรวจหาภาษาโปรแกรมในสถาปัตยกรรมแบบ Microservice ที่ซับซ้อน
  • การทำงานแบบคู่ขนานที่ประสานกัน: วิธีกระจายการตรวจสอบโค้ดและการทำ Unit Test ไปยัง AI Subagent ที่เป็นอิสระและเฉพาะภาษาพร้อมกัน
  • การกำกับดูแลแบบ Human-in-the-Loop: วิธีแนะนำ Agent ผู้ประสานงานให้สร้างแผนการตรวจสอบและหยุดชั่วคราวอย่างปลอดภัยเพื่อให้คุณตรวจสอบและอนุมัติก่อนดำเนินการ
  • การแก้ไขอัตโนมัติ: วิธีติดตั้งใช้งานตัวแทนย่อยของนักพัฒนาซอฟต์แวร์เฉพาะทางเพื่อจัดระเบียบโค้ดและแก้ไขปัญหาการเขียนโค้ดและการปฏิบัติตามข้อกำหนดที่มีลำดับความสำคัญสูงโดยอัตโนมัติ
  • ลูปการยืนยัน: วิธีการยืนยันการเปลี่ยนแปลงโค้ดที่ AI สร้างขึ้นโดยการเรียกใช้ชุดทดสอบอีกครั้งโดยอัตโนมัติเพื่อให้แน่ใจว่าไม่มีการถดถอย

สิ่งที่คุณต้องมี

คุณต้องติดตั้งเครื่องมือต่อไปนี้ในเครื่องเพื่อทำ Codelab นี้

  • Google Antigravity
  • Git
  • ตั้งค่าภาษาต่อไปนี้อย่างน้อย 1 ภาษาในสภาพแวดล้อมของคุณ: Go, Python, C# / .NET, NodeJS, Java

มาเริ่มกันเลย

2. การตั้งค่าสภาพแวดล้อม

ก่อนอื่น ให้ตรวจสอบว่าคุณได้ติดตั้ง Antigravity แล้ว

จากนั้น ให้โคลน Online Boutique ซึ่งเป็นแอปพลิเคชันสาธิตของไมโครเซอร์วิสบนระบบคลาวด์

git clone https://github.com/GoogleCloudPlatform/microservices-demo.git

สร้างโปรเจ็กต์ใหม่ใน Antigravity ด้วยโค้ด ใน Antigravity ให้เลือก Create New Project ในส่วน Projects ทางด้านซ้าย

e8b14447dfcc289b.png

เลือกโฟลเดอร์ที่เก็บ

b39f0b1843ef1f3d.png

คุณเลือกDefaultโหมดสำหรับAgent Security Settingsและใช้ชื่อเดียวกันmicroservices-demoสำหรับโปรเจ็กต์ได้

3. Discovery

ในสถาปัตยกรรมแบบไมโครเซอร์วิส โดยทั่วไปแล้วฐานของโค้ดจะเกี่ยวข้องกับบริการหลายอย่างที่ครอบคลุมโฟลเดอร์หรือที่เก็บหลายรายการ รวมถึงสแต็กการเขียนโปรแกรม ซึ่งรวมถึงแอปพลิเคชันเดโม Online Boutique ด้วย

มาดูเลย์เอาต์ของโปรเจ็กต์กันก่อนเปิดตัวเอเจนต์ ในขั้นตอนแรกนี้ คุณจะติดตั้งใช้งานเอเจนต์ตัวประสานงานด้วย Antigravity ซึ่งจะค้นพบไมโครเซอร์วิสต่างๆ ในภาษาต่างๆ ภายใต้ src/ และประสานงานเอเจนต์ย่อยเฉพาะภาษาเพื่อทำงานในแต่ละไมโครเซอร์วิสในขั้นตอนต่อๆ ไป

ก่อนอื่นเรามาขอให้ Agent ผู้ประสานงานสำรวจฐานของโค้ดและทำแผนที่ว่ามีบริการใดบ้างในไดเรกทอรีใด และใช้ภาษาใด

ใน Antigravity ให้เริ่มการสนทนาใหม่ในโปรเจ็กต์ microservices-demo ที่คุณสร้างไว้ก่อนหน้านี้ สำหรับโมเดล คุณสามารถใช้โมเดล Gemini ล่าสุดที่มีระดับการคิดปานกลางได้

1a88687c5fe37b04.png

ลองใช้พรอมต์นี้

Identify all the microservices located under the src/ directory,
detect which programming language each service is written in, and
output the list as a clean markdown table showing: Service Name,
Directory, and Primary Language.

ในท้ายที่สุด Antigravity ควรแสดงตารางบริการและภาษาหลักของบริการเหล่านั้น ซึ่งมีลักษณะคล้ายกับตารางต่อไปนี้

2e37b2e607596573.png

4. เลือกภาษา

เมื่อแมปโค้ดเบสแล้ว คุณจะต้องเลือกภาษาที่ต้องการใช้ คุณต้องตรวจสอบว่ามีคอมไพเลอร์/เครื่องมือที่จำเป็นสำหรับภาษาที่คุณเลือก (เช่น dotnet สำหรับ C#, javac สำหรับ Java ฯลฯ)

เมื่อเลือกภาษาที่ต้องการใช้แล้ว สิ่งสำคัญคือต้องยืนยันความสมบูรณ์ของโค้ดเบสปัจจุบันโดยการเรียกใช้การทดสอบหน่วยที่เกี่ยวข้องสำหรับภาษานั้น

คุณสามารถใช้เอเจนต์ย่อยแบบขนานเฉพาะทางเพื่อเรียกใช้ชุดการทดสอบในแต่ละภาษา ซึ่งแสดงให้เห็นถึงความสามารถหลักของเวิร์กโฟลว์แบบหลาย Agent นั่นคือการเรียกใช้การทดสอบที่แยกกันพร้อมกันในพื้นที่ทํางานที่แยกต่างหากสําหรับแต่ละภาษา

ปรับและเรียกใช้พรอมต์ต่อไปนี้สำหรับสภาพแวดล้อมของคุณ

I have [C#, Python, Go, Java, Node.js] setup locally. 
Run the unit tests for services in these languages 
in parallel subagents and report back in a clean markdown 
on their pass/fail status.

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

a3c1834909975020.png

เมื่อดำเนินการกับ Subagent ทั้งหมดเสร็จแล้ว คุณจะได้รับรายงานที่ดูดีเกี่ยวกับการทดสอบหน่วย ซึ่งคล้ายกับรายงานต่อไปนี้

e8ce8e16f195ea8c.png

5. วางแผนการตรวจสอบ

แผน

ในเวิร์กโฟลว์ที่ซับซ้อน การเปิดตัวการเปลี่ยนแปลงโค้ดโดยไม่มีแผนอาจทำให้เกิดความขัดแย้งได้ เราต้องการสร้างพิมพ์เขียวที่มีโครงสร้างและโปร่งใสเกี่ยวกับสิ่งที่เราตั้งใจจะตรวจสอบ คุณจะขอให้ตัวแทนผู้ประสานงานออกแบบแผนการตรวจสอบที่มีการตรวจสอบคุณภาพโค้ด การจัดการข้อยกเว้น การตรวจสอบความถูกต้องของคําค้นหา และอื่นๆ

เพื่อให้มั่นใจว่ามีการกำกับดูแลโดยเจ้าหน้าที่ (Human-in-the-Loop) ผู้ประสานงานจะเขียนแผนไปยังอาร์ติแฟกต์และหยุดชั่วคราวทันทีเพื่อให้คุณตรวจสอบ

ลองใช้พรอมต์นี้เพื่อสร้างแผนการตรวจสอบ

We want to audit these microservices for code quality, 
exception handling and database query formatting standards 
for the languages I have set up locally. Design an audit plan 
detailing what you will check and save it as an Audit Plan artifact.
Do not execute the audit yet. Stop after writing the plan and wait
for my instructions.

คุณควรเห็นอาร์ติแฟกต์แผนการตรวจสอบในแชท

a7eb6b75b28fd788.png

ตรวจสอบ

ตอนนี้คุณจะตรวจสอบแผนการตรวจสอบที่สร้างขึ้นเพื่อให้แน่ใจว่าแผนดังกล่าวจะกำหนดเป้าหมายไปยังไฟล์และมาตรฐานที่ถูกต้องได้แล้ว หรือจะเพิ่มข้อจำกัดที่กำหนดเอง (เช่น การตรวจสอบความคิดเห็นในบรรทัดหรือคู่มือการจัดรูปแบบ) ก่อนที่จะอนุมัติให้ดำเนินการต่อก็ได้

คลิกแผนการตรวจสอบที่สร้างขึ้น แล้วคุณจะเห็นแผนโดยละเอียด

9b36c0ca827fdc53.png

ไม่บังคับ: คุณสามารถเพิ่มความคิดเห็นในแผนได้ (เช่น "ตรวจสอบว่ามีการบันทึกวิธีสาธารณะทั้งหมดอย่างดี") หากต้องการเปลี่ยนแปลงและทำซ้ำจนกว่าจะพอใจกับแผน

6. ดำเนินการตรวจสอบ

ดำเนินการ

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

ลองใช้พรอมต์ต่อไปนี้

Execute the audit plan by spawning the parallel language subagents.
Once they finish scanning, collect their findings into an audit 
report artifact, sorted by language and then priority. Include the 
file paths, line ranges, snippets, and explanation of why it is a 
finding. Stop after writing the report.

คุณควรเห็นตัวแทนหลายรายอีกครั้งโดยทำดังนี้

9c282924eb33cc34.png

ตรวจสอบว่าคุณได้ดูผู้รับช่วงแต่ละรายและให้สิทธิ์ที่จำเป็นต่อการดำเนินการตรวจสอบ ในท้ายที่สุด คุณควรเห็นอาร์ติแฟกต์รายงานการตรวจสอบ

6706295f5cf7292b.png

ตรวจสอบ

เมื่อเปิดรายงานการตรวจสอบแล้ว คุณควรเห็นผลการตรวจสอบโดยละเอียดสำหรับแต่ละภาษาด้วย ตัวอย่างเช่น ปัญหาที่มีลำดับความสำคัญสูงจาก cartservice ใน C# มีดังนี้

aca90d0da393bffc.png

ดูรายงานการตรวจสอบที่เหลือเพื่อดูผลการตรวจสอบ

7. การแก้ไข

การวินิจฉัยปัญหาด้านคุณภาพของโค้ดเป็นเพียงครึ่งหนึ่งของงานเท่านั้น ตอนนี้เราจะใช้เอเจนต์เพื่อแก้ไขปัญหา แทนที่จะเขียนโค้ดด้วยตนเอง เราสามารถมอบหมายการปรับโครงสร้างโค้ดให้กับเอเจนต์ย่อยของนักพัฒนาแอปที่กำหนดขอบเขตภาษา ซึ่งสามารถเขียนโค้ดใหม่ให้เป็นไปตามแนวทางปฏิบัติแนะนำได้

คุณลองทำได้หลายวิธี ดังนี้

  1. คุณสามารถสร้างเอเจนต์ต่อภาษาและให้เอเจนต์ทั้งหมดแก้ไขปัญหาทั้งหมดพร้อมกันได้ ซึ่งอาจได้ผล แต่ก็อาจมากเกินไปที่จะติดตามและตรวจสอบพร้อมกัน
  2. คุณสามารถสร้างเอเจนต์ 1 ตัวสำหรับ 1 ภาษาในแต่ละครั้ง และให้เอเจนต์จัดการปัญหาสำหรับภาษานั้นๆ ได้ ซึ่งจะจัดการได้ง่ายขึ้น แต่คุณยังคงต้องเชื่อมั่นในตัวเอเจนต์ว่าจะทำการเปลี่ยนแปลงหลายรายการในหลายไฟล์ได้
  3. คุณสามารถให้ตัวแทนจัดการปัญหาทีละรายการในขณะที่คุณตรวจสอบผลลัพธ์ก่อนที่จะไปยังปัญหาถัดไปได้ วิธีนี้เป็นแนวทางที่ระมัดระวังมากขึ้น แต่ก็ช่วยให้คุณทราบข้อมูลล่าสุดเกี่ยวกับการเปลี่ยนแปลงแต่ละครั้งด้วย

เราจะใช้วิธีที่ระมัดระวังมากขึ้น #3 ด้วยพรอมต์ต่อไปนี้

Select the top high-priority finding in [pick a language, e.g., C#]
and remediate the finding. Show me the code changes once complete.

หลังจากนั้นไม่กี่วินาที คุณจะเห็นว่าตัวแทนกำลังดำเนินการกับปัญหาที่มีลำดับความสำคัญสูงสุดในภาษาที่คุณเลือกและแก้ไขปัญหา

ในตอนท้าย คุณอาจได้รับอาร์ติแฟกต์คำแนะนำแบบทีละขั้นตอนซึ่งแสดงให้เห็นว่าเอเจนต์ได้เปลี่ยนแปลงอะไรบ้าง

9e79c7bb1e102aee.png

ไม่บังคับ: ในขั้นตอนนี้ คุณสามารถขอให้ตัวแทนเปลี่ยนการติดตั้งใช้งาน หรือหากพอใจกับการเปลี่ยนแปลงแล้ว คุณก็ขอให้ตัวแทนเพิ่มการทดสอบหน่วยใหม่เพื่อครอบคลุมการเปลี่ยนแปลงได้

8. การยืนยัน

ในการพัฒนาซอฟต์แวร์ การแก้ไขจะยังไม่เสร็จสมบูรณ์จนกว่าจะได้รับการยืนยัน ในขั้นตอนสุดท้ายนี้ เราสามารถขอให้ตัวแทนเรียกใช้ชุดโปรแกรมทดสอบเพื่อให้แน่ใจว่าการเปลี่ยนแปลงโค้ดไม่ได้ทำให้เกิดการถดถอย และเรียกใช้เครื่องสแกนการตรวจสอบอีกครั้งเพื่อยืนยันว่าปัญหาได้รับการแก้ไขอย่างสมบูรณ์แล้ว

ขั้นตอนนี้แสดงวงจรความคิดเห็นอัตโนมัติที่สมบูรณ์ของการวางแผน การสแกน การแก้ไข และการยืนยัน

เรียกใช้พรอมต์ต่อไปนี้

Rerun the unit tests for the changed language. If they pass, rerun
the relevant audit agent to check if the finding is resolved. If it 
is resolved, mark the issue as resolved in the audit report.

คุณควรเห็น Subagent Test Runner เริ่มทำงานและเรียกใช้การทดสอบ จากนั้นคุณควรเห็น Subagent Auditor อัปเดตรายงานการตรวจสอบ ในท้ายที่สุด คุณควรเห็นรายงานการตรวจสอบที่อัปเดตเป็นสถานะล่าสุด ดังนี้

36ac20baa92d1602.png

แก้ไขปัญหาไป 1 รายการแล้ว ตอนนี้คุณสามารถดูปัญหาที่เหลือได้ โดยอาจใช้แนวทางที่เข้มงวดน้อยลงในครั้งนี้ ซึ่งคุณจะปล่อยให้ตัวแทนทำงานมากขึ้นก่อนที่คุณจะตรวจสอบ

9. ขอแสดงความยินดี

ยินดีด้วย คุณเพิ่งทำการรีวิวโค้ดแบบหลายภาษาที่ซับซ้อนและเวิร์กโฟลว์การแก้ไขอัตโนมัติโดยใช้ Antigravity เสร็จสมบูรณ์

การใช้ประโยชน์จากสถาปัตยกรรมแบบหลายเอเจนต์ของ Antigravity ไม่ได้เพียงแค่ทำให้การตรวจสอบแบบคงที่เป็นไปโดยอัตโนมัติ แต่ยังช่วยจัดระเบียบทีมประกันคุณภาพอัตโนมัติด้วย ในขณะที่เอเจนต์ภาษาเฉพาะทำงานพร้อมกันในปัญหาเฉพาะภาษา เอเจนต์ผู้ประสานงานจะรวบรวมแผนและรายงานแบบรวมศูนย์ และจัดการการปรับโครงสร้างโค้ดที่กำหนดเป้าหมายในภายหลัง

สิ่งสำคัญที่ได้เรียนรู้

  • การทำงานแบบคู่ขนานที่ประสานกัน: คุณได้เรียนรู้วิธีการกระจายการตรวจสอบและการทดสอบไปยังตัวแทนย่อยอิสระที่เฉพาะเจาะจงภาษาซึ่งทำงานแบบคู่ขนาน เพื่อหลีกเลี่ยงปัญหาคอขวดในการตรวจสอบเชิงเส้น
  • Human-in-the-Loop: การตรวจสอบและใส่คำอธิบายประกอบแผนการตรวจสอบที่สร้างขึ้นก่อนดำเนินการช่วยให้คุณดูแลการปฏิบัติงานอัตโนมัติได้
  • การแก้ไขและการยืนยันอัตโนมัติ: คุณได้เห็นแล้วว่าเอเจนต์ AI ไม่เพียงแต่สามารถวินิจฉัยความคลาดเคลื่อนด้านคุณภาพของโค้ดเท่านั้น แต่ยังสามารถปรับโครงสร้างโค้ดและยืนยันการเปลี่ยนแปลงของตนเองกับชุดการทดสอบในเครื่องได้อีกด้วย