۱. مقدمه

در این آزمایشگاه کد، شما یک سیستم حسابرسی کیفیت کد چندزبانه و اصلاح خودکار را با استفاده از ارکستراسیون چندعاملی موازی در Antigravity خواهید ساخت. به جای بررسی سنتی، دستی و خطی چندین دایرکتوری سرویس جداگانه، شما زیرعاملهای تخصصی هوش مصنوعی را برای بررسی موازی پشتههای زبانهای مختلف مستقر خواهید کرد.
شما یک عامل هماهنگکننده ایجاد خواهید کرد تا طرحبندی پروژه را کشف کند، زیرعاملها را برای اجرای تست واحد مدیریت کنید، یک طرح حسابرسی بسازید، انطباق را بررسی کنید، یک گزارش حسابرسی ایجاد کنید و به صورت خودکار مشکلات کدنویسی با اولویت بالا را در پایگاه کد اصلاح کنید.
آنچه یاد خواهید گرفت
- کشف پروژه: نحوه استقرار یک عامل هماهنگکننده برای نگاشت دایرکتوریها و شناسایی زبانهای برنامهنویسی در یک معماری پیچیده میکروسرویسها.
- موازیسازی هماهنگ: چگونه میتوان ممیزیهای کد و تست واحد را به طور همزمان بین زیرعاملهای هوش مصنوعی مستقل و مختص زبان توزیع کرد.
- نظارت انسانی در حلقه: چگونه یک هماهنگکننده را برای ایجاد یک طرح حسابرسی راهنمایی کنیم و قبل از اجرا، با خیال راحت برای بررسی و تأیید شما مکث کنیم.
- اصلاح خودکار: نحوهی استقرار زیرعاملهای توسعهدهندهی متخصص برای اصلاح خودکار و حل مشکلات کدنویسی و انطباق با اولویت بالا.
- حلقههای تأیید: نحوه تأیید تغییرات کد تولید شده توسط هوش مصنوعی با اجرای مجدد خودکار مجموعههای تست برای اطمینان از عدم ایجاد رگرسیون.
آنچه نیاز دارید
برای این codelab، به ابزارهای زیر که به صورت محلی نصب شده باشند، نیاز دارید:
- گوگل ضد جاذبه
- گیت
- یک یا چند زبان برنامهنویسی زیر که در محیط شما تنظیم شده باشند: Go، Python، C# / .NET، NodeJS، Java
بیایید شروع کنیم!
۲. تنظیمات محیطی
ابتدا مطمئن شوید که Antigravity را نصب کردهاید.
دوم، Online Boutique ، یک برنامه آزمایشی میکروسرویس ابری، را شبیهسازی کنید:
git clone https://github.com/GoogleCloudPlatform/microservices-demo.git
با استفاده از کد، یک پروژه جدید در Antigravity ایجاد کنید. در Antigravity، در قسمت Projects در سمت چپ، گزینه Create New Project انتخاب کنید:

پوشه مخزن را انتخاب کنید:

شما میتوانید حالت Default را برای Agent Security Settings انتخاب کنید و همچنین از همان نام microservices-demo برای پروژه استفاده کنید.
۳. کشف
در معماری میکروسرویسها، یک کدبیس معمولاً شامل چندین سرویس است که چندین پوشه یا مخزن و پشته برنامهنویسی را در بر میگیرند. این موضوع در مورد برنامه آزمایشی Online Boutique نیز صادق است.
قبل از راهاندازی عاملها، بیایید طرح کلی پروژه را بررسی کنیم. در این مرحله اول، شما یک عامل هماهنگکننده با Antigravity مستقر خواهید کرد که میکروسرویسهای مختلف را به زبانهای مختلف تحت src/ کشف میکند و زیرعاملهای مختص به زبان را برای کار روی هر میکروسرویس در مراحل بعدی هماهنگ میکند.
بیایید ابتدا از عامل هماهنگکننده بخواهیم که کدبیس را بررسی کند و مشخص کند که چه سرویسهایی در کدام دایرکتوریها وجود دارند و از چه زبانهایی استفاده میکنند.
در Antigravity، یک مکالمه جدید را در پروژه microservices-demo که قبلاً ایجاد کردهاید، شروع کنید. برای مدل، میتوانید از آخرین مدل Gemini با سطح تفکر متوسط استفاده کنید:

این دستور را امتحان کنید:
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 باید با یک جدول خوب از خدمات و زبان اصلی آنها، چیزی شبیه به این، برگردد:

۴. زبانها را انتخاب کنید
حالا که کدبیس را مشخص کردهاید، باید زبانهایی را که میخواهید با آنها کار کنید انتخاب کنید. باید مطمئن شوید که کامپایلرها/ابزارهای مورد نیاز برای زبانهایی که انتخاب میکنید را دارید (مثلاً ابزار dotnet برای سیشارپ، javac برای جاوا و غیره).
پس از انتخاب زبانهایی که میخواهید با آنها کار کنید، تأیید سلامت کدبیس فعلی با اجرای تستهای واحد مربوطه برای آن زبان بسیار مهم است.
شما میتوانید از زیرعاملهای (subagents) تخصصی و موازی برای اجرای مجموعههای تست در هر زبان استفاده کنید. این موضوع، قدرت اصلی یک گردش کار چندعاملی را برجسته میکند: اجرای تستهای مجزا به صورت همزمان در فضاهای کاری جداگانه مختص به هر زبان.
اعلان زیر را برای محیط خود تطبیق داده و اجرا کنید:
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.
شما باید چندین عامل را ببینید که در هر زبان، تستها را اجرا میکنند. مطمئن شوید که هر عامل فرعی را بررسی میکنید، زیرا آنها درخواست مجوز برای اجرای ابزارها را دارند، همانطور که در زیر نشان داده شده است:

وقتی همه زیرعاملها (subagents) کارشان تمام شد، باید گزارش خوبی از تستهای واحد، مشابه موارد زیر، دریافت کنید:

۵. برنامهریزی حسابرسی
طرح
در گردشهای کاری پیچیده، شروع تغییرات کد بدون برنامه میتواند منجر به تداخل شود. ما میخواهیم یک طرح کلی ساختاریافته و شفاف از آنچه قصد حسابرسی آن را داریم، ایجاد کنیم. شما از هماهنگکننده خواهید خواست که یک طرح حسابرسی با بررسی کیفیت کد، مدیریت استثنائات، بررسیهای سلامت پرسوجو و غیره طراحی کند.
برای اطمینان از نظارت انسانی (حضور انسان در حلقه)، هماهنگکننده طرح را روی یک مصنوع مینویسد و بلافاصله برای بررسی شما مکث میکند.
برای تهیه یک طرح حسابرسی، این دستورالعمل را امتحان کنید:
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.
شما باید یک مصنوعات طرح حسابرسی (Audit Plan) را در چت مشاهده کنید:

نقد و بررسی
اکنون طرح حسابرسی تولید شده را بررسی خواهید کرد تا مطمئن شوید که فایلها و استانداردهای صحیح را هدف قرار داده است. به صورت اختیاری، میتوانید قبل از تأیید ادامه، محدودیتهای سفارشی (مانند بررسی نظرات درونخطی یا راهنماهای سبکدهی) اضافه کنید.
روی طرح حسابرسی تولید شده کلیک کنید تا طرح تفصیلی را مشاهده کنید:

اختیاری : اگر میخواهید تغییراتی ایجاد کنید، میتوانید نظراتی را به طرح اضافه کنید (مثلاً «مطمئن شوید که همه متدهای عمومی به خوبی مستند شدهاند») و آن را تا زمانی که از طرح راضی باشید، تکرار کنید.
۶. اجرای ممیزی
اجرا
با تأیید طرح حسابرسی، بیایید حسابرسی را اجرا کنیم. عامل هماهنگکننده، زیرعاملهای موازی مستقلی را برای هر پشته زبان ایجاد میکند. هر عامل به طور همزمان در پوشه سرویس خود عمل میکند و از تداخل فایلها جلوگیری میکند، در حالی که فرآیند اسکن را تسریع میبخشد. عامل هماهنگکننده یافتهها را در یک داشبورد کیفیت یکپارچه ادغام میکند.
در اینجا دستورالعملی برای امتحان بعدی آمده است:
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.
شما باید دوباره چندین نماینده را ببینید:

مطمئن شوید که هر زیر-عامل را زیر نظر دارید و مجوزهای لازم برای اجرای حسابرسی را به آنها میدهید. در نهایت، باید یک گزارش حسابرسی (Audit Report) مشاهده کنید:

نقد و بررسی
وقتی گزارش حسابرسی را باز کردید، باید یافتههای دقیقی را برای هر زبان نیز مشاهده کنید. برای مثال، در اینجا یک مشکل با اولویت بالا از cartservice در C# آورده شده است:

برای مشاهدهی یافتهها، به بقیهی گزارش حسابرسی نگاهی بیندازید.
۷. اصلاح
تشخیص مشکلات کیفیت کد تنها نیمی از راه است. اکنون، ما از عاملها برای حل مشکلات استفاده خواهیم کرد. به جای نوشتن کد به صورت دستی، میتوانیم بازسازی را به عاملهای فرعی توسعهدهنده در محدوده زبان واگذار کنیم که میتوانند کد را برای مطابقت با بهترین شیوهها بازنویسی کنند.
روشهای مختلفی برای این تلاش وجود دارد:
- شما میتوانید برای هر زبان یک عامل ایجاد کنید و اجازه دهید همه عاملها همه مشکلات را یکجا برطرف کنند. این روش ممکن است جواب بدهد، اما ممکن است پیگیری و بررسی همزمان آن نیز بیش از حد زیاد باشد.
- شما میتوانید هر بار یک عامل را برای یک زبان ایجاد کنید و اجازه دهید مشکلات مربوط به آن زبان را مدیریت کند. این روش مدیریت را آسانتر میکند، اما همچنان باید بتوانید به عامل اعتماد کنید تا تغییرات متعددی را روی چندین فایل انجام دهد.
- میتوانید از یک کارشناس بخواهید که هر بار به یک مشکل رسیدگی کند و شما قبل از رفتن به سراغ مشکل بعدی، نتیجه را بررسی کنید. این رویکرد محافظهکارانهتر است، اما همچنین تضمین میکند که در جریان هر تغییر قرار خواهید گرفت.
ما با رویکرد محافظهکارانهتر شماره ۳ و با دستور زیر پیش میرویم:
Select the top high-priority finding in [pick a language, e.g., C#]
and remediate the finding. Show me the code changes once complete.
بعد از چند ثانیه، باید ببینید که عامل روی اولویت اصلی در زبان انتخابی شما کار میکند و آن را برطرف میکند.
در نهایت، ممکن است یک مصنوع Walkthrough نیز دریافت کنید که به شما نشان میدهد عامل چه چیزی را تغییر داده است:

اختیاری: در این مرحله، میتوانید از عامل بخواهید پیادهسازی را تغییر دهد، یا اگر از تغییرات راضی هستید، میتوانید از عامل بخواهید یک تست واحد جدید برای پوشش تغییرات اضافه کند.
۸. تأیید
در توسعه نرمافزار، یک اصلاحیه تا زمانی که تأیید نشود، کامل نیست. در این مرحله آخر، میتوانیم از عامل بخواهیم که مجموعه تست را اجرا کند تا مطمئن شویم تغییرات کد باعث رگرسیون نشدهاند و اسکنر حسابرسی را دوباره اجرا کند تا تأیید شود که مشکل به طور کامل حل شده است.
این مرحله، حلقه بازخورد خودکار کامل برنامهریزی، اسکن، اصلاح و تأیید را نشان میدهد.
دستور زیر را اجرا کنید:
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.
شما باید ببینید که یک زیرمجموعهی Test Runner اجرا میشود و تستها را اجرا میکند و سپس باید ببینید که یک زیرمجموعهی Auditor گزارش حسابرسی را بهروزرسانی میکند. در نهایت، باید ببینید که گزارش حسابرسی با آخرین وضعیت بهروزرسانی شده است:

یک مشکل دیگر! حالا میتوانید بقیه مشکلات را بررسی کنید، شاید این بار از رویکردی کمتر محافظهکارانه استفاده کنید و به کارشناسان اجازه دهید قبل از بررسی شما، کارهای بیشتری انجام دهند.
۹. تبریک
تبریک! شما به تازگی یک بررسی کد چندزبانه پیچیده و گردش کار اصلاح خودکار را با استفاده از Antigravity به پایان رساندهاید.
با بهرهگیری از معماری چندعاملی Antigravity، شما نه تنها بررسیهای استاتیک را خودکار کردید، بلکه یک تیم تضمین کیفیت خودکار را سازماندهی کردید. در حالی که عوامل متخصص زبان به طور همزمان روی مسائل مربوط به زبان کار میکردند، عامل هماهنگکننده شما یک طرح و گزارش متمرکز تدوین کرد و متعاقباً یک اصلاح کد هدفمند را مدیریت کرد.
نکات کلیدی
- موازیسازی هماهنگ : شما یاد گرفتید که چگونه ممیزیها و تستها را بین زیرعاملهای مستقل و مختص زبان که به صورت موازی اجرا میشوند، توزیع کنید و از گلوگاههای بررسی خطی جلوگیری کنید.
- انسان در حلقه : با بررسی و حاشیهنویسی طرح حسابرسی تولید شده قبل از اجرا، شما نظارت بر عملیات خودکار را حفظ کردید.
- اصلاح و تأیید خودکار : شما دیدید که چگونه عوامل هوش مصنوعی نه تنها میتوانند اختلافات کیفیت کد را تشخیص دهند، بلکه کد را اصلاح کرده و تغییرات خود را در برابر مجموعههای تست محلی تأیید میکنند.