𝗖𝗼𝗱𝗲𝘅 𝗙𝗶𝘅𝗶𝗻𝗴 𝗖𝗼𝗱𝗲𝘅: એક સર્વસંમતિ લૂપ
મેં એક એજન્ટ લૂપ બનાવ્યું છે જે માત્ર કોડ સૂચવવાનું કામ જ નથી કરતું. તે કોડ લખે છે, તેની સમીક્ષા કરે છે અને તેના પોતાના પુલ રિક્વેસ્ટ્સ (pull requests) મર્જ કરે છે.
તેને ટેસ્ટ કરવા માટે, મેં આ લૂપને codex CLI ના એક ફોર્ક (fork) પર નિર્દેશિત કર્યું. મેં એજન્ટ્સને સોફ્ટવેર જાતે જ ઠીક કરવાનો પ્રયાસ કરવા દીધો. આ એક શુદ્ધ પ્રયોગ છે. આ ફોર્કમાં કોઈ યુઝર્સ કે સ્ટાર્સ નથી. આ મિકેનિઝમ વિશે છે, કોઈ પ્રોડક્ટ વિશે નહીં.
આ લૂપ કેવી રીતે કામ કરે છે તે અહીં છે:
- ઇનટેક (Intake): અપસ્ટ્રીમ બગ ફોર્કમાં એક ઇશ્યુ (issue) બની જાય છે. લૂપ માત્ર એવા નાના, મિકેનિકલ બગ્સ પસંદ કરે છે જેને તે પૂર્ણ કરી શકે.
- સોલ્વર્સ વચ્ચે દલીલ (Solvers Argue): અનેક એજન્ટ્સ અલગ-અલગ ફિક્સ પ્રસ્તાવિત કરે છે. એક સોલ્વર સૌથી નાનો ફેરફાર ઈચ્છે છે. બીજું ક્લીન સ્ટ્રક્ચર ઈચ્છે છે. ત્રીજું કોડ ઉમેરવાને બદલે તેને ડિલીટ કરવા માંગે છે. તેઓ અસંમત થાય છે.
- જજ દ્વારા મધ્યસ્થી (Judge Arbitrates): એક જજ દલીલો વાંચે છે. જો સોલ્વર્સ અસંમત હોય, તો જજ તેમને વધુ રાઉન્ડ માટે પાછા મોકલે છે. જજ એ પણ નોંધે છે કે તેણે અમુક વિચારો કેમ નકાર્યા હતા.
- અમલીકરણ અને મર્જ (Implement and Merge): એકવાર તેઓ સર્વસંમતિ પર પહોંચી જાય, પછી લૂપ પેચ (patch) લખે છે, ટેસ્ટ ચલાવે છે અને PR ખોલે છે. જો ટેસ્ટ પાસ થાય, તો તે જાતે જ મર્જ કરી લે છે.
તમે આ ઇશ્યુ #34 માં જોઈ શકો છો. એજન્ટ્સ કોન્કરન્સી બગ (concurrency bug) પર દલીલ કરી હતી. નિર્ણય પર પહોંચતા પહેલા તેઓ મધ્યસ્થીના ત્રણ રાઉન્ડમાંથી પસાર થયા હતા. માનવીએ કોડની એક પણ લાઇન લખ્યા વગર લૂપે વાસ્તવિક ફિક્સ અને રિગ્રેશન ટેસ્ટ (regression test) તૈયાર કર્યો.
PR #16 માં એક રસપ્રદ પરિણામ જોવા મળ્યું. લૂપ રિપોર્ટ થયેલા બગને ફરીથી બનાવવામાં (reproduce) અસમર્થ હતું. ખોટું ફિક્સ બનાવવાનો પ્રયાસ કરવાને બદલે, તેણે ફક્ત તે વર્તનને લોક કરવા માટે એક ટેસ્ટ ઉમેર્યો અને અટકી ગયું. જે લૂપને ખબર હોય કે ક્યારે પેચ ન કરવો, તે હંમેશા ડિફ (diff) જ બનાવે તેવા લૂપ કરતા વધુ ઉપયોગી છે.
લૂપે અત્યાર સુધીમાં લગભગ 16 PRs મર્જ કર્યા છે. તે UTF-8 હેન્ડલિંગ અને કમાન્ડ ફિક્સ જેવા નાના કાર્યો સંભાળે છે. તે આખું કોડબેઝ જાળવતું નથી, પરંતુ તે નાના, મર્યાદિત બગ્સને શરૂઆતથી અંત સુધી પૂરા કરે છે.
માણસો હજુ પણ નિયમો નક્કી કરે છે અને કામની સમીક્ષા કરે છે. અમે હજુ પણ દરેક PR તપાસીએ છીએ. કોડ ઓટોમેટિક છે, પરંતુ ધ્યાન માનવીય છે.
તમે આખી પ્રક્રિયા GitHub પર જોઈ શકો છો. દલીલો જોવા માટે ઇશ્યુ #34 અને PR #37 જુઓ.
વૈકલ્પિક લર્નિંગ કોમ્યુનિટી: https://t.me/GyaanSetuAi