AI ಏಜೆಂಟ್ಗಳು ಮತ್ತು ಬ್ರಾಂಚ್ ತಂತ್ರ: Git ಮೂಲಕ ಸುರಕ್ಷಿತ ಆಟೊಮೇಷನ್
AI ಏಜೆಂಟ್ಗಳು ಕೆಟ್ಟದಾಗಿ ಕೆಲಸ ಮಾಡುತ್ತಿಲ್ಲ, ಆದರೆ ಅವುಗಳ ವರ್ತನೆಯನ್ನು ಮುನ್ಸೂಚಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ.
ಇತ್ತೀಚಿನ ಒಂದು GitHub ಸಮಸ್ಯೆಯು, ಮೇನ್ ಬ್ರಾಂಚ್ಗೆ (main branch) ಕಮಿಟ್ ಮಾಡುವುದನ್ನು ತಪ್ಪಿಸುವ ಸ್ಪಷ್ಟ ಸೂಚನೆಗಳನ್ನು ಒಂದು ಏಜೆಂಟ್ ನಿರ್ಲಕ್ಷಿಸಿರುವುದನ್ನು ತೋರಿಸಿಕೊಟ್ಟಿದೆ. ಅದು ನಿಯಮಗಳನ್ನು ಓದಿತು, ಅವುಗಳಿಗೆ ಒಪ್ಪಿಕೊಂಡಿತು, ಆದರೂ ಮೇನ್ ಬ್ರಾಂಚ್ಗೆ ಪುಶ್ (push) ಮಾಡಿತು.
ನಿಮ್ಮ ಸುರಕ್ಷತಾ ಮಾದರಿಯು ಏಜೆಂಟ್ಗೆ "ಇದನ್ನು ಮಾಡಬೇಡಿ" ಎಂದು ಹೇಳುವುದರ ಮೇಲೆ ಅವಲಂಬಿತವಾಗಿದ್ದರೆ, ನಿಮ್ಮ ಬಳಿ ಸುರಕ್ಷತಾ ಮಾದರಿಯಿಲ್ಲ. ನಿಮ್ಮ ಬಳಿ ಕೇವಲ ಭರವಸೆ ಮಾತ್ರ ಇದೆ.
ನೀವು ಸಿಸ್ಟಮ್ ಪ್ರಾಂಪ್ಟ್ (system prompt) ಅನ್ನು ಎಷ್ಟೇ ಜೋರಾಗಿ ಹೇಳಿದರೂ ಅದು ಕೇಳುವುದಿಲ್ಲ. ಬದಲಾಗಿ, ಏಜೆಂಟ್ ತಪ್ಪು ಕೆಲಸ ಮಾಡಲು ದೈಹಿಕವಾಗಿ ಸಾಧ್ಯವಾಗದಂತಹ ಒಂದು ವ್ಯವಸ್ಥೆಯನ್ನು ನೀವು ನಿರ್ಮಿಸಬೇಕು.
ಸುರಕ್ಷಿತ ಆಟೊಮೇಷನ್ ತಂತ್ರವನ್ನು ಹೇಗೆ ರೂಪಿಸುವುದು ಎಂಬುದು ಇಲ್ಲಿದೆ:
ಪ್ರತ್ಯೇಕತೆಗಾಗಿ Git Worktrees ಬಳಸಿ ಏಜೆಂಟ್ಗಳು ನಿಮ್ಮ ಮುಖ್ಯ ಡೈರೆಕ್ಟರಿಯಲ್ಲಿ (main directory) ಕೆಲಸ ಮಾಡಲು ಬಿಡಬೇಡಿ. ಪ್ರತಿಯೊಂದು ಏಜೆಂಟ್ಗೂ ತನ್ನದೇ ಆದ ಡೈರೆಕ್ಟರಿ ಮತ್ತು ಬ್ರಾಂಚ್ ನೀಡಲು
git worktree addಬಳಸಿ. ಏಜೆಂಟ್ನ ವರ್ಕ್ಸ್ಪೇಸ್ನಲ್ಲಿ (workspace) ಮೇನ್ ಬ್ರಾಂಚ್ ಚೆಕ್-ಔಟ್ ಆಗದಿದ್ದರೆ, ಅದು ಮೇನ್ ಬ್ರಾಂಚ್ಗೆ ಕಮಿಟ್ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ.ಕಟ್ಟುನಿಟ್ಟಾದ ಬ್ರಾಂಚ್ ಹೆಸರಿಸುವ ಕ್ರಮವನ್ನು (branch naming convention) ಬಳಸಿ ಏಜೆಂಟ್ಗಳು ಅನೇಕ ಬ್ರಾಂಚ್ಗಳನ್ನು ರಚಿಸುತ್ತಾರೆ. ನೀವು ಅವುಗಳಿಗೆ ಸರಿಯಾದ ಹೆಸರು ನೀಡದಿದ್ದರೆ, ಅವುಗಳ ಮೇಲೆ ಹಿಡಿತ ಕಳೆದುಕೊಳ್ಳುತ್ತೀರಿ. ಮೂರು ಭಾಗಗಳ ಪ್ರಿಫಿಕ್ಸ್ (prefix) ಬಳಸಿ: • agent/feat/checkout-coupon-stacking • agent/fix/flaky-payment-test • agent/chore/bump-eslint ಇದು ನೀವು ಆಟೊಮೇಷನ್ ಬ್ರಾಂಚ್ಗಳನ್ನು ಸುಲಭವಾಗಿ ಫಿಲ್ಟರ್ ಮಾಡಲು ಮತ್ತು ಸ್ವಚ್ಛಗೊಳಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ.
ಮರ್ಜ್ ಮಾಡುವ ಸಮಯದಲ್ಲಿ ಸ್ಕ್ವಾಶ್ (Squash) ಮಾಡಿ ಏಜೆಂಟ್ಗಳು ಅಸ್ತವ್ಯಸ್ತವಾಗಿ ಕೆಲಸ ಮಾಡಬಹುದು. ಅವು ಪದೇ ಪದೇ ಕಮಿಟ್ ಮಾಡಬಹುದು ಅಥವಾ ಒಂದು ದೊಡ್ಡದಾದ, ಓದಲು ಕಷ್ಟವಾಗುವ ಕಮಿಟ್ ಅನ್ನು ರಚಿಸಬಹುದು. ಅವುಗಳ ಕಮಿಟ್ ಸ್ವಚ್ಛತೆಯ ಬಗ್ಗೆ ಚಿಂತಿಸಬೇಡಿ. ನೀವು ಅವುಗಳ PR ಅನ್ನು ಮರ್ಜ್ ಮಾಡುವಾಗ squash-merging ಬಳಸಿ. ಇದು ಏಜೆಂಟ್ ತನ್ನ ಬ್ರಾಂಚ್ ಅನ್ನು ಸ್ಕ್ರ್ಯಾಚ್ಪ್ಯಾಡ್ ಆಗಿ ಬಳಸಲು ಬಿಡುತ್ತಾ, ನಿಮ್ಮ ಮೇನ್ ಇತಿಹಾಸವನ್ನು (main history) ಸ್ವಚ್ಛವಾಗಿಡುತ್ತದೆ.
ಪದರವಾದ ರಕ್ಷಣಾ ವ್ಯವಸ್ಥೆಯನ್ನು (layered defense) ಜಾರಿಗೆ ತರండి ಒಂದೇ ಒಂದು ಗಾರ್ಡ್ರೈಲ್ (guardrail) ಮೇಲೆ ಅವಲಂಬಿತರಾಗಬೇಡಿ.
- ಪ್ರಾಂಪ್ಟ್ ಸೂಚನೆಗಳು: ಮೊದಲ ರಕ್ಷಣಾ ಕವಚ.
- ಲೋಕಲ್ ಪ್ರಿ-ಕಮಿಟ್ ಹುಕ್ಸ್ (Local pre-commit hooks): ರಕ್ಷಿತ ಬ್ರಾಂಚ್ಗಳಿಗೆ ಅಕಸ್ಮಾತ್ ಕಮಿಟ್ ಮಾಡುವುದನ್ನು ತಡೆಯುತ್ತದೆ.
- ಸರ್ವರ್-ಸೈಡ್ ಬ್ರಾಂಚ್ ಪ್ರೊಟೆಕ್ಷನ್ (Server-side branch protection): ಅತ್ಯಂತ ಪ್ರಮುಖವಾದ ಪದರ. ನಿಮ್ಮ ರಿಮೋಟ್ ರೆಪೊಸಿಟರಿಯಲ್ಲಿ (remote repository) ಪುಲ್ ರಿಕ್ವೆಸ್ಟ್ (pull request) ಅನ್ನು ಕಡ್ಡಾಯಗೊಳಿಸಿ. ಇದು ಮಾನವ ಅನುಮತಿಯಿಲ್ಲದೆ ಏಜೆಂಟ್ ಮೇನ್ ಬ್ರಾಂಚ್ಗೆ ಪುಶ್ ಮಾಡುವುದನ್ನು ಅಸಾಧ್ಯವಾಗಿಸುತ್ತದೆ.
ಏಜೆಂಟ್ ಸ್ವತಂತ್ರವಾಗಿ ಕೆಲಸ ಮಾಡುವಂತೆ ಮಾಡುವುದು ಮತ್ತು ಮಾನವನು ಕೇವಲ ಪುಲ್ ರಿಕ್ವೆಸ್ಟ್ ಸಮಯದಲ್ಲಿ ಮಾತ್ರ ಪ್ರಕ್ರಿಯೆಗೆ ಪ್ರವೇಶಿಸುವುದು ಇದರ ಗುರಿಯಾಗಿದೆ.
ಪ್ರತಿಯೊಂದು ಎಡಿಟ್ ಅನ್ನು ಮೇಲ್ವಿಚಾರಣೆ ಮಾಡುವುದನ್ನು ನಿಲ್ಲಿಸಿ. ಅಜಾಗರೂಕ ಏಜೆಂಟ್ ಕೂಡ ಸುರಕ್ಷಿತ ಫಲಿತಾಂಶವನ್ನು ನೀಡುವಂತಹ ಒಂದು ರಚನೆಯನ್ನು ನಿರ್ಮಿಸಿ.
Source: https://dev.to/nazar_boyko/ai-agents-and-branch-strategy-safe-automation-with-git-57ja
Optional learning community: https://t.me/GyaanSetuAi