ഏക ഐക്കൺ തടസ്സം
കഠിനമായ ഒരു കോഡിംഗ് സെഷൻ നടക്കുമ്പോൾ നിങ്ങളുടെ സ്ക്രീൻ ഒന്ന് സങ്കൽപ്പിക്കുക. ഒരു ടെർമിനൽ ടാബിൽ, Claude Code ഒരു React കമ്പോണന്റ് റീഫാക്ടർ ചെയ്യുന്നു. മറ്റൊന്നിൽ, Codex ഒരു Python മോഡ്യൂൾ വീണ്ടും എഴുതുന്നു. മൂന്നാമതൊരു ഏജന്റ് യൂണിറ്റ് ടെസ്റ്റുകൾ തയ്യാറാക്കുന്നു, നാലാമത്തേത് ഒരു API കീക്കായി കാത്തിരിക്കുന്നു, അഞ്ചാമത്തേത് ഒരു ബാക്ക്ഗ്രൗണ്ട് ലിന്റർ പാസ് (linter pass) പൂർത്തിയാക്കി കഴിഞ്ഞു. നിങ്ങളുടെ മെനു ബാറിന്—അല്ലെങ്കിൽ നിങ്ങൾ ഉപയോഗിക്കുന്ന സിസ്റ്റം ട്രേയ്ക്ക്—ഒരു സ്റ്റാറ്റസ് ഐക്കണിന് മാത്രമേ ഇടമുള്ളൂ. ഒരു ചെറിയ കുത്തോ ലേബലോ കൊണ്ട് ഈ മുഴുവൻ കൂട്ടത്തെയും പ്രതിനിധീകരിക്കേണ്ടതുണ്ട്. ചോദ്യം ഇതാണ്, ഏത് സെഷനാണ് ആ സ്ഥാനം അർഹിക്കുന്നത്?
ഏറ്റവും എളുപ്പമുള്ള ഉത്തരം, അവസാനം ചലിച്ച സെഷൻ കാണിക്കുക എന്നതാണ്. അത് യുക്തിസഹമായി തോന്നാം. എന്തോ ഒന്ന് സംഭവിച്ചു, അതിനാൽ അത് മുകളിലേക്ക് വരുന്നു. എന്നാൽ ആ സഹജവാസന തെറ്റാണ്, അത് നിങ്ങൾക്ക് തിരിച്ചടിയാകും. ഒരു ബാക്ക്ഗ്രൗണ്ട് ഫയൽ വാച്ചർ ടൈംസ്റ്റാമ്പ് അപ്ഡേറ്റ് ചെയ്യുന്നത് സഹായത്തിനായുള്ള ഒരു വിളിയല്ല. അതേസമയം, പത്ത് മിനിറ്റ് മുമ്പ് ഒരു പെർമിഷൻ എറർ (permission error) വന്ന ഒരു സെഷൻ, നിങ്ങൾ "yes" എന്ന് ടൈപ്പ് ചെയ്യാനോ ഒരു പാത്ത് (path) ശരിയാക്കാനോ കാത്തിരുന്ന് അദൃശ്യമായിരിക്കാം. നിങ്ങൾ ഏറ്റവും പുതിയത് (recency) അനുസരിച്ച് ക്രമീകരിച്ചാൽ, നിങ്ങളുടെ ശ്രദ്ധ ഏറ്റവും ആവശ്യമുള്ള കാര്യത്തെ നിങ്ങൾ മറച്ചുവെക്കുന്നു. നിങ്ങൾ ക്രമീകരിക്കേണ്ടത് ആക്ഷനബിലിറ്റി (actionability) അനുസരിച്ചാണ്.
എന്തുകൊണ്ട് റെസൻസി (Recency) പരാജയപ്പെടുന്നു
ഡെവലപ്പർമാർ ടൈംസ്റ്റാമ്പുകൾ ഉപയോഗിക്കുന്നത് അവ എളുപ്പമായതുകൊണ്ടാണ്. എല്ലാ സിസ്റ്റങ്ങളും അവ ഉൽപ്പാദിപ്പിക്കുന്നു, എല്ലാ ഡാറ്റാബേസുകളും അവ ഇൻഡക്സ് ചെയ്യുന്നു, കൂടാതെ അവ ക്രമീകരിക്കുന്നത് ഒരു വരി കോഡ് കൊണ്ട് മാത്രം സാധ്യമാണ്. എന്നാൽ ഒന്നിലധികം സ്വതന്ത്ര വർക്കർമാരെ നിങ്ങൾ നിയന്ത്രിക്കാൻ (orchestrating) തുടങ്ങുന്ന നിമിഷം, ഈ എളുപ്പവഴി പ്രയോജനകരമല്ലാതാകുന്നു.
ഇതാ ഒരു വ്യക്തമായ പരാജയസാധ്യത. സെഷൻ അഞ്ച് ഒരു ലോഗ് ലൈൻ (log line) ചേർത്തു, കാരണം അതിന്റെ डिपൻഡൻസി വാച്ചർ (dependency watcher) node_modules-ൽ ഒരു ഫയൽ മാറ്റം ശ്രദ്ധിച്ചു. അതിന്റെ ടൈംസ്റ്റാമ്പ് ഇപ്പോൾ എന്ന നിലയിലേക്ക് പുതുക്കപ്പെട്ടു. എന്നാൽ, സെഷൻ രണ്ട് മൂന്ന് മിനിറ്റ് മുമ്പ് നിങ്ങളോട് ഒരു ചോദ്യം ചോദിച്ചു: "Should I install this package? (y/n)". നിങ്ങൾ അതിന് മറുപടി നൽകിയിട്ടില്ല. നിങ്ങളുടെ മെനു ബാർ ഏറ്റവും പുതിയ സെഷൻ കാണിക്കുകയാണെങ്കിൽ, സെഷൻ അഞ്ചിന് പച്ച നിറം ലഭിക്കുകയും സെഷൻ രണ്ട് ലിസ്റ്റിൽ നിന്ന് അപ്രത്യക്ഷമാവുകയും ചെയ്യും. ഒന്നും തകരാറിലായതായി തോന്നില്ല. എന്നിരുന്നാലും, നിങ്ങൾക്ക് ആവശ്യമില്ലാത്ത ഒരു ലിന്റർ (linter) നിരീക്ഷിക്കുന്ന തിരക്കിലായിരിക്കുമ്പോൾ, നിങ്ങളുടെ ഒരു ഏജന്റ് നിങ്ങളുടെ തീരുമാനത്തിനായി തടസ്സപ്പെട്ടു നിൽക്കുകയാണ്.
റെസൻസി ചലനത്തെ അളക്കുന്നു. അർജൻസിക്ക് (Urgency) അർത്ഥം ആവശ്യമാണ്. ഒരു ഫയൽ എഴുതുന്നത് (file write) നിങ്ങൾക്ക് ഒരു ടാസ്ക് സൃഷ്ടിക്കുന്നില്ലെങ്കിൽ അതിന് സ്വാഭാവികമായ അർത്ഥമില്ല. എന്നാൽ, കാത്തിരിക്കുന്ന ഒരു പ്രോംപ്റ്റ് (prompt) എന്നത് ശുദ്ധമായ ആക്ഷനബിലിറ്റി ആണ്. ബാക്ക്ഗ്രൗണ്ടിൽ കാര്യങ്ങൾ മാറുന്നത് നോക്കി മാത്രം നിങ്ങൾക്ക് കോഡ് ഷിപ്പ് (ship) ചെയ്യാൻ കഴിയില്ല. തടസ്സങ്ങൾ (blockers) നീക്കം ചെയ്യുന്നതിലൂടെയാണ് നിങ്ങൾ അത് ഷിപ്പ് ചെയ്യുന്നത്. ചിന്താഗതിയിലുള്ള ആദ്യത്തെ മാറ്റം ലളിതമാണ്: ടൈംസ്റ്റാമ്പിനെ ഒരു ടൈബ്രേക്കർ (tiebreaker) ആയി മാത്രം കാണുക, ഒരിക്കലും ഒരു പ്രാഥമിക സിഗ്നലായി കാണരുത്.
ആദ്യം തരംതിരിക്കുക, പിന്നെ ക്രമീകരിക്കുക
ഇതിലും നല്ലൊരു രീതി രണ്ട് ഘട്ടങ്ങളുള്ള ഒരു ഫിൽട്ടർ ആണ്. ഒന്നാമതായി, ഓരോ സെഷനും നിങ്ങളിൽ നിന്ന് എന്താണ് ആവശ്യമെന്ന് അടിസ്ഥാനമാക്കി അവയ്ക്ക് ലേബൽ നൽകുക. രണ്ടാമതായി, ആ ലേബലുകളെ ക്രമീകരിക്കുക. രണ്ട് സെഷനുകൾക്ക് ഒരേ ലേബൽ ആണെങ്കിൽ മാത്രം സമയം നോക്കുക.
നിങ്ങളുടെ വർക്ക്ഫ്ലോയിൽ (workflow) 'അർജന്റ്' (urgent) എന്നാൽ യഥാർത്ഥത്തിൽ എന്താണെന്ന് നിർവചിക്കാൻ ഇത് നിങ്ങളെ പ്രേരിപ്പിക്കുന്നു. ഒരു റേറ്റ്-ലിമിറ്റഡ് (rate-limited) സെഷൻ അർജന്റ് അല്ല; അത് ഉറക്കത്തിലാണ്. ഒരു വർക്കിംഗ് സെഷൻ തിരക്കിലായിരിക്കും, എന്നാൽ അതിന് ഒരു തീരുമാനം ആവശ്യമില്ലെങ്കിൽ, അതിന് സമാധാനമായി കമ്പ്യൂട്ടിംഗ് തുടരാം. ഒരു സ്റ്റാൾഡ് (stalled) സെഷൻ അർജന്റ് ആണ്, കാരണം പിശകുകൾ (errors) പ്രശ്നങ്ങൾ വർദ്ധിപ്പിക്കും. മറുപടിയില്ലാത്ത ഒരു ഹാൻഡ്ഓഫ് (handoff) അർജന്റ് ആണ്, കാരണം അടുത്ത ഘട്ടത്തിന്റെ ഉത്തരവാദിത്തം നിങ്ങൾക്കാണ്, നിങ്ങൾ പ്രവർത്തിക്കുന്നത് വരെ ഏജന്റിന് മുന്നോട്ട് പോകാൻ കഴിയില്ല.
തരംതിരിക്കൽ നിങ്ങളുടെ മെനു ബാറിനെ ഒരു ന്യൂസ് ഫീഡിൽ നിന്ന് ഒരു ടാസ്ക് ലിസ്റ്റാക്കി മാറ്റുന്നു. ക്രമീകരണ ഘട്ടം പിന്നീട് യാന്ത്രികമായി മാറുന്നു. തടസ്സപ്പെട്ട ഒരു വർക്കർ തിരക്കുള്ള ഒരു വർക്കറിനേക്കാൾ മുൻഗണന അർഹിക്കുന്നു എന്ന് നിങ്ങൾ നേരത്തെ തന്നെ തീരുമാനിച്ചു കഴിഞ്ഞു. കാണാത്ത ഒരു ചോദ്യം കണ്ട ഒരു ചോദ്യത്തേക്കാൾ മുൻഗണന അർഹിക്കുന്നു എന്നും നിങ്ങൾ തീരുമാനിച്ചു കഴിഞ്ഞു. ഒരേ മുൻഗണനാ നിലവാരത്തിൽ രണ്ട് സെഷനുകൾ ആവശ്യപ്പെടുമ്പോൾ മാത്രമേ സമയം പരിഗണനയിൽ വരുന്നുള്ളൂ. അപ്പോൾ, അപ്പോൾ മാത്രം, പഴയ സെഷൻ വിജയിക്കുന്നു. ഇത് 'ആദ്യം വരുന്നവർക്ക് ആദ്യം' എന്ന നീതിക്ക് വേണ്ടിയുള്ള ചെറിയൊരു സഹായമാണ്, എന്നാൽ അത് ഒരിക്കലും അവസ്ഥയെ (state) മറികടക്കാൻ പാടില്ല.
ഒരു പ്രായോഗിക മുൻഗണനാ സ്കെയിൽ
Agent Island v1.7.1-ൽ, ഒന്നിലധികം AI സെഷനുകൾ പ്രവർത്തിപ്പിക്കുന്ന ആർക്കും ഉപയോഗിക്കാവുന്ന അഞ്ച് പോയിന്റുകളുള്ള ഒരു സ്കെയിലായി ടീം ഇതിനെ ഔദ്യോഗികമാക്കി:
- അറിയിക്കാത്ത needs-you: 4. സെഷൻ എന്തോ ഒന്ന് നിങ്ങൾക്ക് കൈമാറിയിട്ടുണ്ട്, എന്നാൽ നിങ്ങൾ അത് ഇതുവരെ കണ്ടിട്ടില്ല. അടുത്ത നീക്കം നിങ്ങളുടെ ഉത്തരവാദിത്തമാണ്.
- Stalled: 3. സെഷൻ ഒരു എറർ (error), പെർമിഷൻ പരാജയം അല്ലെങ്കിൽ മറ്റേതെങ്കിലും തടസ്സം നേരിട്ടു. അതിന് സ്വയം പരിഹരിക്കാൻ കഴിയില്ല എന്നതിനാൽ നിങ്ങളുടെ ശ്രദ്ധ ആവശ്യമാണ്.
- Working: 2. സെഷൻ സജീവമായി കമ്പ്യൂട്ട് ചെയ്യുന്നു. അത് നിങ്ങളെ കാത്തിരിക്കുകയല്ല, അതിനാൽ കൂടുതൽ അർജന്റ് ആയ ഒന്നുമില്ലെങ്കിൽ മാത്രമേ അതിന് ഐക്കൺ ലഭിക്കൂ.
- അറിയുന്ന needs-you: 1. നിങ്ങൾ പ്രോംപ്റ്റോ ചോദ്യമോ കണ്ടു കഴിഞ്ഞു, എന്നാൽ അതിന് മറുപടി നൽകിയിട്ടില്ല. നിങ്ങൾ അതിനെക്കുറിച്ച് ബോധവാനാണ്, അതിനാൽ അതിന്റെ അർജൻസി കാണാത്ത തടസ്സങ്ങളേക്കാൾ ഒരു പടി താഴെയായിരിക്കും.
- Idle അല്ലെങ്കിൽ rate limited: 0. സെഷൻ വെറും പശ്ചാത്തല ശബ്ദം പോലെയാണ്. അത് അതിന്റെ ഊഴത്തിനായി കാത്തിരിക്കുകയോ അല്ലെങ്കിൽ ഒന്നും ചെയ്യാതിരിക്കുകയോ ആണ്.
ഈ സ്കെയിൽ ഉപയോക്താവിന്റെ പ്രവർത്തനങ്ങളുമായി കൃത്യമായി യോജിക്കുന്നു. നിങ്ങൾ ഒരു ഹാൻഡ്ഓഫ് (handoff) പൂർത്തിയാക്കുമ്പോൾ, സെഷൻ working അല്ലെങ്കിൽ idle എന്ന നിലയിലേക്ക് മാറുന്നു. ഒരു working സെഷനിൽ എറർ ഉണ്ടാകുമ്പോൾ, അത് stalled എന്ന നിലയിലേക്ക് മാറുന്നു. നിങ്ങൾ ഒരു പ്രോംപ്റ്റ് അക്നോളജ് (acknowledge) ചെയ്യാൻ ക്ലിക്ക് ചെയ്യുമ്പോൾ എന്നാൽ
