𝗠𝘆 𝗖𝗼𝗱𝗶𝗻𝗴 𝗔𝗴𝗲𝗻𝘁 𝗙𝗶𝗻𝗶𝘀𝗵𝗲𝗱 𝗧𝗵𝗲 𝗧𝗮𝘀𝗸. 𝗪𝗵𝘆 𝗗𝗶𝗱 𝗧𝗵𝗲 𝗧𝗵𝗿𝗲𝗮𝗱 𝗗𝗶𝗲?

ಕೋಡಿಂಗ್ ಏಜೆಂಟ್‌ನಲ್ಲಿನ ಅತ್ಯಂತ ಕೆಟ್ಟ ಬಗ್ (bug) ಕ್ರ್ಯಾಶ್ ಆಗುವುದು ಅಲ್ಲ.

ಮೊದಲ ಕೆಲಸ ಯಶಸ್ವಿಯಾದ ನಂತರ, ಮುಂದಿನ ಸಂದೇಶವು ಅಸ್ತಿತ್ವದಲ್ಲಿಲ್ಲದಂತೆ (amnesia) ಭಾಸವಾಗುವುದು ನಿಜವಾದ ಸಮಸ್ಯೆಯಾಗಿದೆ. ನೀವು ಒಂದು ಕೆಲಸವನ್ನು ಕೇಳುತ್ತೀರಿ. ಏಜೆಂಟ್ ಅದನ್ನು ಮುಗಿಸುತ್ತದೆ. ನಂತರ ನೀವು: "ಬಟನ್ ಅನ್ನು ಹಸಿರು ಬಣ್ಣಕ್ಕೆ ಬದಲಾಯಿಸು" ಎಂದು ಹೇಳುತ್ತೀರಿ.

ನಿಮಗೆ ಇದು ಒಂದೇ ಸಂಭಾಷಣೆಯಂತೆ ಕಾಣುತ್ತದೆ. ಆದರೆ ಸಿಸ್ಟಮ್‌ಗೆ, ಒಂದು ಕೆಲಸ ಪೂರ್ಣಗೊಂಡಿತು ಎಂದರೆ ಸೆಷನ್ (session) ಮುಗಿದಿದೆ ಎಂದರ್ಥ. ಸಿಸ್ಟಮ್ ಮತ್ತೆ ಮೊದಲಿನಿಂದಲೇ ಪ್ರಾರಂಭಿಸುತ್ತದೆ.

CliGate ಅನ್ನು ನಿರ್ಮಿಸುವಾಗ, ನಾನು ಮೂರು ವಿಭಿನ್ನ ಪದರಗಳನ್ನು (layers) ಬೆರೆಸಿದ್ದೇನೆ ಎಂದು ನನಗೆ ಅರಿವಾಯಿತು:

ಇವು ಒಂದೇ ಅಲ್ಲ.

ಸಂಭಾಷಣೆಯು ಮಾತನಾಡುವುದಕ್ಕಾಗಿ ಇರುವ ದೀರ್ಘಕಾಲದ ಸ್ಥಳವಾಗಿದೆ. ರನ್‌ಟೈಮ್ ಸೆಷನ್ ಎಂಬುದು ಆ ಸಂಭಾಷಣೆಯ ಕೆಲಸ ಮಾಡುವ ಥ್ರೆಡ್ ಆಗಿದೆ. ಟರ್ನ್ ಎಂಬುದು ಆ ಸೆಷನ್‌ನ ಒಳಗಿನ ಒಂದು ಏಕೈಕ ರನ್ ಆಗಿದೆ.

ಒಂದು ಕೆಲಸ ಪೂರ್ಣಗೊಂಡಾಗ, ಕೇವಲ ಟರ್ನ್ ಮಾತ್ರ ಮುಕ್ತಾಯಗೊಳ್ಳಬೇಕು. ಸೆಷನ್ ಸಕ್ರಿಯವಾಗಿರಬೇಕು.

ದೋಷಪೂರಿತ ಪ್ರಕ್ರಿಯೆಯು ಹೀಗಿರುತ್ತದೆ: ಬಳಕೆದಾರ ಕೆಲಸವನ್ನು ಕೇಳುತ್ತಾರೆ -> ರನ್‌ಟೈಮ್ ಸೆಷನ್ ಪ್ರಾರಂಭವಾಗುತ್ತದೆ -> ಕೆಲಸ ಪೂರ್ಣಗೊಳ್ಳುತ್ತದೆ -> ಸಂಭಾಷಣೆಯು ಸಕ್ರಿಯ ಸೆಷನ್ ಅನ್ನು ಕ್ಲಿಯರ್ ಮಾಡುತ್ತದೆ -> ಮುಂದಿನ ಫಾಲೋ-ಅಪ್ ಹೊಸ ಸೆಷನ್ ಅನ್ನು ಪ್ರಾರಂಭಿಸುತ್ತದೆ.

ಇದು ಈ ಕೆಳಗಿನಂತಹ ಸಣ್ಣ ಫಾಲೋ-ಅಪ್‌ಗಳನ್ನು ಅಡ್ಡಿಪಡಿಸುತ್ತದೆ:

ಸಿಸ್ಟಮ್ ತಕ್ಷಣವೇ ಸೆಷನ್ ಅನ್ನು ಕಡಿತಗೊಳಿಸಿದರೆ, ನೀವು ಎಲ್ಲವನ್ನೂ ಮತ್ತೆ ಹೇಳಬೇಕಾಗುತ್ತದೆ. ಏಜೆಂಟ್ ಕೆಲಸ ಮಾಡುತ್ತದೆ, ಆದರೆ ಸಂಭಾಷಣೆಯು ಕೃತಕವಾಗಿ ಭಾಸವಾಗುತ್ತದೆ.

ನಾನು ಮಾಡೆಲ್ ಅನ್ನು ಸ್ಪಷ್ಟವಾಗಿ ಮಾಡುವ ಮೂಲಕ ಇದನ್ನು ಸರಿಪಡಿಸಿದೆ:

ಕೆಲಸ ಪೂರ್ಣಗೊಂಡಿದ್ದನ್ನು ಸೆಷನ್‌ನ ಅಂತ್ಯವೆಂದು ಪರಿಗಣಿಸುವುದನ್ನು ನಾನು ನಿಲ್ಲಿಸಿದೆ. ಈ ಸಣ್ಣ ಬದಲಾವಣೆಯು ಇಡೀ ಉತ್ಪನ್ನದ ಅನುಭವವನ್ನು ಸುಧಾರಿಸುತ್ತದೆ.

CliGate ನಲ್ಲಿ, ಹೊಸ ಸೆಷನ್ ಈ ಕೆಳಗಿನ ಸಂದರ್ಭಗಳಲ್ಲಿ ಮಾತ್ರ ಪ್ರಾರಂಭವಾಗುತ್ತದೆ:

ಇದು ಮನುಷ್ಯರ ಆಲೋಚನಾ ಕ್ರಮಕ್ಕೆ ಹೊಂದಿಕೆಯಾಗುತ್ತದೆ. ಬಳಕೆದಾರರು ಒಂದು ಚಾಟ್ ಟ್ಯಾಬ್ ಒಂದೇ ನಿರಂತರ ಥ್ರೆಡ್‌ನಂತೆ ಕಾರ್ಯನಿರ್ವಹಿಸಬೇಕೆಂದು ನಿರೀಕ್ಷಿಸುತ್ತಾರೆ. Telegram ಅಥವಾ Feishu ನಂತಹ ಮೊಬೈಲ್ ಅಪ್ಲಿಕೇಶನ್‌ಗಳಲ್ಲಿ ಇದು ಬಹಳ ಮುಖ್ಯವಾಗಿದೆ.

ಹೊಸ ತರ್ಕವು ಸರಳವಾಗಿದೆ:

ಇದು ಏಜೆಂಟ್ ಅನ್ನು ಕೇವಲ ಕಮಾಂಡ್ ಲಾಂಚರ್ ಆಗಿ ಕಾಣುವ ಬದಲು, ಒಬ್ಬ ಸಹೋದ್ಯೋಗಿಯಂತೆ ಭಾಸವಾಗುವಂತೆ ಮಾಡುತ್ತದೆ.

ನೀವು ಕೋಡಿಂಗ್ ಏಜೆಂಟ್‌ಗಳನ್ನು ನಿರ್ಮಿಸುತ್ತಿದ್ದರೆ, ಇದನ್ನು ನೆನಪಿಡಿ: ಸಂಭಾಷಣೆಯು ಸುಸ್ಥಿರ ಘಟಕವಾಗಿದೆ (durable unit). ರನ್‌ಟೈಮ್ ಸೆಷನ್ ಎಂಬುದು ಮರುಬಳಕೆ ಮಾಡಬಹುದಾದ ಕೆಲಸಗಾರ (reusable worker). ಟರ್ನ್ ಎಂಬುದು ಯಶಸ್ಸು ಅಥವಾ ವೈಫಲ್ಯದ ನಂತರ ಕೊನೆಗೊಳ್ಳುವ ಪ್ರಕ್ರಿಯೆ.

ಈ ಮೂರು ಪದರಗಳನ್ನು ಪ್ರತ್ಯೇಕಿಸಿ. ನಿಮ್ಮ ಫಾಲೋ-ಅಪ್‌ಗಳು ಅಂತಿಮವಾಗಿ ಸಂಭಾಷಣೆಯಂತೆ ಅನಿಸುತ್ತವೆ.

ಮೂಲ: https://dev.to/codekingai/my-coding-agent-finished-the-task-why-did-the-thread-die-2jk2

ಐಚ್ಛಿಕ ಕಲಿಕಾ ಸಮುದಾಯ: https://t.me/GyaanSetuAi