عاملهای هوش مصنوعی و استراتژی شاخه (Branch): اتوماسیون ایمن با Git
عاملهای هوش مصنوعی خراب نیستند، اما غیرقابل پیشبینیاند.
یک گزارش اخیر در GitHub نشان داد که یک عامل، دستورالعملهای صریح برای اجتناب از کامیت کردن (commit) در شاخه اصلی (main branch) را نادیده گرفته است. عامل قوانین را خوانده، با آنها موافقت کرده و در نهایت باز هم تغییرات را به main push کرده است.
اگر مدل ایمنی شما بر پایه گفتنِ «این کار را انجام نده» به یک عامل استوار است، شما مدل ایمنی ندارید؛ شما فقط امیدوار هستید.
شما نمیتوانید با فریاد زدن، بر یک System Prompt غلبه کنید. در عوض، باید سیستمی بسازید که در آن عامل از نظر فیزیکی نتواند کار اشتباه را انجام دهد.
در اینجا نحوه راهاندازی یک استراتژی اتوماسیون ایمن آورده شده است:
از Git Worktrees برای جداسازی استفاده کنید اجازه ندهید عاملها در دایرکتوری اصلی شما کار کنند. از
git worktree addاستفاده کنید تا به هر عامل دایرکتوری و شاخه مخصوص به خود را اختصاص دهید. اگر شاخه main حتی در فضای کاری (workspace) عامل چکاوت (checked out) نشده باشد، آن عامل نمیتواند به main کامیت کند.از یک قرارداد نامگذاری سختگیرانه برای شاخهها استفاده کنید عاملها شاخههای زیادی ایجاد میکنند. اگر آنها را به خوبی نامگذاری نکنید، کنترل آنها را از دست خواهید داد. از یک پیشوند سه بخشی استفاده کنید: • agent/feat/checkout-coupon-stacking • agent/fix/flaky-payment-test • agent/chore/bump-eslint این کار به شما اجازه میدهد شاخههای خودکار را به راحتی فیلتر و پاکسازی کنید.
هنگام ادغام (merge)، از Squash استفاده کنید عاملها میتوانند بینظم باشند. آنها ممکن است بیش از حد کامیت کنند یا یک کامیت بسیار بزرگ و غیرقابل خواندن ایجاد کنند. نگران نظم کامیتهای آنها نباشید. هنگام ادغام PR آنها، از قابلیت squash-merging استفاده کنید. این کار باعث میشود تاریخچه (history) اصلی شما تمیز بماند، در حالی که به عامل اجازه میدهد از شاخه خود به عنوان یک دفترچه یادداشت (scratchpad) استفاده کند.
دفاع لایهبندی شده را پیادهسازی کنید تنها به یک حفاظ (guardrail) تکیه نکنید.
- دستورالعملهای پرامپت: اولین خط دفاعی.
- هوکهای پیش از کامیت (pre-commit hooks) محلی: از کامیتهای تصادفی در شاخههای محافظتشده جلوگیری میکند.
- محافظت از شاخه در سمت سرور: مهمترین لایه. در مخزن (repository) راه دور خود، داشتن Pull Request را الزامی کنید. این کار باعث میشود که برای یک عامل، Push کردن به main بدون تایید انسان غیرممکن شود.
هدف این است که اجازه دهید عامل به صورت خودکار کار کند، در حالی که انسان تنها در مرحله Pull Request وارد چرخه (loop) میشود.
از نظارت لحظهای بر هر ویرایش دست بردارید. ساختاری بسازید که حتی یک عامل بیدقت نیز خروجی ایمنی تولید کند.
Source: https://dev.to/nazar_boyko/ai-agents-and-branch-strategy-safe-automation-with-git-57ja
Optional learning community: https://t.me/GyaanSetuAi