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

ഒരു കോഡിംഗ് ഏജന്റിലെ ഏറ്റവും മോശം ബഗ് ഒരു ക്രാഷ് (crash) അല്ല.

ആദ്യത്തെ ടാസ്ക് വിജയിക്കുമ്പോഴും അടുത്ത മെസ്സേജ് അയക്കുമ്പോൾ ഏജന്റിന് എല്ലാം മറന്നുപോയതുപോലെ തോന്നുന്നതാണ് ഏറ്റവും വലിയ പ്രശ്നം. നിങ്ങൾ ഒരു ടാസ്ക് ആവശ്യപ്പെടുന്നു. ഏജന്റ് അത് പൂർത്തിയാക്കുന്നു. തുടർന്ന് നിങ്ങൾ പറയുന്നു: "ബട്ടൺ പച്ച നിറമാക്കൂ."

നിങ്ങൾക്ക് ഇത് ഒരേ സംഭാഷണമാണ്. എന്നാൽ സിസ്റ്റത്തെ സംബന്ധിച്ചിടത്തോളം, ഒരു ടാസ്ക് പൂർത്തിയാകുക എന്നാൽ സെഷൻ (session) അവസാനിച്ചു എന്നാണ് അർത്ഥം. സിസ്റ്റം വീണ്ടും പൂജ്യത്തിൽ നിന്ന് തുടങ്ങുന്നു.

CliGate നിർമ്മിക്കുന്നതിനിടെ, ഞാൻ മൂന്ന് വ്യത്യസ്ത തലങ്ങളെ (layers) തമ്മിൽ കൂട്ടിക്കലർത്തി എന്ന് ഞാൻ തിരിച്ചറിഞ്ഞു:

ഇവ ഒന്നുപോലെയല്ല.

ഒരു സംഭാഷണം എന്നത് സംസാരിക്കാനായി നിലനിൽക്കുന്ന ഒരു ഇടമാണ്. ഒരു റൺടൈം സെഷൻ എന്നത് ആ സംഭാഷണത്തിനായുള്ള വർക്കിംഗ് ത്രെഡ് (working thread) ആണ്. ഒരു ടേൺ എന്നത് ആ സെഷനുള്ളിലെ ഒരു ഒറ്റപ്പെട്ട റൺ (run) ആണ്.

ഒരു ടാസ്ക് പൂർത്തിയാകുമ്പോൾ, ആ ടേൺ മാത്രമേ അവസാനിക്കാവൂ. സെഷൻ സജീവമായി തുടരണം.

തകരാറുള്ള പ്രക്രിയ ഇപ്രകാരമാണ്: യൂസർ ഒരു ടാസ്ക് ആവശ്യപ്പെടുന്നു -> റൺടൈം സെഷൻ ആരംഭിക്കുന്നു -> ടാസ്ക് പൂർത്തിയാകുന്നു -> സംഭാഷണം സജീവമായ സെഷനെ ക്ലിയർ ചെയ്യുന്നു -> അടുത്ത ഫോളോ-അപ്പ് ഒരു പുതിയ സെഷൻ ആരംഭിക്കുന്നു.

ഇത് താഴെ പറയുന്ന ചെറിയ ഫോളോ-അപ്പുകളെ തടസ്സപ്പെടുത്തുന്നു:

സിസ്റ്റം ഉടൻ തന്നെ സെഷൻ വിച്ഛേദിക്കുകയാണെങ്കിൽ, നിങ്ങൾ എല്ലാം വീണ്ടും പറയേണ്ടി വരും. ഏജന്റ് പ്രവർത്തിക്കുന്നുണ്ടെങ്കിലും, സംഭാഷണം സ്വാഭാവികമായി തോന്നില്ല.

മോഡലിനെ കൂടുതൽ വ്യക്തമാക്കിക്കൊണ്ട് ഞാൻ ഇത് പരിഹരിച്ചു:

ടാസ്ക് പൂർത്തിയാകുന്നതിനെ സെഷന്റെ അവസാനമായി കാണുന്നത് ഞാൻ നിർത്തി. ഈ ചെറിയ മാറ്റം ഉൽപ്പന്നത്തിന്റെ മൊത്തത്തിലുള്ള അനുഭവം മെച്ചപ്പെടുത്തുന്നു.

CliGate-ൽ, താഴെ പറയുന്ന സാഹചര്യങ്ങളിൽ മാത്രമേ പുതിയ സെഷൻ ആരംഭിക്കൂ:

ഇത് മനുഷ്യരുടെ ചിന്താരീതിക്ക് അനുയോജ്യമാണ്. ഒരു ചാറ്റ് ടാബ് ഒരു തുടർച്ചയായ സംഭാഷണമായിരിക്കുമെന്ന് ഉപയോക്താവ് പ്രതീക്ഷിക്കുന്നു. Telegram അല്ലെങ്കിൽ Feishu പോലുള്ള മൊബൈൽ ആപ്പുകളിൽ ഇത് വളരെ പ്രധാനമാണ്.

പുതിയ ലോജിക് ലളിതമാണ്:

ഇത് ഏജന്റിനെ വെറുമൊരു കമാൻഡ് ലോഞ്ചർ എന്നതിലുപരി ഒരു സഹപ്രവർത്തകൻ (coworker) പോലെ തോന്നിപ്പിക്കുന്നു.

നിങ്ങൾ കോഡിംഗ് ഏജന്റുകൾ നിർമ്മിക്കുകയാണെങ്കിൽ, ഇത് ഓർക്കുക: സംഭാഷണമാണ് (conversation) നിലനിൽക്കുന്ന അടിസ്ഥാന ഘടകം. റൺടൈം സെഷൻ (runtime session) എന്നത് വീണ്ടും ഉപയോഗിക്കാവുന്ന ഒരു തൊഴിലാളിയാണ്. വിജയത്തിലോ പരാജയത്തിലോ അവസാനിക്കുന്നത് ടേൺ (turn) ആണ്.

ഈ മൂന്ന് പാളികളെ വേർതിരിക്കുക. നിങ്ങളുടെ ഫോളോ-അപ്പുകൾ ഒടുവിൽ ഒരു സംഭാഷണം പോലെ തോന്നും.

സ്രോതസ്സ്: https://dev.to/codekingai/my-coding-agent-finished-the-task-why-did-the-thread-die-2jk2

ഓപ്ഷണൽ ലേണിംഗ് കമ്മ്യൂണിറ്റി: https://t.me/GyaanSetuAi