மனிதர்களுக்கும் ஏஜென்ட்களுக்குமான பகிரப்பட்ட பணியிடங்களை உருவாக்குதல்
Perplexity-இன் திட்டங்கள் நீண்டகாலப் பணிகளை எவ்வாறு நீடித்து நிலைப்பவையாகவும், ஒரே நேரத்தில் செயல்படக்கூடியவையாகவும், தடமறியக்கூடியவையாகவும் வைத்திருக்கின்றன.
Perplexity Computer-இல் மனிதர்களும் ஏஜென்ட்களும் நீண்டகாலப் பணிகளில் இணைந்து பணியாற்றும் திட்டங்கள் அம்சத்தைச் சமீபத்தில் அறிமுகப்படுத்தினோம். ஒவ்வொரு திட்டமும், அமர்வுகள், ஏஜென்ட்கள், பயனர்கள் முழுவதும் சூழலைச் சேகரிக்கும் கோப்பு முறைமையுடன் கூடிய ஒரு பகிரப்பட்ட பணியிடத்தில் அமைந்துள்ளது. மாதக்கணக்கில் நீளும் பல பயனர் கூட்டுப்பணிக்கு நிலைத்தன்மை, ஒரே நேரச் செயல்பாடு, தடமறிதல் ஆகியவை தேவை:
- நிலைத்தன்மை: எதிர்காலப் பணியை அதே பயனரோ ஏஜென்டோ தொடரவும், எந்தக் கூட்டுப்பணியாளரும் அதன் மீது மேலும் உருவாக்கவும் முடியும் வகையில், எந்தவொரு தனிப்பட்ட ஏஜென்ட் அமர்வு அல்லது சாண்ட்பாக்ஸையும் தாண்டிப் பணி நீடித்து நிலைக்க வேண்டும்.
- ஒரே நேரச் செயல்பாடு: ஒரே திட்டத்தில் உள்ள பல பயனர்கள் ஒவ்வொருவருக்கும் பல ஏஜென்ட்கள் இருக்கலாம்; அவை இணையாகத் திருத்தங்களைச் செய்து, ஒன்றையொன்று மேலெழுதாமல் பகிரப்பட்ட நிலையை முன்னேற்றுகின்றன.
- தடமறிதல்: முழுத் திட்டத்தையும் மீண்டும் படிக்காமலேயே, தங்கள் கடைசி அமர்வுக்குப் பிறகு யார் எதை மாற்றினார்கள் என்பதைச் சரிபார்க்கவும், தேவைப்படும்போது திருத்தங்களைத் திரும்பப்பெறவும், பயனர்களும் ஏஜென்ட்களும் வரலாற்றைப் பார்க்க முடிய வேண்டும்.
இந்தச் சவால்கள் மென்பொருள் பொறியாளர்களுக்குப் பழக்கமானவை. இந்தத் தேவைகளைப் பூர்த்திசெய்யப் பல தசாப்தங்களுக்கு முன்பே Git ஃபோர்ஜ்கள் உருவாகின: பல பங்களிப்பாளர்கள் ஒரே நம்பகமான தகவல் மூலத்தில் ஒன்றிணையும் வகையில், பதிப்புக் கட்டுப்பாட்டைக் கூட்டுப்பணி அம்சங்களுடன் இணைக்கும் ஹோஸ்ட் செய்யப்பட்ட சேவை அது. திட்டங்களுக்கு ஆற்றலளிக்கும் கோப்பு முறைமை, மனித-ஏஜென்ட் மற்றும் ஏஜென்ட்-ஏஜென்ட் கூட்டுப்பணிக்காக உருவாக்கப்பட்ட அத்தகைய ஒரு Git ஃபோர்ஜ் ஆகும்.
கட்டமைப்பு
நிலைத்தன்மை, ஒரே நேரச் செயல்பாடு, தடமறிதல் ஆகியவற்றை Git ஏற்கெனவே கையாளுகிறது. அது ஒவ்வொரு கோப்பையும் அதன் உள்ளடக்கத்தைக் கொண்டு அடையாளம் காண்கிறது; எனவே மாறாத கோப்புகள் ஒருமுறை மட்டுமே சேமிக்கப்படுகின்றன, சேமிக்கப்பட்ட நகல்கள் ஒருபோதும் காலாவதியாவதில்லை. ஒவ்வொரு கமிட்டும் புதுப்பிக்கப்பட்ட அனைத்துக் கோப்புகளையும் ஒரே நேரத்தில் சேமிக்கிறது; எனவே கூட்டுப்பணியாளர்கள் ஒருபோதும் பாதியில் நின்ற நிலையைக் காண்பதில்லை. இரண்டு எழுதுபவர்கள் மோதும்போது, தோற்றவர் புதிய பதிப்பின் மீது தன் மாற்றங்களை மீண்டும் பயன்படுத்தி மறுபடி முயலலாம். கமிட்களின் சங்கிலி யார் எதை மாற்றினார்கள் என்பதைக் காட்டுவதுடன், முந்தைய பதிப்புகளை எளிதாக மீட்டெடுக்கவும் உதவுகிறது. ஏஜென்ட்களுக்குத் தேவையில்லாதவை, மனிதர்களுக்காக உருவாக்கப்பட்ட ஃபோர்ஜின் மற்ற அம்சங்களான மதிப்பாய்வுத் திரைகள், கிளை மேலாண்மை, அறிவிப்புகள் போன்றவையே.
எங்கள் கட்டமைப்பு முழுச் செயல்முறையையும் கிளவுடில் இயக்குகிறது; நிரலாக்கத்துக்கு அப்பாற்பட்ட அனைத்து வகையான அறிவுப் பணிகளையும் ஆதரிக்கிறது. ஒவ்வொரு Computer திட்டமும் 5 கூறுகளால் வழங்கப்படும் ஒரு Git களஞ்சியத்தை அடிப்படையாகக் கொண்டுள்ளது:
- CLI ஒவ்வொரு சாண்ட்பாக்ஸிலும் உள்ளூர் செக்அவுட்களைப் பராமரிக்கிறது, புதுப்பிப்புகளை ஒத்திசைக்கிறது, ஏஜென்டின் மாற்றங்களைச் சமர்ப்பிக்கிறது.
- கட்டுப்பாட்டுத் தளம் திட்டக் களஞ்சியத்தைக் கண்டறிந்து, அதை அணுகுவதற்கான குறுகிய காலச் சான்றுகளை வழங்குகிறது.
- Git சேவை களஞ்சியத் தரவைச் சாண்ட்பாக்ஸ்களுக்கு அனுப்புகிறது, அவற்றின் சமர்ப்பிப்புகளைப் பெறுகிறது, எந்தச் சமர்ப்பிப்பு சமீபத்தில் ஏற்றுக்கொள்ளப்பட்ட கமிட்டாக மாற வேண்டும் என்பதைத் தீர்மானிக்கிறது.
- AWS S3 அடிப்படையிலான சேமிப்பகம் களஞ்சியத் தரவை நீடித்து நிலைக்கும் வகையில் சேமிக்கிறது.
- கீழ்நிலைச் செயலாக்கம் சேமிக்கப்பட்ட ஆவணங்களிலிருந்து உரையையும் பிற பயனுள்ள தகவல்களையும் பிரித்தெடுத்து, ஏஜென்ட்கள் திட்டத்தை ஏற்றும்போது அல்லது புதுப்பிக்கும்போது அவற்றைக் கிடைக்கச் செய்கிறது.
ஒவ்வொரு ஏஜென்டுக்கும் தனிமைப்படுத்தப்பட்ட சொந்த சாண்ட்பாக்ஸ் உள்ளது. அந்த சாண்ட்பாக்ஸுக்குள், ஒரு சிறிய CLI நிர்வகிக்கும் களஞ்சியத்தின் உள்ளூர் நகலுடன் அது பணியாற்றுகிறது. CLI களஞ்சியத்தைக் கண்டறியுமாறு கட்டுப்பாட்டுத் தளத்திடம் கேட்டு, பின்னர் Git சேவை வழியாக மாற்றங்களைப் பெற்றுச் சமர்ப்பிக்கிறது. சாண்ட்பாக்ஸ் கோரிக்கைகள் Git சேவையை அடையும் முன், ஒரு ஏஜென்ட் ப்ராக்ஸி அவற்றின் அணுகலைச் சரிபார்க்கிறது. Git சேவை பகிரப்பட்ட கோப்பு முறைமையில் களஞ்சியங்களைப் படித்து எழுதுகிறது; ஒவ்வொரு சமர்ப்பிப்பும் சமீபத்தில் ஏற்றுக்கொள்ளப்பட்ட கமிட்டாக மாறுமா என்பதையும் தீர்மானிக்கிறது. அந்தக் கோப்பு முறைமையை AWS S3Files வழங்குகிறது; இது S3 அடிப்படையிலான சேமிப்பகத்தைச் சாதாரணக் கோப்புகள் மற்றும் கோப்பகங்களாக அணுகக்கூடியதாக ஆக்குகிறது. சேமிப்பகம் தனிமைப்படுத்தப்பட்ட செல்களாகப் பிரிக்கப்பட்டுள்ளது; ஒவ்வொரு செல்லுக்கும் சொந்தக் கோப்பு முறைமையும் Git சேவை ரெப்ளிகாக்களும் உள்ளன. ஒரு கமிட் ஏற்றுக்கொள்ளப்பட்ட பிறகு, பின்னணி வொர்க்கர்கள் மாறிய ஆவணங்களிலிருந்து உரையையும் பிற பயனுள்ள தகவல்களையும் பிரித்தெடுத்து, முடிவுகளைக் களஞ்சிய வரலாற்றிலிருந்து தனியாகச் சேமிக்கின்றன; ஏஜென்ட்கள் திட்டத்தை ஏற்றும்போது அல்லது புதுப்பிக்கும்போது அவை கிடைக்கச் செய்யப்படுகின்றன.
அடுத்து, ஒவ்வொரு கூறையும் ஒவ்வொன்றாக விளக்குகிறோம்.
CLI: சாண்ட்பாக்ஸ்களில் உள்ளூர்க் கோப்புகளுடன் பணியாற்றுதல்
ஏஜென்ட்கள், எங்கள் சொந்த சாண்ட்பாக்ஸ் தளமான SPACE-இல் இயங்குகின்றன. ஒவ்வொரு சாண்ட்பாக்ஸிலும், களஞ்சியத்தை உருவாக்கி ஒத்திசைவில் வைத்திருக்கும் ஒரு சிறிய CLI உள்ளது. ஏஜென்ட் செய்யும் அர்த்தமுள்ள ஒவ்வொரு பணி அலகுக்கும், அது மாற்றங்களை ஒரு கமிட்டாகச் சமர்ப்பிக்கிறது.
ஏஜென்ட்கள் பொதுவாகத் திட்டக் கோப்புகளில் ஒரு சிறு பகுதியை மட்டுமே கையாளுகின்றன; எனவே முழுக் களஞ்சியத்தையும் முன்கூட்டியே உருவாக்க (materialize) வேண்டிய அவசியமில்லை. இதன் விளைவாக, CLI தேவைக்கேற்பவே கோப்புகளை உருவாக்குகிறது: Git Large File Storage (LFS) வழியாகச் சேமிக்கப்பட்ட பெரிய மற்றும் பைனரி கோப்புகள், பொருளின் உண்மையான அளவைச் சேமிக்கும் சிறிய சுட்டிக் கோப்புகளாக வந்துசேர்கின்றன; இதனால் பெயரையும் அளவையும் வைத்து ஒரு பதிவிறக்கம் பயனுள்ளதா இல்லையா என்பதை ஏஜென்ட் முடிவுசெய்ய முடியும். PDF-கள் போன்ற ஆவணங்களுக்கு, ஏஜென்ட் முதலில் பார்ஸ் செய்யப்பட்ட உரையைப் படித்து, தேவைப்படும்போது மட்டுமே மூலக் கோப்புகளைப் பதிவிறக்குகிறது.
மற்றொரு இயல்பான வழி, மெய்நிகர் கோப்பு முறைமையைப் பயன்படுத்துவது. FUSE அடிப்படையிலான ஒரு செயலாக்கத்தை நாங்கள் சோதித்தோம்; ஆனால் ஒவ்வொரு கோரிக்கைக்கும் நெட்வொர்க் சுற்றுப்பயணம் தேவைப்படுவதால், கோப்பு முறைமையை அதிகம் சார்ந்த பணிச்சுமைகளில் அது உள்ளூர்க் கோப்புகளைவிடச் சுமார் 400 மடங்கு மெதுவாக இருந்தது. மேலும், அதற்குப் பொதுவாக ஹோஸ்டிடமிருந்து சிறப்புரிமைத் திறன்கள் தேவைப்படுவதால், ஒவ்வொரு ஏஜென்டும் சிறப்புரிமை பெற்ற சாண்ட்பாக்ஸில் இயங்க வேண்டியிருக்கும்.
கட்டுப்பாட்டுத் தளம்: களஞ்சியங்களைக் கண்டறிதல் மற்றும் அணுகலை வழங்குதல்
ஒவ்வொரு களஞ்சியமும் எங்கே சேமிக்கப்பட்டுள்ளது என்பதைக் கட்டுப்பாட்டுத் தளம் (control plane) கண்டறிந்து, அதற்கான அணுகலை வழங்குகிறது. ஒரு களஞ்சியம் உருவாக்கப்படும்போது, கட்டுப்பாட்டுத் தளம் அதை ஒரு சேமிப்பகச் செல்லுக்கு ஒதுக்குகிறது; இது சொந்த Git சேவை ரெப்ளிகாக்களைக் கொண்ட, தனிமைப்படுத்தப்பட்ட ஒரு சேமிப்பக அலகு. ஒரு ஏஜென்ட் ஒரு திட்டத்தில் பணியைத் தொடங்கும்போது, களஞ்சியம் எங்கே சேமிக்கப்பட்டுள்ளது என்று CLI கட்டுப்பாட்டுத் தளத்திடம் கேட்கிறது. கட்டுப்பாட்டுத் தளம் அந்த இருப்பிடத்தையும் Git சேவைக்கான தற்காலிகச் சான்றுகளையும் திருப்பி அனுப்புகிறது. கட்டுப்பாட்டுத் தளம் ஒருபோதும் களஞ்சியத் தரவைப் படிப்பதோ எழுதுவதோ இல்லை. ஒரு களஞ்சியத்துக்குள் எது நுழைய வேண்டும் என்பதை Git சேவையே தீர்மானிக்கிறது.
Git சேவை: தரவை நகர்த்துதல் மற்றும் புதுப்பிப்புகளை ஒருங்கிணைத்தல்
Git சேவை Git செயல்பாடுகளைச் செயல்படுத்தி, சாண்ட்பாக்ஸ்களுக்கும் சேமிப்பகத்துக்கும் இடையே களஞ்சிய உள்ளடக்கங்களையும் பதிப்பு வரலாற்றையும் பரிமாற்றுகிறது. இது Git-இன் சொந்தச் சேவைக் கட்டளைகளைச் சுற்றியுள்ள ஒரு மெல்லிய உறை. களஞ்சியத்தின் head எங்கே உள்ளது என்பதைக் கிளையன்டுக்குத் தெரிவிக்கும் ref கண்டறிதல், குளோன் செய்வதற்கும் பெறுவதற்குமான upload-pack, புதிய பொருள்களையும் களஞ்சியத்தின் head-ஐ முன்னேற்றுவதற்கான கோரிக்கையையும் பெறுவதற்கான receive-pack ஆகியவற்றை இது ஆதரிக்கிறது. இது Git LFS API-க்கும் சேவை வழங்குகிறது: பெரிய மற்றும் பைனரி கோப்புகளுக்கு, சாண்ட்பாக்ஸ்கள் அந்தக் கோப்புகளை S3-இல் நேரடியாகப் பதிவேற்றவும் அங்கிருந்து பதிவிறக்கவும் குறுகிய கால இணைப்புகளை வழங்குகிறது.
நாங்கள் ஓர் ஆயத்த ஃபோர்ஜ் சர்வருடன் தொடங்கினோம்; இதனால், எங்களுக்குத் தேவையான Git செயல்பாடுகளில் மட்டுமே கவனம் செலுத்தும் எங்கள் சொந்த இலகுவான ஃபோர்ஜை உருவாக்கும் அதே நேரத்தில், ஏஜென்ட் மற்றும் பயனர் இடைமுகங்களின் முன்மாதிரிகளையும் இணையாக உருவாக்க முடிந்தது.
இந்தச் சேவை ரெப்ளிகாக்களின் தொகுப்பைக் கொண்டுள்ளது; ஒவ்வொன்றும் அதே சர்வரின் இயங்கும் இன்ஸ்டன்ஸ். ஒரு செல், பகிரப்பட்ட சேமிப்பகத்தையும் ஒரு ரெப்ளிகா தொகுப்பையும் அவற்றுக்கான துணைச் சேவைகளையும் ஒன்றாகக் குழுவாக்குகிறது. இதனால், ஒரு செல்லுக்குள் உள்ள ரெப்ளிகாக்கள் ஒவ்வொரு களஞ்சியத்துக்கும் தனித்தனி நகல்களைப் பராமரிப்பதற்குப் பதிலாக, அதே பகிரப்பட்ட கோப்பு முறைமையை அணுக முடிகிறது.
இந்தப் பகிரப்பட்ட சேமிப்பகம் ரெப்ளிகாக்களை நிலையற்றவையாக (stateless) இருக்க அனுமதிக்கிறது. செல்லில் உள்ள எந்த ரெப்ளிகாவும் அதன் எந்தக் களஞ்சியத்துக்கும் சேவை வழங்க முடியும்; எனவே ரெப்ளிகாக்களை மாற்றுவதற்கோ சேர்ப்பதற்கோ சர்வர்களுக்கு இடையே களஞ்சியத் தரவை நகர்த்த வேண்டியதில்லை. ஒரு களஞ்சியத்துக்கான கோரிக்கைகள், அதன் கேச்கள் பயனுள்ளதாக இருக்கும் வகையில், வழக்கமாக ஒரே ரெப்ளிகாவுக்குச் செல்கின்றன; ஆனால் அந்தக் குறிப்பிட்ட இன்ஸ்டன்ஸ் தொடர்ந்து கிடைப்பதைக் களஞ்சியம் சார்ந்திருப்பதில்லை.
ஏற்றுக்கொள்ளப்பட்ட கமிட் சரியான களஞ்சிய நிலையைக் கொண்டிருப்பதை உறுதிசெய்ய, ஏற்புப் படிநிலை களஞ்சியத்தின் மாறாநிலைகளை (invariants) சரிபார்க்கிறது. ஒவ்வொரு களஞ்சியத்துக்கும் தெளிவான ஒப்பந்தத்தை நாங்கள் வரையறுக்கிறோம்; இதனால் இயந்திரரீதியான சரிபார்ப்புகள் அது அளவுக்கு மீறி வளர்வதைத் தடுக்க முடிகிறது. PDF-கள், படங்கள் போன்ற பெரிய மற்றும் பைனரி கோப்புகள் மூல Git blob-களாக அல்லாமல் Git LFS வழியாகச் சேமிக்கப்படுகின்றன. கச்சிதமாக்கல், களஞ்சியத்தின் அளவைக் கட்டுப்படுத்தும் அதே வேளையில் சமீபத்திய வரலாற்றைக் கிடைக்கச் செய்கிறது. சமர்ப்பிப்பு வெற்றிகரமாக முடிந்த பிறகு, களஞ்சியத்துக்குக் கச்சிதமாக்கல் தேவையா என்று CLI, Git சேவையிடம் கேட்கிறது. தக்கவைக்கப்பட்ட கமிட்களின் எண்ணிக்கை ஒரு வரம்பைத் தாண்டினால், Git சேவை மிகச் சமீபத்திய கமிட்களில் ஒரு சிறிய தொகுப்பை மட்டும் வைத்துக்கொள்கிறது. பழைய வரலாறு ஒற்றைத் தொடக்க ஸ்னாப்ஷாட்டால் மாற்றப்படுகிறது; கமிட் அடையாளங்காட்டிகளைப் புதுப்பிப்பதற்காகச் சமீபத்திய கமிட்கள் மீண்டும் இயக்கப்படுகின்றன.
ஒரே நேரத்தில் எழுதுபவர்களை ஒரு எளிய ஒத்திசைவுப் படிநிலை கட்டுப்படுத்துகிறது. அது சமீபத்தில் ஏற்றுக்கொள்ளப்பட்ட கமிட்டை, அதாவது head-ஐக் கண்காணிக்கிறது. ஒரு சமர்ப்பிப்பைப் பெறும்போது, அந்தச் சமர்ப்பிப்பு அந்த head-இன் மீது உருவாக்கப்பட்டிருந்தால் மட்டுமே அதை ஏற்றுக்கொள்கிறது. இல்லையெனில், அது கட்டமைக்கப்பட்ட ஒரு stale-base பதிலை அனுப்புகிறது; தோற்றவர் தன் மாற்றத்தைப் புதிய head-இன் மீது மீண்டும் இயக்கி, மறுபடி சமர்ப்பிக்க வேண்டும். குறிப்பிடத்தக்க தாமதத்தை ஏற்படுத்தாமல், ஒரே நேரத்தில் இயங்கும் ஏஜென்ட்கள் ஒன்றையொன்று அறியாமல் மேலெழுதுவதில்லை என்பதை இந்த வடிவமைப்பு உறுதிசெய்கிறது. எங்கள் நேரடிப் பயன்பாட்டுப் பணிப்பாய்வுகளில், 2%-க்கும் குறைவான சமர்ப்பிப்புகளே காலாவதியானவை எனக் கருதி நிராகரிக்கப்படுகின்றன. ஒட்டுமொத்தமாக, சமர்ப்பிப்புத் தாமதத்தின் இடைநிலை மதிப்பு 1.7 வினாடிகளுக்குக் கீழும், p99 தாமதம் 8 வினாடிகளுக்குக் கீழும் உள்ளது.
மேலும், ஏற்றுக்கொள்ளப்பட்ட ஒவ்வொரு மாற்றத்தையும் Git சேவை பதிவுசெய்கிறது. ஏற்றுக்கொள்ளப்பட்ட ஒவ்வொரு எழுதுதலுக்கும், அது ஓர் அவுட்பாக்ஸில் ஒரு பதிவைச் சேர்க்கிறது; அவுட்பாக்ஸ் என்பது களஞ்சியம், புதிய கமிட், மாற்றத்தைச் செய்த பயனர், மாறிய பாதைகள் ஆகியவற்றைப் பட்டியலிடும் ஒரு பதிவேடு. பார்சர் போன்ற கீழ்நிலைச் சேவைகள் புதிய பணிகளைக் கண்டறிய இந்தப் பதிவேட்டைப் படிக்கின்றன.
இந்தப் பகுதிகள் ஒன்றிணைந்து, ஏஜென்ட்களுக்குத் தேவையில்லாத அம்சங்கள் இல்லாத ஒரு களஞ்சிய மேலாண்மை அடுக்கை உருவாக்குகின்றன. ஒவ்வொரு மாற்றத்தையும் எந்த மனிதரும் மதிப்பாய்வு செய்வதில்லை என்பதால், pull request-கள் தேவையில்லை. அதற்குப் பதிலாக, சமர்ப்பிக்கும் நேரத்தில் Git சேவை ஒப்பந்தத்தைச் சரிபார்க்கிறது; போட்டியில் தோற்கும் ஏஜென்ட் தன் மாற்றத்தை மீண்டும் பயன்படுத்துகிறது; யார் எதை மாற்றினார்கள் என்பதைக் கமிட் வரலாறு பதிவுசெய்கிறது. வளர்ச்சியை நிர்வகிக்க ஒரு மனித இயக்குநரைச் சார்ந்திருக்காமல், உறுதியான (deterministic) சரிபார்ப்புகள் ஒவ்வொரு களஞ்சியத்தையும் அதன் ஒப்பந்த வரம்புக்குள் வைத்திருக்கின்றன.
சேமிப்பகம்: பணியை நீடித்து நிலைக்கச் செய்தல்
சாண்ட்பாக்ஸ்கள் மற்றும் Git சேவை ரெப்ளிகாக்களிலிருந்து சுயாதீனமாக, சேமிப்பக அடுக்கு களஞ்சியத் தரவை நீடித்து நிலைக்கும் வகையில் சேமிக்கிறது. களஞ்சியங்கள் AWS S3Files-இல் உள்ளன; இது S3 அடிப்படையிலான சேமிப்பகத்தை, மாற்றமின்றி வழக்கமான Git பயன்படுத்தக்கூடிய ஒரு கோப்பு முறைமை இடைமுகம் வழியாக வழங்குகிறது. ஒவ்வொன்றும் பகிரப்பட்ட கோப்பு முறைமையில் உள்ள ஒரு bare Git களஞ்சியம்; இதில் பணிபுரியும் செக்அவுட்டுக்குப் பதிலாக, களஞ்சியத்தின் பொருள்களும் குறிப்புகளும் (references) உள்ளன.
சேமிப்பகத்தையும் கணக்கீட்டையும் பிரிப்பதால், சாண்ட்பாக்ஸ்கள் தற்காலிகமானவையாகவே இருக்க முடிகிறது. ஒவ்வொரு ஏஜென்டுக்கும் தனி சாண்ட்பாக்ஸ் கிடைக்கிறது; பல ஏஜென்ட்கள் ஒரே இயந்திரத்தைப் பகிராமல் ஒரே திட்டத்தில் பணியாற்ற முடியும். ஒரு சாண்ட்பாக்ஸ் செயலிழந்தால், சமர்ப்பிக்கப்படாத பணி மட்டுமே ஆபத்தில் இருக்கும்.
அதற்குப் பதிலாக, ஒவ்வொரு திட்டத்துக்கும் அதன் அனைத்து ஏஜென்ட்களும் பகிர்ந்துகொள்ளும் நீண்டகால சாண்ட்பாக்ஸை வழங்கலாம்; அப்போது திட்டத்தின் கோப்புகள் அந்த இயந்திரத்தின் வட்டில் இருக்கும். ஆனால், இது ஏஜென்ட்களின் கணக்கீட்டு வளங்களை அந்த இயந்திரம் இயங்கும் இடத்துடன் பிணைத்துவிடும்; மேலும் அதன் அதிகப் பணிச்சுமை நேரங்களுக்கு ஏற்ற அளவில் அதை அமைக்க வேண்டியிருக்கும். அது பல மாதங்கள் சீராக இயங்க வேண்டியிருக்கும்; காப்புப்பிரதிகளும் மீட்டெடுப்பும் திட்டத்தின் சேமிப்பக அமைப்பின் ஒரு பகுதியாக நிர்வகிக்கப்பட வேண்டியிருக்கும்.
கீழ்நிலைச் செயலாக்கம்: ஆவணங்களை ஏஜென்ட்கள் படிக்கக்கூடியவையாக மாற்றுதல்
முதன்மையான கீழ்நிலைக் கூறு ஒரு பார்சர் பைப்லைன் ஆகும்; திட்டக் கோப்புகளை ஏஜென்ட்கள் எளிதாகப் படிக்கும் வகையில், புதிதாகச் சேர்க்கப்பட்ட அல்லது புதுப்பிக்கப்பட்ட ஆவணங்களிலிருந்து அது உரையையும் மெட்டாடேட்டாவையும் பிரித்தெடுக்கிறது. ஒரு பார்சர் வொர்க்கர், மாற்ற ஓட்ட வரிசையிலிருந்து (change stream queue) புதுப்பிப்புகளைப் பெற்று, கமிட் மெட்டாடேட்டாவிலிருந்து மாறிய கோப்புகளைக் கண்டறிந்து, உள்ளடக்க ஹாஷைப் பயன்படுத்தி மூலப் பைட்டுகளைப் பெறுகிறது. பின்னர் அது ஆவணத்தைப் பார்ஸ் செய்து, பிரித்தெடுக்கப்பட்ட உரையையும் ஆவண மெட்டாடேட்டாவையும் உருவாக்குகிறது.
பார்ஸ் செய்யப்பட்ட வெளியீடுகள் களஞ்சியத்துக்கு வெளியே, மூல ஆவணத்தின் ஹாஷைச் சாவியாகக் கொண்ட ஒரு சேமிப்பகத்தில் உள்ளன. இந்த ஆர்ட்டிஃபேக்ட்கள் ஒருபோதும் களஞ்சியத்துக்குத் திரும்பக் கமிட் செய்யப்படுவதில்லை; ஏனெனில் அது தேவையின்றி வரலாற்றை மாசுபடுத்துவதுடன், ஒரே நேரத்தில் நடக்கும் எழுதுதல்களின் எண்ணிக்கையையும் அதிகரிக்கும். அதற்குப் பதிலாக, பார்ஸ் செய்யப்பட்ட வெளியீடுகள் செக்அவுட் மற்றும் ஒத்திசைவு வழியாக சாண்ட்பாக்ஸை அடைகின்றன. ஒவ்வொரு செக்அவுட்டிலும், ஆர்ட்டிஃபேக்ட்களை உருவாக்க CLI பயன்படுத்தும் ஓர் ஒதுக்கப்பட்ட கோப்பகம் உள்ளது. பார்சிங் ஒத்திசைவற்ற முறையில் நடப்பதால், பின்னணி பார்சர் வொர்க்கர் செக்அவுட்களைத் தடுப்பதில்லை.
ஏஜென்ட்கள் பணியிடத்தை எவ்வாறு பயன்படுத்துகின்றன
சாண்ட்பாக்ஸில் ஏற்றப்பட்ட களஞ்சியப் பதிப்பை ஏஜென்ட்கள் வழக்கமான கோப்பு முறைமைக் கருவிகளைக் கொண்டு ஆராய்கின்றன. நிலையான தேடல்-பின்-படித்தல் பைப்லைனைப் பின்பற்றுவதற்குப் பதிலாக, அவை கோப்புறைகளைப் பட்டியலிடுகின்றன, grep மூலம் கோப்பு உள்ளடக்கங்களைத் தேடுகின்றன, தொடர்புடைய பகுதிகளைப் படிக்கின்றன, கண்டறிந்தவற்றைக் கொண்டு அடுத்து எங்கே பார்க்க வேண்டும் என்பதைத் தீர்மானிக்கின்றன.
Computer-ஐப் போலவே, Search-உம் தனது வழக்கமான கோப்புக் கருவிகள் மூலம் அதே அணுகுமுறையைப் பயன்படுத்துகிறது. ஒரு தனி ஆராய்வு ஏஜென்ட், மேலும் வரம்புக்குட்பட்ட பட்ஜெட்டுக்குள் திட்டத்தைத் தேடி, தொடர்புடைய கோப்புப் பாதைகளையும் ஆதாரப் பகுதிகளையும் திருப்பி அனுப்புகிறது. பின்னர், பதிலளிக்கும் மாடல் தேர்ந்தெடுக்கப்பட்ட கோப்புகளைப் படித்துப் பதிலை உருவாக்குகிறது. ஏற்கெனவே உள்ள திட்டச் சாண்ட்பாக்ஸை மீண்டும் பயன்படுத்துவது அமைவு நேரத்தைக் குறைக்கிறது: தயார்நிலையில் உள்ள (warm) செக்அவுட்டுடன் இணைய சுமார் 2.9 வினாடிகள் ஆகிறது; புதிதாகத் தொடங்க (cold start) சுமார் 8 வினாடிகள் ஆகிறது.
பார்ஸ் செய்யப்பட்ட உரை, PDF-கள், Office கோப்புகள் போன்ற பெரிய ஆவணங்களையும் அதே கருவிகளைக் கொண்டு தேடக்கூடியவையாக ஆக்குகிறது. ஏஜென்ட் முதலில் ஒரு மேனிஃபெஸ்டைச் சரிபார்க்கிறது — எந்த ஆவணங்களுக்குப் பிரித்தெடுக்கப்பட்ட உரை கிடைக்கிறது என்பதைக் காட்டும் பட்டியல் அது — பின்னர் அந்த உரையைச் சாதாரணக் கோப்புகளாகத் தேடிப் படிக்கிறது. உரை போதுமானதாக இல்லாதபோது மட்டுமே, உதாரணமாக வரைபடங்கள், தளவமைப்பு அல்லது உட்பொதிக்கப்பட்ட தரவைப் பார்க்க வேண்டியிருக்கும்போது, அது மூல ஆவணத்தைப் பதிவிறக்குகிறது.
இதே தரவுத்தொகுப்பின் மீதான 150 ஒற்றை ஆவண நிதிக் கேள்விகளில், ஒரு குறியீட்டின் (index) மீதான சொற்பொருள் தேடலுடன் இந்த அணுகுமுறையை ஒப்பிட்டு அளவிட்டோம். சரியான ஆவணத்தை மீட்டெடுப்பதில் ஆராய்வு ஏஜென்ட் 0.867 மதிப்பெண்ணும், சரியாகப் பதிலளிப்பதில் 0.627 மதிப்பெண்ணும் பெற்றது; சொற்பொருள் தேடல் முறையே சுமார் 0.39, 0.37 பெற்றது. அதாவது, சுமார் 25% குறைவான தாமதத்துடன், பதில்களில் சுமார் 1.7 மடங்கும் மீட்டெடுப்பில் 2 மடங்கும் சிறப்பாக இருந்தது. ஆராய்வு ஏஜென்ட் பெரும்பாலும் பிரித்தெடுக்கப்பட்ட உரையுடனேயே பணியாற்றுகிறது; மூல PDF-களை அரிதாகவே பதிவிறக்குகிறது.
ஒரே பகிரப்பட்ட உள்கட்டமைப்பு
Computer-இன் நிலையான நினைவகம் அதே கோப்பு முறைமை உள்கட்டமைப்பைப் பயன்படுத்துகிறது. Computer-இன் அறிவு விக்கியான Perplexity Brain, தனக்கென வரலாறும் கொள்கைகளும் கொண்ட அறிவுக் களஞ்சியங்களில் நினைவகத்தைச் சேமிக்கிறது. அறிவைத் திட்டக் கோப்புகளிலிருந்து தனியாக வைத்திருப்பதால், பின்னணி நினைவகப் புதுப்பிப்புகள் அந்தக் கோப்புகளுக்கான திருத்தங்களுடன் போட்டியிடுவதில்லை. இரண்டும் தேவைப்படும் ஓர் அமர்வு இரண்டு களஞ்சியங்களையும் ஏற்றுகிறது.
பின்னணி ஏஜென்ட்கள் ஏற்கெனவே உள்ள அறிவைப் படித்து, புதிய தகவல்களை இணைத்து, புதுப்பிக்கப்பட்ட பக்கங்களைக் கமிட்களாகச் சேமிக்கின்றன. பிற ஏஜென்ட்கள் அந்தப் பக்கங்களைச் சாதாரணக் கோப்புக் கருவிகளைக் கொண்டு படிக்கின்றன; மனிதர்களும் அவற்றைத் திருத்தலாம். எழுதுபவர்கள் ஒவ்வொரு வாசகருடனும் நேரடியாக ஒருங்கிணைப்பதற்குப் பதிலாக, களஞ்சியத்தின் வழியாகத் தங்கள் பணியைப் பகிர்கின்றனர். யார் எதை மாற்றினார்கள் என்பதைக் கமிட் வரலாறு பதிவுசெய்கிறது; அவுட்பாக்ஸ் ஏற்றுக்கொள்ளப்பட்ட புதுப்பிப்புகளைக் கீழ்நிலைச் சேவைகளுக்குத் தெரிவிக்கிறது. அறிவு எவ்வாறு வளர்ந்தது என்பதற்கான பதிவுடன், மனிதர்களும் ஏஜென்ட்களும் ஒருவர் பணியை மற்றவர் அடிப்படையாகக் கொண்டு முன்னேறலாம்.
முடிவுரை
மனிதர்களும் ஏஜென்ட்களும் ஒரு திட்டத்தைப் பகிரும்போது, பணியிடம் கோப்புகளைச் சேமிப்பதைவிட அதிகமானவற்றைச் செய்கிறது. பங்களிப்புகளை ஒன்றிணைக்கவும் என்ன மாறியது என்பதைக் கண்காணிக்கவும் அது ஒரு பொதுவான இடத்தை வழங்குகிறது. அந்த அடித்தளத்தின் பெரும்பகுதியை Git ஏற்கெனவே வழங்குகிறது. ஒவ்வொரு புதுப்பிப்புக்கும் ஒருவர் ஒப்புதல் அளிக்கத் தேவையின்றி ஏஜென்ட்கள் பணியைச் சமர்ப்பிக்க, நாங்கள் ஒருங்கிணைப்பையும் தானியங்கிச் சரிபார்ப்புகளையும் சேர்க்கிறோம். இதன் விளைவு, அத்தியாவசியங்களுக்கு மட்டும் சுருக்கப்பட்ட ஒரு ஃபோர்ஜ்; ஏனெனில், அடிப்படையில் ஏஜென்ட்களுக்கு இடையிலான கூட்டுப்பணியும் பல பங்களிப்பாளர் மென்பொருள் மேம்பாடும் ஒரே சிக்கல்தான்.
ஏஜென்ட்கள் தனித்தனியான, தற்காலிக சாண்ட்பாக்ஸ்களில் பணியாற்றியபடியே நீடித்து நிலைக்கும் களஞ்சியங்களுக்குப் பங்களிக்கின்றன. களஞ்சிய வரம்புகள் வளர்ச்சியைக் கட்டுக்குள் வைக்கின்றன; வெளிப்படையான பதிவிறக்கங்கள் எதைப் பெற வேண்டும் என்பதை ஏஜென்ட்களே தேர்வுசெய்ய உதவுகின்றன; சாதாரணக் கோப்புகள் பழக்கமான கருவிகளைக் கொண்டு அவற்றை ஆராய அனுமதிக்கின்றன. பின்னணிப் புதுப்பிப்புகள், ஊடாடும் திருத்தங்கள், திட்டமிடப்பட்ட பணிகள் ஆகியவை நேரடியாக ஒருங்கிணைக்காமலேயே ஒன்றின் பணியை மற்றொன்று அடிப்படையாகக் கொண்டு முன்னேற முடியும்.
திட்டங்களுக்குள் மேலும் அதிகமான ஏஜென்ட்கள் தன்னாட்சியாகப் பணியாற்றும்போது, அவற்றின் பகிரப்பட்ட பணியிடம் நம்பகமானதாகவும் மனிதர்களுக்குப் புரியக்கூடியதாகவும் இருக்க வேண்டும். இலக்கு தெளிவானது: ஒவ்வொரு மாற்றமும் அதை உருவாக்கிய ஏஜென்டைவிட நீடித்து நிலைக்க வேண்டும், அடுத்த கூட்டுப்பணியாளருக்குக் கிடைக்க வேண்டும், என்ன மாறியது என்பதற்கான தெளிவான பதிவை விட்டுச்செல்ல வேண்டும்.
மேற்கோள்
@online{perplexity2026BuildingSharedWorkspacesForPeopleAndAgents,
author = {{Perplexity} and Se Won Jang and Peter Hart and Kartik Kapur and Kevin Lau and Sidhant Rajadnya and Ishbir Singh and Thomas Wang and Jarrod Bryan and Claire Beamer and Jeremy Yang},
title = {{Building shared workspaces for people and agents}},
date = {2026-10-12},
url = {https://www.perplexity.ai/hub/blog/building-shared-workspaces-for-people-and-agents}
}