எனது கோடிங் ஏஜென்ட் பணியை முடித்துவிட்டது. ஏன் அந்தத் த்ரெட் (thread) முடங்கியது?
ஒரு கோடிங் ஏஜென்ட்டில் (coding agent) ஏற்படும் மிக மோசமான பிழை என்பது கிராஷ் (crash) ஆவது அல்ல.
முதல் பணி வெற்றியடையும் போது, அடுத்த செய்தி ஏதோ மறதி (amnesia) போலத் தோன்றுவதே அந்தப் பிழை. நீங்கள் ஒரு பணியைக் கேட்கிறீர்கள். ஏஜென்ட் அதை முடிக்கிறது. பிறகு நீங்கள் சொல்கிறீர்கள்: "அந்த பட்டனைப் பச்சை நிறமாக மாற்று."
உங்களுக்கு, இது ஒரே உரையாடல். ஆனால் சிஸ்டத்திற்கு (system), ஒரு பணி முடிவடைவது என்பது பெரும்பாலும் அந்தச் செஷன் (session) முடிந்துவிட்டது என்று அர்த்தம். சிஸ்டம் மீண்டும் ஆரம்பத்திலிருந்து தொடங்குகிறது.
CliGate-ஐ உருவாக்கும்போது, நான் மூன்று வெவ்வேறு அடுக்குகளை (layers) ஒன்றாகக் கலந்துவிட்டதை உணர்ந்தேன்:
- உரையாடல் (chat conversation)
- ரன்டைம் செஷன் (runtime session)
- தற்போதைய எக்ஸிகியூஷன் டர்ன் (current execution turn)
இவை ஒன்றல்ல.
உரையாடல் என்பது பேசுவதற்கான ஒரு நீண்டகாலத் தளம். ரன்டைம் செஷன் என்பது அந்த உரையாடலுக்கான வேலை செய்யும் த்ரெட் (working thread). ஒரு டர்ன் (turn) என்பது அந்தச் செஷனுக்குள் நடக்கும் ஒரு ஒற்றை இயக்கம்.
ஒரு பணி முடிவடையும் போது, அந்த டர்ன் (turn) மட்டுமே முடிவடைய வேண்டும். செஷன் (session) தொடர்ந்து செயல்பாட்டில் இருக்க வேண்டும்.
அந்தப் பிழையான ஓட்டம் (flow) இப்படித்தான் இருக்கும்: பயனர் ஒரு பணியைக் கேட்கிறார் -> ரன்டைம் செஷன் தொடங்குகிறது -> பணி முடிவடைகிறது -> உரையாடல் அந்தச் செயல்பாட்டில் உள்ள செஷனைத் துடைத்துவிடுகிறது -> அடுத்த தொடர் கேள்வி ஒரு புதிய செஷனைத் தொடங்குகிறது.
இது போன்ற சிறிய தொடர் கேள்விகளைப் பாதிக்கிறது:
- அதை மீண்டும் முயற்சி செய் (retry that)
- இதேதை இந்த ஃபைலுக்கும் செய் (do the same for this file)
- பிழையை விளக்கு (explain the error)
- தொடரு (continue)
சிஸ்டம் உடனடியாகச் செஷனைத் துண்டித்துவிட்டால், நீங்கள் அனைத்தையும் மீண்டும் சொல்ல வேண்டியிருக்கும். ஏஜென்ட் வேலை செய்கிறது, ஆனால் உரையாடல் செயற்கையாகத் தோன்றும்.
மாடலை (model) வெளிப்படையானதாக மாற்றுவதன் மூலம் நான் இதைச் சரிசெய்தேன்:
- உரையாடல்கள் நிலையானவை (persistent).
- ரன்டைம் செஷன்கள் இயல்பாகவே தொடர்ச்சியானவை (sticky by default).
- முடிந்த அல்லது தோல்வியடைந்த பணிகள் தற்போதைய டர்னை (turn) மட்டுமே முடிக்கும்.
- பயனர்
இந்த மூன்று அடுக்குகளையும் பிரிக்கவும். உங்கள் தொடர்ச்சியான கேள்விகள் (follow-ups) இறுதியாக ஒரு உரையாடல் போலத் தோன்றும்.
ஆதாரம்: https://dev.to/codekingai/my-coding-agent-finished-the-task-why-did-the-thread-die-2jk2
விருப்பமான கற்றல் சமூகம்: https://t.me/GyaanSetuAi