𝗠𝘆 𝗖𝗼𝗱𝗶𝗻𝗴 𝗔𝗴𝗲𝗻𝘁 𝗙𝗶𝗻𝗶𝘀𝗵𝗲𝗱 𝗧𝗵𝗲 𝗧𝗮𝘀𝗸. 𝗪𝗵𝘆 𝗗𝗶𝗱 𝗧𝗵𝗲 𝗧𝗵𝗿𝗲𝗮𝗱 𝗗𝗶𝗲?
કોડિંગ એજન્ટમાં સૌથી ખરાબ બગ (bug) ક્રેશ (crash) નથી.
તે ત્યારે થાય છે જ્યારે પ્રથમ કાર્ય સફળ થાય છે પરંતુ પછીનો સંદેશ એવો લાગે જાણે એજન્ટ સ્મૃતિભ્રંશ (amnesia) નો શિકાર થયો હોય. તમે કોઈ કાર્ય માટે પૂછો છો. એજન્ટ તેને પૂર્ણ કરે છે. પછી તમે કહો છો: "બટન લીલું કરો."
તમારા માટે, આ એક જ વાતચીત છે. સિસ્ટમ માટે, પૂર્ણ થયેલ કાર્યનો અર્થ ઘણીવાર એવો થાય છે કે સત્ર (session) સમાપ્ત થઈ ગયું છે. સિસ્ટમ ફરીથી શૂન્યથી શરૂઆત કરે છે.
CliGate બનાવતી વખતે, મને સમજાયું કે મેં ત્રણ અલગ-અલગ સ્તરો (layers) મિક્સ કરી દીધા હતા:
- ચેટ વાતચીત (chat conversation)
- રનટાઇમ સત્ર (runtime session)
- વર્તમાન એક્ઝિક્યુશન ટર્ન (current execution turn)
આ ત્રણેય એક સમાન નથી.
વાતચીત એ વાત કરવા માટેનું લાંબા સમય સુધી ચાલતું સ્પેસ છે. રનટાઇમ સત્ર એ તે વાતચીત માટેનો વર્કિંગ થ્રેડ છે. ટર્ન એ તે સત્રની અંદરનું એક સિંગલ રન છે.
જ્યારે કોઈ કાર્ય પૂર્ણ થાય, ત્યારે ફક્ત ટર્ન જ સમાપ્ત થવો જોઈએ. સત્ર સક્રિય (active) રહેવું જોઈએ.
ખામીયુક્ત પ્રવાહ (broken flow) આવો દેખાય છે: વપરાશકર્તા કાર્ય માટે પૂછે છે -> રનટાઇમ સત્ર શરૂ થાય છે -> કાર્ય પૂર્ણ થાય છે -> વાતચીત સક્રિય સત્રને ક્લિયર કરી દે છે -> પછીનો ફોલો-અપ એક નવું જ સત્ર શરૂ કરે છે.
આના કારણે નીચે મુજબના ટૂંકા ફોલો-અપ્સ તૂટી જાય છે:
- retry that (તે ફરીથી કરો)
- do the same for this file (આ ફાઇલ માટે પણ તે જ કરો)
- explain the error (ભૂલ સમજાવો)
- continue (ચાલુ રાખો)
જો સિસ્ટમ તરત જ સત્રને અલગ કરી દે (detach), તો તમારે બધું ફરીથી કહેવું પડે છે. એજન્ટ કામ તો કરે છે, પણ વાતચીત બનાવટી લાગે છે.
મેં મોડેલને સ્પષ્ટ બનાવીને આ સમસ્યા સુધારી:
- વાતચીત સ્થાયી (persistent) છે.
- રનટાઇમ સત્રો ડિફોલ્ટ રીતે સ્ટીકી (sticky) છે.
- પૂર્ણ થયેલા અથવા નિષ્ફળ ગયેલા કાર્યો ફક્ત વર્તમાન ટર્નને જ બંધ કરે છે.
- નવા સત્રો ત્યારે જ શરૂ થાય છે જો વપરાશકર્તા પૂછે અથવા જો મોડેલ બદલાય.
મેં કાર્ય પૂર્ણ થવાને સત્રના અંત તરીકે જોવાનું બંધ કર્યું. આ નાનકડા ફેરફારથી આખા પ્રોડક્ટનો અનુભવ સુધરી જાય છે.
CliGate માં, નવું સત્ર ત્યારે જ શરૂ થાય છે જો:
- હજુ સુધી કોઈ સત્ર ન હોય.
- વપરાશકર્તા નવા માટે પૂછે.
- મોડેલ બદલાવ જૂના સત્રને અસંગત (incompatible) બનાવે.
આ માનવીય વિચારધારા સાથે સુસંગત છે. વપરાશકર્તા એવી અપેક્ષા રાખે છે કે એક ચેટ ટેબ એક ચાલુ થ્રેડ તરીકે કામ કરે. Telegram અથવા Feishu જેવી મોબાઈલ એપ્સ માટે આ અત્યંત મહત્વનું છે.
નવું લોજિક સરળ છે:
- પ્રથમ સંદેશ રનટાઇમ સત્ર બનાવે છે.
- પછીના સંદેશાઓ તે જ સત્રનો ઉપયોગ કરવાનું ચાલુ રાખે છે.
- કાર્ય પૂર્ણ થવાથી થ્રેડ તૂટતો નથી.
- ફક્ત સ્પષ્ટ આદેશો જ નવું સત્ર શરૂ કરે છે.
આનાથી એજન્ટ કમાન્ડ લોન્ચરને બદલે એક સહકર્મી (coworker) જેવો લાગે છે.
જો તમે કોડિંગ એજન્ટ્સ બનાવો છો, તો આ યાદ રાખો: વાતચીત એ ટકાઉ એકમ (durable unit) છે. રનટાઇમ સત્ર એ પુનઃઉપયોગી વર્કર (reusable worker) છે. ટર્ન એ વસ્તુ છે જે સફળતા કે નિષ્ફળતા પર સમાપ્ત થાય છે.
આ ત્રણ સ્તરોને અલગ કરો. તમારા ફોલો-અપ્સ આખરે વાતચીત જેવી અનુભૂતિ કરાવશે.
સ્ત્રોત: https://dev.to/codekingai/my-coding-agent-finished-the-task-why-did-the-thread-die-2jk2
વૈકલ્પિક લર્નિંગ કોમ્યુનિટી: https://t.me/GyaanSetuAi