پرش به محتوای اصلی
پرش به محتوای مقاله

AgentCheck: تأیید تغییرات کد توسط هوش مصنوعی بدون استفاده از مدل‌های زبانی

·۲ شهریور ۱۴۰۵۶ دقیقه مطالعه۱ بازدید
ساخت AgentCheck چون «کدنویسی عامل انجام شد» کافی نبود.
ساخت AgentCheck چون «کدنویسی عامل انجام شد» کافی نبود.
اشتراک‌گذاری
واقعاً چه چیز جدید است؟

معرفی یک لایهٔ تأیید کاملاً غیر-LLM برای خروجی‌های LLM؛ ابزاری که به‌جای تحلیل معنایی، بر تحلیل ساختاری و قطعیِ تغییرات Git تکیه می‌کند.

تصور کنید یک عامل کدنویس ادعا می‌کند تمام تسک‌ها را انجام داده، اما شما برای اطمینان از اینکه هیچ فایل حساس یا تنظیمات سیستمی به‌اشتباه تغییر نکرده، باید ساعت‌ها وقت صرف بررسی دستی Diffها کنید. این همان «شکاف اعتماد» است که AgentCheck برای پر کردن آن طراحی شده است؛ ابزاری که هدفش ایجاد یک لایه حقیقت قطعی (Deterministic) بین خروجی هوش مصنوعی و کامیت نهایی در Git است. در حالی که عامل‌هایی مانند Claude Code یا Cursor می‌توانند کل مخازن کد را بازسازی کنند، اما اغلب خلاصه‌هایی ارائه می‌دهند که برای یک کامیت امن، بیش از حد مبهم هستند.

عامل‌های کدنویس با سرعت خیره‌کننده‌ای در حال پیشرفت هستند. آن‌ها اکنون قادرند وظایفی در مقیاس بزرگ را مدیریت کنند؛ از بازسازی کد (Refactoring) و افزودن ویژگی‌های جدید گرفته تا به‌روزرسانی وابستگی‌ها، تغییر پیکربندی‌ها، ایجاد مهاجرت‌های دیتابیس (Migrations) و تغییر در فایل‌های پراکنده در سراسر یک مخزن. اما مشکل اینجاست که وقتی یک عامل کارش را تمام می‌کند، معمولاً خلاصه‌ای معقول اما ناکافی ارائه می‌دهد؛ جملاتی مثل «انجام شد. تغییرات درخواستی اعمال، تست‌ها به‌روزرسانی و کدهای مربوطه پاک‌سازی شدند» برای یک توسعه‌دهنده حرفه‌ای کافی نیست و ریسک ورود باگ‌های پنهان به کد را بالا می‌برد.

در حال حاضر، اکثر توسعه‌دهندگان به توضیحات خودِ هوش مصنوعی درباره کارهایی که انجام داده تکیه می‌کنند. این وضعیت یک حلقهٔ خطرناک ایجاد می‌کند: همان منطقی که باعث ایجاد یک باگ شده، احتمالاً در مرحلهٔ گزارش‌دهی و خلاصه کردن تغییرات نیز همان باگ را نادیده می‌گیرد. AgentCheck برای شکستن این چرخه، روایتِ هوش مصنوعی را کاملاً نادیده می‌گیرد و فقط به وضعیت واقعی و فیزیکی مخزن کد نگاه می‌کند.

بحرانِ بعد از عبارت «انجام شد»

طبق گزارش توسعه‌دهندهٔ این ابزار، پس از اینکه یک عامل کارش را به پایان می‌رساند، برنامه‌نویسان اغلب خود را در حال اجرای دستی دستورات git status ،git diff و git diff --stat می‌بینند تا به سوالات حیاتی پاسخ دهند. آن‌ها نیاز دارند بدانند: دقیقاً کدام فایل‌ها تغییر کرده‌اند؟ آیا فایلی حذف شده است؟ آیا تنظیمات سیستم تغییر کرده؟ آیا وابستگی‌های جدیدی اضافه یا به‌روز شده‌اند؟ آیا یک مهاجرت دیتابیس معرفی شده است؟ آیا چیزی شبیه به یک Secret یا کلید امنیتی در کد ظاهر شده؟ آیا تست‌های مرتبط با تغییرات، تغییر کرده‌اند؟ و در نهایت، آیا مجموعه تغییرات کلی، بزرگ‌تر یا ریسکی‌تر از حد انتظار است؟

اگرچه Git این اطلاعات خام را در اختیار ما قرار می‌دهد، اما تکرار این فرآیند تأیید دستی پس از هر تسکِ کوچکِ عامل، به‌شدت خسته‌کننده و زمان‌بر است. AgentCheck این فرآیند را به یک گردش‌کار تکرارپذیر و ساختاریافته تبدیل می‌کند. این رویکرد مکمل راهکارهایی است که برای تبدیل کدهای نامنظم تولید شده توسط AI به کامیت‌های منطقی و سازمان‌یافته در GitX استفاده می‌شوند.

گردش‌کار قطعی و بدون توهم

AgentCheck بر اساس یک چرخهٔ سادهٔ «شروع و تأیید» عمل می‌کند. کاربر با دستور agentcheck start یک نقطه بازرسی (Checkpoint) ایجاد می‌کند که در واقع یک وضعیت مورد اعتماد از حالت فعلی مخزن است. سپس عامل کدنویس — خواه Codex باشد، Claude Code، Cursor، هر ابزار کمک‌کننده دیگر یا حتی یک انسان — کارهای درخواستی را انجام می‌دهد. پس از اتمام کار، کاربر دستور agentcheck را اجرا می‌کند تا مقایسه‌ای بین وضعیت فعلی و نقطه بازرسی اولیه صورت گیرد.

نکتهٔ کلیدی اینجاست که این ابزار برای بازبینی کد، از هیچ مدل زبانی بزرگ (LLM) دیگر استفاده نمی‌کند. سازنده ابزار را تعمداً به‌گونه‌ای طراحی کرده که از خط لوله «LLM کد را تغییر می‌دهد $ \rightarrow $ LLM دیگری کد را بازبینی می‌کند» دوری کند. در عوض، جریان کار به این شکل است: عامل کدنویس $ \rightarrow $ تغییرات واقعی قابل مشاهده در Git $ \rightarrow $ بررسی‌های قطعی $ \rightarrow $ بازبینی انسانی $ \rightarrow $ کامیت. این رویکرد تضمین می‌کند که اگر وضعیت مخزن یکسان باشد، ابزار همیشه نتیجه‌ای یکسان تولید می‌کند و دچار توهم (Hallucination) نمی‌شود.

خروجی ابزار به چهار بخش شفاف تقسیم می‌شود:

  • تغییرات (Changes): شمارش خام فایل‌های تغییریافته، ایجادشده، حذف‌شده و تغییرنام‌یافته (مثلاً: «۲ تغییر یافته، ۱ ایجاد شده، ۰ حذف شده، ۰ تغییر نام»).
  • یافته‌ها (Findings): هشدارهای خاص و متمرکز، مانند «⚠ تغییر در وابستگی‌ها شناسایی شد».
  • ریسک (Risk): یک امتیاز عددی که مجموعه تغییرات را دسته‌بندی می‌کند. مقیاس این امتیاز به این صورت است: ۰ تا ۲ (کم/LOW)، ۳ تا ۶ (متوسط/MEDIUM) و ۷ به بالا (زیاد/HIGH).
  • حکم (Verdict): یک توصیه نهایی، مانند «بازبینی توصیه می‌شود» (REVIEW RECOMMENDED).

پیاده‌سازی فنی و معماری محلی

برای جلوگیری از تداخل با جریان کاری فعال توسعه‌دهنده، AgentCheck ایندکس واقعی Git، درخت کاری (Working Tree) یا تاریخچه (History) را تغییر نمی‌دهد. این ابزار از مدل درخت/ایندکس Git با یک ایندکس جایگزین موقت استفاده می‌کند.

فرآیند مفهومی به این صورت است: وضعیت فعلی مخزن $ \rightarrow $ ایندکس موقت Git $ \rightarrow $ دستور git write-tree $ \rightarrow $ درخت نقطه بازرسی. سپس در مرحله بعد، این درخت نقطه بازرسی را از طریق یک Diff با درخت فعلی مقایسه می‌کند.

این معماری به ابزار اجازه می‌دهد تا وضعیت‌های پیچیده محلی را مدیریت کند. یک توسعه‌دهنده می‌تواند در لحظه ایجاد نقطه بازرسی، تغییرات Stage شده، تغییرات Unstaged، حذف‌های ردیابی شده و فایل‌های Untracked (که نادیده گرفته نشده‌اند) داشته باشد. این تغییرات پیش‌موجود به عنوان بخشی از خط پایه (Baseline) در نظر گرفته می‌شوند و به‌اشتباه به حساب کارهای انجام شده توسط عامل کدنویس نوشته نمی‌شوند.

این ابزار به‌طور خاص روی سیگنال‌های پرریسک تمرکز دارد که اغلب در یک نگاه سریع نادیده گرفته می‌شوند:

  • زیرساخت و تنظیمات: تغییرات در مهاجرت‌های دیتابیس، تغییرات در پیکربندی‌های محیط Production و تغییرات مربوط به CI/CD.
  • امنیت و دامنه: معرفی احتمالی اسرار (Secrets) یا کلیدهای API و همچنین مجموعه‌های تغییرات که به‌طور غیرعادی بزرگ هستند.
  • وابستگی‌ها: هرگونه تغییر در وابستگی‌های پروژه (Dependencies).
  • یکپارچگی: شناسایی مواردی که در آن کد تولیدی تغییر کرده اما به نظر می‌رسد تست‌های مربوط به آن تغییر نکرده‌اند.
  • حذف فایل‌ها: هایلایت کردن صریح زمان‌هایی که فایل‌ها حذف شده‌اند.

AgentCheck با فلسفهٔ سخت‌گیرانهٔ «اول محلی» (Local-first) ساخته شده است تا حریم خصوصی و سرعت در اولویت باشند. طبق مستندات، این ابزار در حال حاضر دارای ویژگی‌های زیر است:

  • بدون بک‌اِند (No backend)
  • بدون نیاز به حساب کاربری
  • بدون آپلود کد منبع
  • بدون تله‌متری (Telemetry)
  • بدون نیاز به API مدل‌های زبانی

این ابزار کاملاً به‌صورت محلی از طریق CLI (با دستور npm install -g @agentcheck/cli) یا یک افزونهٔ سبک VS Code عمل می‌کند. افزونه در واقع یک لایه رابط کاربری (UI) روی همان هسته قطعی است و یک موتور تحلیل مجزا نیست. چون این ابزار مستقل از API یا نشست (Session) هر عامل خاصی است، با هر ابزاری که مخزن Git را تغییر دهد، سازگار است.

این رویکرد، بار تأیید را از «بازبینی AI توسط AI» به «بازبینی AI توسط ابزار قطعی» منتقل می‌کند. با حذف LLM از لایه تأیید، توسعه‌دهنده یک خط پایه پیش‌بینی‌پذیر برای امنیت و پایداری به دست می‌آورد.

متن‌باز و نقشه راه آینده

پروژه AgentCheck تحت لایسنس Apache 2.0 متن‌باز است و هسته، CLI و افزونه VS Code آن در GitHub و npm در دسترس است. توسعه‌دهنده در حال حاضر در نسخه v0.2 روی چندین بهبود تمرکز کرده است:

  • ایجاد یک مدل گزارش بازبینی پایدار و نسخه‌بندی شده.
  • ارائه خروجی JSON ماشین‌خوان برای اتوماسیون.
  • تولید یافته‌های قطعی و کاربردی‌تر.
  • ارائه اطلاعات دقیق‌تر درباره وابستگی‌های اضافه شده، حذف شده یا به‌روز شده.
  • بهبود ناوبری (Navigation) از یافته‌ها به Diffها در داخل VS Code.

سازنده ابزار تعمداً از تبدیل AgentCheck به یک پلتفرم عظیم بازبینی کد مبتنی بر AI اجتناب می‌کند تا تمرکز اصلی بر تأیید مستقلِ «آنچه واقعاً تغییر کرده است» باقی بماند.

گام بعدی شما

  • اگر از Cursor یا Claude Code استفاده می‌کنید، ابزار را با npm install -g @agentcheck/cli نصب کنید تا لایهٔ تأیید قطعی را به گردش‌کار خود اضافه کنید.
  • در اولین استفاده، دستور agentcheck start را پیش از هر درخواست بزرگ از AI اجرا کنید تا نقطه بازرسی دقیق داشته باشید.
  • خروجی‌های بخش Risk را به عنوان فیلتر اول برای بررسی دستی Diffها به کار ببرید.

اما این تنها بخشی از مسیر است؛ بررسی اینکه چگونه می‌توان این تأییدات قطعی را در خط لوله‌های CI/CD ادغام کرد، در گزارش‌های بعدی ما بررسی خواهد شد.

چرا این موضوع مهم است؟

این ابزار با حذف احتمال توهم در بازبینی کد، اعتماد به عامل‌های کدنویس را از سطح «امیدواری» به سطح «سنجش فنی» می‌برد. این تغییر برای تیم‌های مهندسی که استانداردهای سخت‌گیرانهٔ امنیتی دارند، حیاتی است.

تأثیر برای ایران

به‌دلیل متن‌باز بودن و اجرای کاملاً محلی (Local-first)، توسعه‌دهندگان ایرانی بدون نیاز به VPN یا پرداخت هزینه API می‌توانند از این ابزار برای افزایش امنیت کدهای خود استفاده کنند.

·نگاه ما
تحریریه دات‌هوش

جایگزینی بازبینی AI-to-AI با ابزارهای قطعی (Deterministic)، یک چرخش هوشمندانه برای بازگشت کنترل به دست توسعه‌دهنده است. این رویکرد ثابت می‌کند که در لایهٔ تأیید نهایی، دقتِ ریاضیِ Git بسیار ارزشمندتر از حدس‌های احتمالیِ یک مدل زبانی است. در واقع، AgentCheck به جای تلاش برای «똑똑‌تر کردن» بازبین، «ساده‌تر و قابل‌ پیش‌بینی‌تر» کردن آن را انتخاب کرده است.

منابع

این گزارش با خط‌لولهٔ خودکار دات‌هوش از منابع معتبر جهانی تدوین و زیر نظر تحریریه منتشر شده است. روش کار ما

گفتگو

پنج‌شنبه‌های هوش‌محور

بسته‌ی هفتگی دات‌هوش

۵ خبر، ۲ ابزار، ۱ پرامپت در هر شماره. به‌زودی راه‌اندازی می‌شود — هر پنج‌شنبه صبح.

خبر کلیدی
ابزار کاربردی
پرامپت حرفه‌ای
تحلیل پژوهش
به‌زودی
زاویه‌ی ایرانی
به‌زودی
تمرین این هفته
به‌زودی

راهنماهای دات‌هوش

راهنماهای کاربردیِ دات‌هوش برای کار با هوش مصنوعی — از همین‌جا شروع کنید:

دات‌هوش

راهنمای فارسی هوش مصنوعی — با نگاه به ایران

اخبار روزانه، معرفی ابزارها و مدل‌ها، و آموزشِ کار با هوش مصنوعی؛ همیشه با این پرسش که از ایران چه چیزی کار می‌کند و چه چیزی نه.