ನನ್ನ ಕೋಡಿಂಗ್ ಏಜೆಂಟ್ಗಳಿಗಾಗಿ ನಾನು ಒಂದು ಲೋಕಲ್ ಕಂಟ್ರೋಲ್ ಪ್ಲೇನ್ ಅನ್ನು ನಿರ್ಮಿಸಿದೆ
ವಿವಿಧ AI ಏಜೆಂಟ್ಗಳನ್ನು ಬಳಸುವುದು ಒಂದು ಗೊಂದಲದ ಕೆಲಸವಾಗಿತ್ತು.
ನಾನು Copilot, Claude Code ಮತ್ತು OpenCode ಅನ್ನು ಬಳಸುತ್ತಿದ್ದೆ. ಪ್ರತಿಯೊಂದು ಟೂಲ್ಗೂ ತನ್ನದೇ ಆದ ಹೋಮ್ ಡೈರೆಕ್ಟರಿ (home directory), ತನ್ನದೇ ಆದ ಸೆಟ್ಟಿಂಗ್ಗಳು ಮತ್ತು ತನ್ನದೇ ಆದ ಮೆಮೊರಿ ಇತ್ತು. ನಾನು ಪ್ರತಿ ಬಾರಿ ಹೊಸ ಕೌಶಲ್ಯ ಅಥವಾ ನಿಯಮವನ್ನು ಸೇರಿಸಿದಾಗಲೂ, "ಈ ಟೂಲ್ ಇದನ್ನು ಎಲ್ಲಿ ನಿರೀಕ್ಷಿಸುತ್ತದೆ?" ಎಂದು ಕೇಳಬೇಕಾಗುತ್ತಿತ್ತು.
ನನ್ನ ಹೋಮ್ ಡೈರೆಕ್ಟರಿಯು AI ಫೋಲ್ಡರ್ಗಳ ಕಸದ ಡ್ರಾಯರ್ನಂತಾಗಿಬಿಟ್ಟಿತ್ತು.
ಏಜೆಂಟ್ಗಳ ನಡುವೆ ಪ್ಲಾನ್ಗಳನ್ನು ವರ್ಗಾಯಿಸಲು ನಾನು Markdown ಫೈಲ್ಗಳನ್ನು ಬಳಸಲು ಪ್ರಯತ್ನಿಸಿದೆ. ಅದು ಸ್ವಲ್ಪ ಮಟ್ಟಿಗೆ ಸಹಾಯ ಮಾಡಿತು, ಆದರೆ ವಿಫಲವಾಯಿತು. ಒಂದು ಏಜೆಂಟ್ ಒಂದು ಊಹೆಯನ್ನು (assumption) ಮರೆತರೆ, ಮುಂದಿನ ಏಜೆಂಟ್ ತಪ್ಪಾದ ಫಲಿತಾಂಶವನ್ನು ನೀಡುತ್ತಿತ್ತು. ಫೈಲ್ಗಳು ಡೇಟಾವನ್ನು ನೀಡುತ್ತಿದ್ದವು, ಆದರೆ ಅವು ಹಂಚಿಕೆಯ ಸಂದರ್ಭವನ್ನು (shared context) ನೀಡುತ್ತಿರಲಿಲ್ಲ.
ನನಗೆ ಈ ಕೆಳಗಿನವುಗಳಿಗಾಗಿ ಒಂದು ಮಾರ್ಗ ಬೇಕಿತ್ತು:
- ಉನ್ನತ ಮಟ್ಟದ ನಿಯಮಗಳನ್ನು ಒಮ್ಮೆಲೇ ಬರೆಯಲು.
- ಅನುಮತಿ ನಿಯಮಗಳನ್ನು (permission rules) ಒಂದೇ ಕಡೆ ಇರಿಸಲು.
- ಕೌಶಲ್ಯಗಳನ್ನು ಕೈಯಿಂದ ಕಾಪಿ ಮಾಡುವುದನ್ನು ನಿಲ್ಲಿಸಲು.
- ವಿವಿಧ ಪ್ರಾಜೆಕ್ಟ್ಗಳು ಮತ್ತು ಸೆಷನ್ಗಳ ನಡುವೆ ಮೆಮೊರಿಯನ್ನು ಹಂಚಿಕೊಳ್ಳಲು.
ಇದನ್ನು ಪರಿಹರಿಸಲು ನಾನು ಒಂದು ಲೋಕಲ್ ಕಂಟ್ರೋಲ್ ಪ್ಲೇನ್ ಅನ್ನು ನಿರ್ಮಿಸಿದೆ.
ನನ್ನ ಸೆಟಪ್ನ ಮುಖ್ಯ ಭಾಗವೆಂದರೆ ಒಂದು ಏಕೈಕ ಡೈರೆಕ್ಟರಿ: ~/.ai.
ಚದುರಿಹೋಗಿರುವ ಫೋಲ್ಡರ್ಗಳ ಬದಲಿಗೆ, ನಾನು symlinks ಬಳಸುತ್ತೇನೆ. ಟೂಲ್ಗಳು ಅವು ತಮ್ಮದೇ ಆದ ಜಾಗದಲ್ಲಿವೆ ಎಂದು ಭಾವಿಸುತ್ತವೆ, ಆದರೆ ನಿಜವಾದ ರಚನೆಯು ಒಂದೇ ಕಡೆ ಇರುತ್ತದೆ. ನಾನು ಎಲ್ಲಾ ಮಾಡೆಲ್ ಟ್ರಾಫಿಕ್ ಅನ್ನು ಲೋಕಲ್ ಪ್ರೊಕ್ಸಿ (local proxy) ಮೂಲಕ ರೌಟ್ ಮಾಡುತ್ತೇನೆ ಮತ್ತು MCP ಮೂಲಕ ಮೆಮೊರಿಗಾಗಿ ಹಂಚಿಕೆಯ SQLite ಡೇಟಾಬೇಸ್ ಅನ್ನು ಬಳಸುತ್ತೇನೆ.
ಇದು ಎರಡು ವಿಭಿನ್ನ ಕೆಲಸಗಳನ್ನು ಪ್ರತ್ಯೇಕಿಸುತ್ತದೆ:
- ರೌಟಿಂಗ್ (Routing): ಮಾಡೆಲ್ ವಿನಂತಿಗಳು ಪ್ರೊವೈಡರ್ಗೆ ತಲುಪುವ ಮೊದಲು ಲೋಕಲ್ ಪ್ರೊಕ್ಸಿ ಮೂಲಕ ಹೋಗುತ್ತವೆ.
- ಮೆಮೊರಿ (Memory): ದೀರ್ಘಕಾಲದ ಸತ್ಯಾಂಶಗಳು (facts) ಲೋಕಲ್ ಸ್ಟೋರ್ನಲ್ಲಿರುತ್ತವೆ.
ಒಂದು ಮಾಡೆಲ್ ವಿಚಿತ್ರವಾಗಿ ವರ್ತಿಸಿದರೆ, ನಾನು ಪ್ರೊಕ್ಸಿಯನ್ನು ಪರಿಶೀಲಿಸುತ್ತೇನೆ. ಒಂದು ಏಜೆಂಟ್ ವಿವರವನ್ನು ಮರೆತರೆ, ನಾನು ಮೆಮೊರಿಯನ್ನು ಪರಿಶೀಲಿಸುತ್ತೇನೆ. ಇದು ಡೆಬಗ್ ಮಾಡುವುದನ್ನು (debugging) ಸುಲಭಗೊಳಿಸುತ್ತದೆ.
ನನ್ನ ಹಂಚಿಕೆಯ ಮೆಮೊರಿಯು ಮರುಪತ್ತೆ ಮಾಡುವುದು ಕಷ್ಟಕರವಾದ ವಿಷಯಗಳನ್ನು ಸಂಗ್ರಹಿಸುತ್ತದೆ:
- ಪ್ರಾಜೆಕ್ಟ್ ನಿರ್ಧಾರಗಳು.
- ಆರ್ಕಿಟೆಕ್ಚರ್ ನೋಟ್ಸ್ (Architecture notes).
- ವರ್ಕ್ಫ್ಲೋ ಆದ್ಯತೆಗಳು (Workflow preferences).
- ಪದೇ ಪದೇ ಬರುವ ಬಗ್ಗಳು (Recurring bugs).
ನಾನು ನನ್ನ ಸೆಕ್ಯೂರಿಟಿಯನ್ನು ಸಹ ಕೇಂದ್ರೀಕರಿಸಿದ್ದೇನೆ. ಕೋಡಿಂಗ್ ಸ್ಟ್ಯಾಂಡರ್ಡ್ಗಳು ಮತ್ತು ನಿಷೇಧಿತ ಕಮಾಂಡ್ಗಳಿಗಾಗಿ ನಾನು ಹಂಚಿಕೆಯ ಫೈಲ್ಗಳನ್ನು ಬಳಸುತ್ತೇನೆ. ಇದು ಒಂದು ಏಜೆಂಟ್ನಿಂದ ಇನ್ನೊಂದಕ್ಕೆ ಬದಲಾಯಿಸಿದಾಗ ಪರಿಸರವು ಎಷ್ಟು ಸುರಕ್ಷಿತವಾಗಿದೆ ಎಂಬುದು ಬದಲಾಗದಂತೆ ನೋಡಿಕೊಳ್ಳುತ್ತದೆ.
ಇದು ಒಂದು ಪರಿಪೂರ್ಣ ಏಜೆಂಟ್ ಅನ್ನು ಹುಡುಕುವ ಬಗ್ಗೆ ಅಲ್ಲ. ಬದಲಾಗಿ, ನನ್ನ ಏಜೆಂಟ್ಗಳು ಸಾಕಷ್ಟು ಸಂದರ್ಭವನ್ನು (context) ಹಂಚಿಕೊಳ್ಳುವಂತೆ ಮಾಡುವುದು, ಇದರಿಂದಾಗಿ ಅವುಗಳ ನಡುವೆ ಬದಲಾಯಿಸುವುದು ಹೊಸದಾಗಿ ಪ್ರಾರಂಭಿಸಿದಂತೆ ಅನಿಸುವುದಿಲ್ಲ.
ಮೂಲ: https://dev.to/sperekrestova/i-built-a-local-control-plane-for-my-coding-agents-1bf7
ಐಚ್ಛಿಕ ಕಲಿಕಾ ಸಮುದಾಯ: https://t.me/GyaanSetuAi