എന്റെ Cron 'OK' എന്ന് പറഞ്ഞു, പക്ഷേ ഒന്നും ചെയ്തില്ല
കഴിഞ്ഞ ചൊവ്വാഴ്ച, എന്റെ OpenClaw ഏജന്റ് ഒരു സെക്യൂരിറ്റി ഓഡിറ്റ് നടത്തി.
ഡാഷ്ബോർഡിൽ പച്ച വെളിച്ചം കാണിച്ചു. അത് status: ok എന്ന് കാണിച്ചു. പിശകുകളോ (errors) മുന്നറിയിപ്പുകളോ (alerts) ഉണ്ടായിരുന്നില്ല.
എന്നാൽ ഏജന്റ് ഒന്നും ചെയ്തില്ല.
ടാസ്ക് നടക്കുമ്പോൾ ഏജന്റ് ക്രാഷ് ആയി. ഒരു MiniMax overload error സംഭവിച്ചു. പുറത്തുള്ള ഫ്രെയിംവർക്കിന് (framework) അത് കണ്ടെത്താൻ കഴിഞ്ഞില്ല. ഏജന്റ് പരാജയപ്പെട്ടെങ്കിലും ഫ്രെയിംവർക്ക് അത് വിജയകരമായി പൂർത്തിയായതായി കണക്കാക്കി.
മൂന്ന് ദിവസങ്ങൾക്ക് ശേഷം സെഷൻ ട്രാൻസ്ക്രിപ്റ്റ് (session transcript) നേരിട്ട് പരിശോധിച്ചപ്പോഴാണ് ഞാൻ ഈ പിശക് കണ്ടെത്തിയത്.
ഇത്തരം നിശബ്ദമായ ക്രാഷുകൾ (silent crashes) കണ്ടെത്തുന്നതിന് എനിക്ക് ഒരു മാർഗ്ഗം ആവശ്യമായിരുന്നു. അത് പരിഹരിക്കാനായി ഞാൻ 30 വരികളുള്ള ഒരു റിവ്യൂ സ്ക്രിപ്റ്റ് നിർമ്മിച്ചു.
The Problem ഫ്രെയിംവർക്കുകൾ നെറ്റ്വർക്ക് ടൈമൗട്ടുകളും (network timeouts) ഓതന്റിക്കേഷൻ പരാജയങ്ങളും (auth failures) കണ്ടെത്തുന്നു. എന്നാൽ ഒരു ഏജന്റ് ടേണിനുള്ളിൽ (agent turn) എന്താണ് സംഭവിക്കുന്നത് എന്ന് അവ കണ്ടെത്തില്ല. ഒരു സബ്-ഏജന്റ് ക്രാഷ് ചെയ്യുമ്പോൾ, സിസ്റ്റം പലപ്പോഴും ഒരു പ്രത്യേക സന്ദേശം നൽകുന്നു: "[assistant turn failed before producing content]".
ഫ്രെയിംവർക്കിനെ സംബന്ധിച്ചിടത്തോളം, ഇതൊരു സാധാരണ സന്ദേശമാണ്. സ്റ്റാറ്റസ് "ok" എന്ന് തന്നെ തുടരുന്നു. ഇതൊരു നിശബ്ദ പരാജയമാണ് (silent failure). കണ്ടെത്താൻ ഏറ്റവും പ്രയാസമുള്ള പിശകുകളിൽ ഒന്നാണിത്.
The Solution സ്റ്റാറ്റസ് കോഡ് മാത്രം നോക്കുന്നതിന് പകരം യഥാർത്ഥ ട്രാൻസ്ക്രിപ്റ്റ് ഉള്ളടക്കം പരിശോധിക്കുന്നതിനായി ഞാൻ ഒരു സ്ക്രിപ്റ്റ് ചേർത്തു.
സ്ക്രിപ്റ്റ് ആ പ്രത്യേക പരാജയ സന്ദേശത്തിനായി (failure string) തിരയുന്നു. ടെക്സ്റ്റിൽ നിന്ന് കൃത്യമായ എറർ മെസ്സേജ് വേർതിരിച്ചെടുക്കാൻ ഇത് ഒരു റെഗുലർ എക്സ്പ്രഷനും (regular expression) ഉപയോഗിക്കുന്നു.
ഇത് യഥാർത്ഥ കാരണം കാണിക്കാൻ സ്ക്രിപ്റ്റിനെ സഹായിക്കുന്നു, ഉദാഹരണത്തിന്:
- overloaded_error
- rate_limit_exceeded
- context_length_exceeded
എറർ വിവരങ്ങൾ കണ്ടുകഴിഞ്ഞപ്പോൾ, ഞാൻ അതിന്റെ മൂലകാരണം (root cause) കണ്ടെത്തി. ഒരു മോഡൽ ഫാൽബാക്ക് ചെയിൻ (model fallback chain) കാരണമാണ് ക്രാഷുകൾ സംഭവിച്ചത്. തുടർച്ചയായ പരാജയങ്ങൾക്ക് (cascading failures) കാരണമായ ഫ്രീ ഫാൽബാക്ക് മോഡൽ ഞാൻ നീക്കം ചെയ്തു. അത് നീക്കം ചെയ്തതോടെ എന്റെ ക്രോണുകൾ (crons) കൂടുതൽ വേഗതയുള്ളതും വിശ്വസനീയവുമായി മാറി.
The Result സ്ക്രിപ്റ്റ് ഇപ്പോൾ എല്ലാ രാത്രിയിലും പ്രവർത്തിക്കുന്നു. ഇത് തലേദിവസത്തെ ട്രാൻസ്ക്രിപ്റ്റുകൾ പരിശോധിക്കുന്നു. ഒരു നിശബ്ദ ക്രാഷ് കണ്ടെത്തിയാൽ, അത് എന്റെ ടെലിഗ്രാമിലേക്ക് (Telegram) ഒരു അലേർട്ട് അയക്കുന്നു.
പിശകുകൾ കണ്ടെത്താൻ ഞാൻ ഇനി ദിവസങ്ങളോളം കാത്തിരിക്കേണ്ടതില്ല. എല്ലാ ദിവസവും രാവിലെ തന്നെ ഞാൻ അവ കാണുന്നു.
The Lesson ഡാഷ്ബോർഡിൽ പച്ച വെളിച്ചം കാണുന്നു എന്നതിനർത്ഥം നിങ്ങളുടെ ഏജന്റ് പ്രവർത്തിച്ചു എന്നല്ല. ഫ്രെയിംവർക്ക് സ്റ്റാറ്റസും ഏജന്റ് ഔട്ട്പുട്ടും വ്യത്യസ്ത കാര്യങ്ങളാണ്.
നിങ്ങൾ ഓട്ടോമേറ്റഡ് ഏജന്റുകൾ പ്രവർത്തിപ്പിക്കുന്നുണ്ടെങ്കിൽ, സ്റ്റാറ്റസ് കോഡുകളെ മാത്രം ആശ്രയിക്കരുത്. ട്രാൻസ്ക്രിപ്റ്റുകൾ പരിശോധിക്കുക. നിങ്ങൾക്കായി ട്രാൻസ്ക്രിപ്റ്റുകൾ പരിശോധിക്കുന്ന ഒരു ടൂൾ നിർമ്മിക്കുക. നിശബ്ദ പരാജയങ്ങളാണ് (silent failures) ഏറ്റവും കൂടുതൽ നാശനഷ്ടങ്ങൾ ഉണ്ടാക്കുന്നത്.
Optional learning community: https://t.me/GyaanSetuAi