ડેવલપર્સ હવે સ્ટેટ ફાઇલો ઓવરરાઈટ થવાનો કે છુપાયેલી ફાઇલો વચ્ચે ટકરાવ (clashes) થવાનો ડર રાખ્યા વિના એકસાથે અનેક કોડિંગ-એજન્ટ સેશન્સ શરૂ કરી શકે છે. એક એડવાઇઝરી “share-nothing” પેટર્ન દરેક એજન્ટના વર્કસ્પેસને અલગ કરે છે અને સંભવિત સંઘર્ષો વિશે ચેતવણી આપે છે. આ અભિગમ હાર્ડ લોક્સને બદલે એક લાઇટવેઇટ રજિસ્ટ્રીનો ઉપયોગ કરે છે જે કામ શરૂ થાય તે પહેલાં જ ઓવરલેપિંગ કામને ફ્લેગ કરે છે, જેથી સેશન ક્રેશ થાય તો પણ પાઇપલાઇન્સ ચાલુ રહે છે.

સમાંતર એજન્ટ્સ (parallel agents) શા માટે મુશ્કેલી ઊભી કરે છે

સિંગલ રિપોઝિટરીમાં એક કરતા વધુ ઓટોમેટેડ કોડિંગ આસિસ્ટન્ટ ચલાવવાથી કોડ જનરેશન, ટેસ્ટિંગ અથવા રિફેક્ટરિંગ ઝડપી બને છે. વ્યવહારમાં, તરત જ બે સમસ્યાઓ સામે આવે છે.

  • State corruption – બે એજન્ટ એક જ સ્ટેટ ફાઇલમાં લખે છે; પછીનું લખાણ અગાઉના લખાણને ઓવરરાઈટ કરી દે છે, જેનાથી પ્રગતિ ભૂંસાઈ જાય છે.
  • File collision – બે એજન્ટ એકબીજાથી અજાણ એક જ સોર્સ ફાઇલ એડિટ કરે છે. સંઘર્ષ પછીથી દેખાય છે, જ્યારે 'diff' અલગ-અલગ ફેરફારો દર્શાવે છે.

આ બંને સમસ્યાઓ ડેવલપરનો સમય બગાડે છે અને શોધવા મુશ્કેલ એવા બગ્સ (bugs) લાવી શકે છે.

“share nothing” નિયમ

મુખ્ય વિચાર સરળ છે: દરેક એજન્ટને ડિસ્ક પર પોતાનું ખાનગી સ્ક્રૅચપેડ મળે છે અને તે ફક્ત તે સેશન સાથે સંબંધિત ફાઇલોમાં જ લખે છે. દરેક બ્રાન્ચ દીઠ ફક્ત એક જ જાણીજોઈને શેર કરેલી ફાઇલની મંજૂરી છે, અને તે “last-writer-wins” નિયમનું પાલન કરે છે—જે એજન્ટ છેલ્લે લખશે તે અંતિમ સામગ્રી નક્કી કરશે.

એક presence layer દરેક સક્રિય સેશનને ટ્રેક કરે છે:

  • બ્રાન્ચનું નામ
  • સ્પર્શ કરવામાં આવતી (touched) ફાઇલોની યાદી
  • છેલ્લી પ્રવૃત્તિનો ટાઈમસ્ટેમ્પ

જ્યારે નવું સેશન શરૂ થાય છે, ત્યારે તે રજિસ્ટ્રીની સલાહ લે છે. જો બીજું કોઈ સેશન પહેલેથી જ તે જ ફાઇલોમાંથી કોઈપણ સંભાળી રહ્યું હોય, તો ડેવલપરને કોઈપણ કામ શરૂ થાય તે પહેલાં ચેતવણી મળે છે.

Advisory વિરુદ્ધ blocking locks

પરંપરાગત લોક ફાઇલો ડેડ-એન્ડ રોડ (બંધ રસ્તા) જેવું કામ કરે છે: એકવાર લોક લેવામાં આવે, પછી અન્ય કોઈપણ પ્રોસેસ લોક મુક્ત ન થાય ત્યાં સુધી રાહ જુએ છે. જો માલિકીનું સેશન ક્રેશ થાય, તો લોક અનિશ્ચિત સમય માટે રહી શકે છે, જેનાથી જૂની (stale) લોક ફાઇલો શોધવા માટે મેન્યુઅલ પ્રયાસો કરવા પડે છે.

એડવાઇઝરી મોડલ વધુ નમ્ર છે. જ્યારે સંભવિત સંઘર્ષ જણાય ત્યારે તે ચેતવણી આપે છે પરંતુ નવા સેશનને અટકાવતું નથી. જો રજિસ્ટ્રી એન્ટ્રી જૂની હોય—એટલે કે જે પ્રોસેસે તેને બનાવ્યું હતું તે હવે અસ્તિત્વમાં નથી—તો પણ સિસ્ટમ માત્ર ચેતવણી જ આપે છે, જેથી ડેવલપર આગળ વધવું કે નહીં તેનો નિર્ણય લઈ શકે.

આ પેટર્નને કેવી રીતે અમલમાં મૂકવી

  1. લેખક દ્વારા સ્ટેટનું વિભાજન (Partition state by writer) – દરેક એજન્ટને કામચલાઉ ફાઇલો અને સ્ટેટ માટે પોતાનું અલગ ડિરેક્ટરી આપો. ખરેખર ગ્લોબલ ડેટા માટે શેર કરેલી ફાઇલો અનામત રાખો અને ત્યાં જ “last-writer-wins” નિયમ લાગુ કરો.
  2. લોન્ચ કરતી વખતે જાગૃતિ લાવો (Inject awareness at launch) – એજન્ટ શરૂ થાય તે પહેલાં, presence registry વાંચો અને વિનંતી કરેલી ફાઇલ યાદીની હાલની એન્ટ્રીઓ સાથે સરખામણી કરો. જો ઓવરલેપ જણાય તો અટકાવો અથવા ચેતવણી આપો.
  3. વાંચતી વખતે લાઈવનેસ તપાસો (Verify liveness at read time) – રજિસ્ટ્રી એન્ટ્રી તપાસતી વખતે, રેકોર્ડ કરેલ પ્રોસેસ ID હજુ પણ OS પર ચાલે છે કે નહીં તે તપાસો. મૃત (dead) પ્રોસેસની એન્ટ્રીઓ કાઢી નાખો.
  4. blocking કરતા advisory ને પ્રાધાન્ય આપો – ડેવલપર્સને નિયંત્રણ રાખવા દો. ચેતવણી તેમને ચાલુ રાખવા, સ્થગિત કરવા અથવા રદ કરવા દે છે, જેનાથી ડેડલોક (deadlock) ટાળી શકાય છે.
  5. વેઇટિંગ સ્ટેટ્સ ટ્રેક કરો – જ્યારે ઘણા એજન્ટ સક્રિય હોય, ત્યારે ડેવલપરનું ધ્યાન જ મુખ્ય અવરોધ (bottleneck) બની જાય છે. કયા એજન્ટ માનવ ઇનપુટની રાહ જોઈ રહ્યા છે તે દર્શાવો જેથી કામને ફરીથી પ્રાધાન્ય આપી શકાય.

આ બધું JSON ફાઇલોના સાદા ડિરેક્ટરી સાથે બનાવી શકાય છે; કોઈ બાહ્ય ડેટાબેઝ અથવા મેસેજ બસની જરૂર નથી. સરળ સ્ટોરેજ ફોર્મેટ સિસ્ટમને ઓડિટ કરવામાં સરળ અને વિવિધ એન્વાયરમેન્ટ્સમાં પોર્ટેબલ બનાવે છે.

જોખમો અને વિરોધ પક્ષના મુદ્દાઓ

કેટલાક ટીમો દલીલ કરી શકે છે કે હાર્ડ લોક સુરક્ષાની ખાતરી આપે છે: કોઈપણ બે એજન્ટ ક્યારેય એક જ ફાઇલમાં લખી શકતા નથી. પરંતુ તેની સામે ટ્રેડ-ઓફ એ ઓછી સ્થિતિસ્થાપકતા (resilience) છે—ક્રેશ થયેલા સેશન્સ અનાથ (orphaned) લોક્સ છોડી દે છે જે આખા વર્કફ્લોને અટકાવી દે છે.

શું ધ્યાન રાખવું

જો તમે એકસાથે અનેક AI-સંચાલિત કોડ આસિસ્ટન્ટ્સનો ઉપયોગ કરી રહ્યા હોવ, તો “share nothing” એડવાઇઝરી પેટર્ન તેમને એકબીજાના કામમાં અવરોધ ન આવે તે માટે વ્યવહારુ માર્ગ આપે છે. સ્ટેટને અલગ કરીને, ઇરાદાને વહેલી તકે જાહેર કરીને અને માણસોને આગળ વધવાનો નિર્ણય લેવા દે કરીને, આ પદ્ધતિ આધુનિક ડેવલપમેન્ટ પાઇપલાઇન્સની માંગ મુજબ સુરક્ષા અને લવચીકતા (flexibility) વચ્ચે સંતુલન જાળવે છે.