వ్యక్తులు మరియు ఏజెంట్ల కోసం భాగస్వామ్య వర్క్స్పేస్లను నిర్మించడం
Perplexity ప్రాజెక్ట్లు దీర్ఘకాలిక పనిని శాశ్వతంగా, ఏకకాలికంగా మరియు ట్రేస్ చేయగలిగేలా ఎలా ఉంచుతాయి.
మేము ఇటీవల ప్రాజెక్ట్లను ప్రారంభించాము, ఇక్కడ Perplexity Computerలో వ్యక్తులు మరియు ఏజెంట్లు దీర్ఘకాలిక టాస్క్లపై కలిసి పనిచేస్తారు. ప్రతి ప్రాజెక్ట్ ఒక భాగస్వామ్య వర్క్స్పేస్పై ఉంటుంది, దానిలోని ఫైల్సిస్టమ్ సెషన్లు, ఏజెంట్లు మరియు వినియోగదారుల అంతటా సందర్భాన్ని కూడబెడుతుంది. నెలల తరబడి సాగే మల్టీప్లేయర్ సహకారానికి శాశ్వతత్వం, ఏకకాలికత మరియు ట్రేసబిలిటీ అవసరం:
- శాశ్వతత్వం: పని ఏ ఒక్క ఏజెంట్ సెషన్ లేదా శాండ్బాక్స్కు మించి మన్నికగా ఉండాలి, తద్వారా భవిష్యత్తు పనిని అదే వినియోగదారు లేదా ఏజెంట్ కొనసాగించగలరు మరియు ఏ సహకారి అయినా దానిపై నిర్మించగలరు.
- ఏకకాలికత: ఒకే ప్రాజెక్ట్లోని అనేక మంది వినియోగదారుల్లో ప్రతి ఒక్కరికీ సమాంతరంగా ఎడిట్లు చేసే అనేక ఏజెంట్లు ఉండవచ్చు, అవి ఒకదానినొకటి ఓవర్రైడ్ చేయకుండా భాగస్వామ్య స్థితిని ముందుకు తీసుకెళ్తాయి.
- ట్రేసబిలిటీ: వినియోగదారులు మరియు ఏజెంట్లు ఇద్దరూ చరిత్రను చూడగలగాలి, తద్వారా మొత్తం ప్రాజెక్ట్ను మళ్లీ చదవకుండానే తమ గత సెషన్ తర్వాత ఎవరు ఏమి మార్చారో తనిఖీ చేయగలరు, మరియు అవసరమైనప్పుడు ఎడిట్లను రోల్ బ్యాక్ చేయగలరు.
ఈ సవాళ్లు సాఫ్ట్వేర్ ఇంజనీర్లకు సుపరిచితంగా కనిపిస్తాయి. ఈ అవసరాలను తీర్చడానికి దశాబ్దాల క్రితమే Git ఫోర్జ్లు ఆవిర్భవించాయి: అనేక మంది కంట్రిబ్యూటర్లు ఒకే సత్య మూలం (single source of truth) వద్ద కలిసేలా, వెర్షన్ కంట్రోల్కు సహకార ఫీచర్లను జోడించే హోస్ట్ చేసిన సర్వీస్. ప్రాజెక్ట్లకు శక్తినిచ్చే ఫైల్సిస్టమ్, మనిషి-ఏజెంట్ మరియు ఏజెంట్-ఏజెంట్ సహకారాల కోసం నిర్మించిన అలాంటి ఒక Git ఫోర్జ్.
ఆర్కిటెక్చర్
Git ఇప్పటికే శాశ్వతత్వం, ఏకకాలికత మరియు ట్రేసబిలిటీని నిర్వహిస్తుంది. ఇది ప్రతి ఫైల్ను దాని కంటెంట్ ఆధారంగా గుర్తిస్తుంది, కాబట్టి మారని ఫైల్లు ఒక్కసారే నిల్వ చేయబడతాయి మరియు సేవ్ చేసిన కాపీలు ఎప్పటికీ పాతబడవు. ప్రతి కమిట్ అప్డేట్ అయిన ఫైల్లన్నింటినీ ఒకేసారి సేవ్ చేస్తుంది, కాబట్టి సహకారులు ఎప్పుడూ సగం పూర్తయిన స్థితిని చూడరు. ఇద్దరు రైటర్ల మార్పులు ఢీకొన్నప్పుడు, ఓడిపోయినవారు కొత్త వెర్షన్పై తమ మార్పులను మళ్లీ వర్తింపజేసి మళ్లీ ప్రయత్నించవచ్చు. కమిట్ల గొలుసు ఎవరు ఏమి మార్చారో చూపిస్తుంది మరియు మునుపటి వెర్షన్లను పునరుద్ధరించడాన్ని సులభం చేస్తుంది. ఏజెంట్లకు అవసరం లేనిది మనుషుల కోసం నిర్మించిన ఫోర్జ్లోని మిగతా భాగం, అంటే రివ్యూ స్క్రీన్లు, బ్రాంచ్ నిర్వహణ మరియు నోటిఫికేషన్లు.
మా ఆర్కిటెక్చర్ మొత్తం ప్రక్రియను క్లౌడ్లో రన్ చేస్తుంది మరియు కోడింగ్కు మించి అన్ని రకాల నాలెడ్జ్ వర్క్కు సపోర్ట్ చేస్తుంది. ప్రతి Computer ప్రాజెక్ట్కు 5 కాంపోనెంట్ల ద్వారా అందించబడే ఒక Git రిపోజిటరీ ఆధారంగా ఉంటుంది:
- CLI ప్రతి శాండ్బాక్స్లో లోకల్ చెక్అవుట్లను నిర్వహిస్తుంది, అప్డేట్లను సింక్ చేస్తుంది, మరియు ఏజెంట్ మార్పులను సబ్మిట్ చేస్తుంది.
- కంట్రోల్ ప్లేన్ ప్రాజెక్ట్ రిపోజిటరీని గుర్తించి, దానిని చేరుకోవడానికి స్వల్పకాలిక క్రెడెన్షియల్స్ను జారీ చేస్తుంది.
- Git సర్వీస్ శాండ్బాక్స్లకు రిపోజిటరీ డేటాను పంపుతుంది, వాటి సబ్మిట్లను స్వీకరిస్తుంది, మరియు ఏ సబ్మిషన్ తాజా ఆమోదిత కమిట్గా మారుతుందో నిర్ణయిస్తుంది.
- AWS S3 ఆధారిత స్టోరేజ్ రిపోజిటరీ డేటాను మన్నికగా నిల్వ చేస్తుంది.
- డౌన్స్ట్రీమ్ ప్రాసెసింగ్ సేవ్ చేసిన డాక్యుమెంట్ల నుండి టెక్స్ట్ను మరియు ఇతర ఉపయోగకరమైన సమాచారాన్ని సంగ్రహించి, ఏజెంట్లు ప్రాజెక్ట్ను లోడ్ లేదా రిఫ్రెష్ చేసినప్పుడు దానిని అందుబాటులో ఉంచుతుంది.
ప్రతి ఏజెంట్కు సొంత వేరుచేయబడిన శాండ్బాక్స్ ఉంటుంది. ఆ శాండ్బాక్స్లో, అది ఒక చిన్న CLI నిర్వహించే రిపోజిటరీ లోకల్ కాపీతో పనిచేస్తుంది. CLI రిపోజిటరీని గుర్తించమని కంట్రోల్ ప్లేన్ను అడుగుతుంది, ఆపై Git సర్వీస్ ద్వారా మార్పులను ఫెచ్ చేసి సబ్మిట్ చేస్తుంది. శాండ్బాక్స్ అభ్యర్థనలు Git సర్వీస్ను చేరే ముందు ఒక ఏజెంట్ ప్రాక్సీ వాటి యాక్సెస్ను తనిఖీ చేస్తుంది. Git సర్వీస్ భాగస్వామ్య ఫైల్సిస్టమ్పై రిపోజిటరీలను చదువుతుంది, రాస్తుంది, మరియు ప్రతి సబ్మిషన్ తాజా ఆమోదిత కమిట్గా మారాలా వద్దా అని నిర్ణయిస్తుంది. ఆ ఫైల్సిస్టమ్ను AWS S3Files అందిస్తుంది, ఇది S3 ఆధారిత స్టోరేజ్ను సాధారణ ఫైల్లు మరియు డైరెక్టరీలుగా యాక్సెస్ చేయగలిగేలా చేస్తుంది. స్టోరేజ్ వేరుచేయబడిన సెల్లుగా విభజించబడింది, ప్రతి సెల్కు సొంత ఫైల్సిస్టమ్ మరియు Git సర్వీస్ రెప్లికాలు ఉంటాయి. ఒక కమిట్ ఆమోదించబడిన తర్వాత, బ్యాక్గ్రౌండ్ వర్కర్లు మారిన డాక్యుమెంట్ల నుండి టెక్స్ట్ను మరియు ఇతర ఉపయోగకరమైన సమాచారాన్ని సంగ్రహిస్తాయి, ఫలితాలను రిపోజిటరీ చరిత్ర నుండి వేరుగా నిల్వ చేస్తాయి, మరియు ఏజెంట్లు ప్రాజెక్ట్ను లోడ్ లేదా రిఫ్రెష్ చేసినప్పుడు వాటిని అందుబాటులో ఉంచుతాయి.
తర్వాత, ఒక్కో కాంపోనెంట్ను వరుసగా పరిశీలిద్దాం.
CLI: శాండ్బాక్స్లలో లోకల్ ఫైల్లతో పని చేయడం
ఏజెంట్లు మా అంతర్గత శాండ్బాక్స్ ప్లాట్ఫామ్ అయిన SPACEలో రన్ అవుతాయి. ప్రతి శాండ్బాక్స్లో రిపోజిటరీని సిద్ధం చేసి, దానిని సింక్లో ఉంచే ఒక చిన్న CLI ఉంటుంది. ఏజెంట్ చేసే ప్రతి అర్థవంతమైన పని యూనిట్ కోసం, అది మార్పులను ఒక కమిట్గా సబ్మిట్ చేస్తుంది.
ఏజెంట్లు సాధారణంగా ప్రాజెక్ట్ ఫైల్లలో చిన్న భాగాన్ని మాత్రమే ఉపయోగిస్తాయి, కాబట్టి మొత్తం రిపోజిటరీని ముందుగానే లోకల్గా సిద్ధం చేయాల్సిన అవసరం లేదు. అందుకే, CLI అవసరమైనప్పుడు మాత్రమే (లేజీగా) ఫైల్లను సిద్ధం చేస్తుంది: Git Large File Storage (LFS) ద్వారా నిల్వ చేయబడిన పెద్ద ఫైల్లు మరియు బైనరీ ఫైల్లు, ఆబ్జెక్ట్ యొక్క వాస్తవ పరిమాణాన్ని నిల్వ చేసే చిన్న పాయింటర్ ఫైల్లుగా వస్తాయి, కాబట్టి డౌన్లోడ్ చేయడం విలువైనదా కాదా అని నిర్ణయించడానికి ఏజెంట్ పేరును, పరిమాణాన్ని ఉపయోగించుకోగలదు. PDFల వంటి డాక్యుమెంట్ల కోసం, ఏజెంట్ ముందుగా పార్స్ చేసిన టెక్స్ట్ను చదువుతుంది మరియు అవసరమైనప్పుడు మాత్రమే సోర్స్ ఫైల్లను డౌన్లోడ్ చేస్తుంది.
మరో సహజమైన ఎంపిక వర్చువల్ ఫైల్సిస్టమ్ను ఉపయోగించడం. మేము FUSE ఆధారిత అమలును పరీక్షించాము, కానీ ప్రతి అభ్యర్థనకు నెట్వర్క్ రౌండ్ట్రిప్ అవసరం కాబట్టి, ఫైల్సిస్టమ్ కార్యకలాపాలు ఎక్కువగా ఉండే వర్క్లోడ్లలో అది లోకల్ ఫైల్లతో పోలిస్తే దాదాపు 400 రెట్లు నెమ్మదిగా ఉంది. దానికి సాధారణంగా హోస్ట్ నుండి ప్రివిలేజ్డ్ సామర్థ్యాలు కూడా అవసరం, కాబట్టి ప్రతి ఏజెంట్ ప్రివిలేజ్డ్ శాండ్బాక్స్లో రన్ కావాల్సి ఉంటుంది.
కంట్రోల్ ప్లేన్: రిపోజిటరీలను గుర్తించడం మరియు యాక్సెస్ జారీ చేయడం
కంట్రోల్ ప్లేన్ ప్రతి రిపోజిటరీ ఎక్కడ నిల్వ చేయబడిందో గుర్తించి, దానికి యాక్సెస్ జారీ చేస్తుంది. ఒక రిపోజిటరీ సృష్టించబడినప్పుడు, కంట్రోల్ ప్లేన్ దానిని ఒక స్టోరేజ్ సెల్కు కేటాయిస్తుంది; స్టోరేజ్ సెల్ అనేది సొంత Git సర్వీస్ రెప్లికాలు ఉన్న, వేరుచేయబడిన స్టోరేజ్ యూనిట్. ఒక ఏజెంట్ ప్రాజెక్ట్పై పని ప్రారంభించినప్పుడు, రిపోజిటరీ ఎక్కడ నిల్వ చేయబడిందని CLI కంట్రోల్ ప్లేన్ను అడుగుతుంది. కంట్రోల్ ప్లేన్ ఆ స్థానాన్ని మరియు Git సర్వీస్ కోసం తాత్కాలిక క్రెడెన్షియల్స్ను తిరిగి అందిస్తుంది. కంట్రోల్ ప్లేన్ ఎప్పుడూ రిపోజిటరీ డేటాను చదవదు లేదా రాయదు. రిపోజిటరీలోకి ఏది ప్రవేశించాలో Git సర్వీస్ నిర్ణయిస్తుంది.
Git సర్వీస్: డేటాను తరలించడం మరియు అప్డేట్లను సమన్వయం చేయడం
Git సర్వీస్ Git ఆపరేషన్లను అమలు చేస్తుంది మరియు శాండ్బాక్స్లు, స్టోరేజ్ మధ్య రిపోజిటరీ కంటెంట్లను మరియు వెర్షన్ చరిత్రను బదిలీ చేస్తుంది. ఇది Git సొంత సర్వింగ్ కమాండ్ల చుట్టూ ఉన్న ఒక పలుచని వ్రాపర్. రిపోజిటరీ హెడ్ ఎక్కడ ఉందో క్లయింట్కు చెప్పడానికి ref డిస్కవరీని, క్లోనింగ్ మరియు ఫెచింగ్ కోసం upload-packను, కొత్త ఆబ్జెక్ట్లను మరియు రిపోజిటరీ హెడ్ను ముందుకు జరపాలనే అభ్యర్థనను స్వీకరించడానికి receive-packను ఇది సపోర్ట్ చేస్తుంది. ఇది Git LFS APIని కూడా అందిస్తుంది: పెద్ద ఫైల్లు మరియు బైనరీ ఫైల్ల కోసం, శాండ్బాక్స్లు ఆ ఫైల్లను నేరుగా S3కి అప్లోడ్ చేయడానికి మరియు S3 నుండి డౌన్లోడ్ చేయడానికి వీలుగా స్వల్పకాలిక లింక్లను జారీ చేస్తుంది.
మేము రెడీమేడ్ ఫోర్జ్ సర్వర్తో ప్రారంభించాము, తద్వారా మాకు అవసరమైన Git ఆపరేషన్లపై మాత్రమే దృష్టి సారించే మా సొంత తేలికపాటి ఫోర్జ్ను నిర్మిస్తూనే, సమాంతరంగా ఏజెంట్ మరియు యూజర్ ఇంటర్ఫేస్లను ప్రోటోటైప్ చేయగలిగాము.
ఈ సర్వీస్ రెప్లికాల సమూహాన్ని కలిగి ఉంటుంది, ప్రతి రెప్లికా అదే సర్వర్ యొక్క ఒక రన్నింగ్ ఇన్స్టాన్స్. ఒక సెల్ భాగస్వామ్య స్టోరేజ్ను, రెప్లికాల సమితిని మరియు వాటి సహాయక సర్వీస్లను ఒకచోట చేర్చుతుంది. అప్పుడు ఒక సెల్లోని రెప్లికాలు ప్రతి రిపోజిటరీకి స్వతంత్ర కాపీలను నిర్వహించే బదులు, అదే భాగస్వామ్య ఫైల్సిస్టమ్ను యాక్సెస్ చేయగలవు.
ఈ భాగస్వామ్య స్టోరేజ్ వల్ల రెప్లికాలు స్టేట్లెస్గా ఉండగలుగుతాయి. సెల్లోని ఏ రెప్లికా అయినా ఆ సెల్లోని ఏ రిపోజిటరీకైనా సేవలందించగలదు, కాబట్టి రెప్లికాలను మార్చడానికి లేదా జోడించడానికి సర్వర్ల మధ్య రిపోజిటరీ డేటాను తరలించాల్సిన అవసరం లేదు. ఒక రిపోజిటరీ కోసం వచ్చే అభ్యర్థనలు దాని కాష్లు ఉపయోగకరంగా ఉండేందుకు సాధారణంగా ఒకే రెప్లికాకు వెళ్తాయి, కానీ ఆ నిర్దిష్ట ఇన్స్టాన్స్ అందుబాటులో ఉండటంపై రిపోజిటరీ ఆధారపడదు.
ఆమోదించిన కమిట్ చెల్లుబాటు అయ్యే రిపోజిటరీ స్థితి అని నిర్ధారించడానికి, ఆమోద దశ రిపోజిటరీ ఇన్వేరియంట్లను తనిఖీ చేస్తుంది. మేము ప్రతి రిపోజిటరీకి స్పష్టమైన కాంట్రాక్ట్ను నిర్వచిస్తాము, తద్వారా యాంత్రిక తనిఖీలు అది మరీ పెద్దదిగా పెరగకుండా నిరోధించగలవు. PDFలు, చిత్రాలు వంటి పెద్ద ఫైల్లు మరియు బైనరీ ఫైల్లు ముడి Git బ్లాబ్లుగా కాకుండా Git LFS ద్వారా నిల్వ చేయబడతాయి. కంపాక్షన్ రిపోజిటరీ పరిమాణాన్ని పరిమితం చేస్తూనే ఇటీవలి చరిత్రను అందుబాటులో ఉంచుతుంది. సబ్మిట్ విజయవంతమైన తర్వాత, రిపోజిటరీకి కంపాక్షన్ అవసరమా అని CLI Git సర్వీస్ను అడుగుతుంది. నిలుపుకున్న కమిట్ల సంఖ్య ఒక పరిమితిని మించితే, Git సర్వీస్ అత్యంత ఇటీవలి కమిట్లలో ఒక చిన్న సమితిని మాత్రమే ఉంచుతుంది. పాత చరిత్ర ఒకే ప్రారంభ స్నాప్షాట్తో భర్తీ చేయబడుతుంది, మరియు కమిట్ ఐడెంటిఫైయర్లను అప్డేట్ చేయడానికి ఇటీవలి కమిట్లు రీప్లే చేయబడతాయి.
ఒక సరళమైన సింక్రొనైజేషన్ దశ ఏకకాలిక రైటర్లను నియంత్రిస్తుంది. ఇది తాజాగా ఆమోదించబడిన కమిట్ను, అంటే హెడ్ను ట్రాక్ చేస్తుంది. ఒక సబ్మిషన్ వచ్చినప్పుడు, ఆ సబ్మిట్ ఆ హెడ్పై నిర్మించబడితేనే దానిని ఆమోదిస్తుంది. లేకపోతే, అది నిర్మాణబద్ధమైన పాత బేస్ (stale-base) ప్రతిస్పందనను పంపుతుంది; అప్పుడు ఓడిపోయిన ఏజెంట్ కొత్త హెడ్పై తన మార్పును రీప్లే చేసి మళ్లీ సబ్మిట్ చేయాలి. ఈ డిజైన్ గణనీయమైన జాప్యాలను కలిగించకుండానే, ఏకకాలిక ఏజెంట్లు ఒకదాని మార్పులను మరొకటి నిశ్శబ్దంగా ఓవర్రైట్ చేయకుండా చూస్తుంది. మా ప్రొడక్షన్ వర్క్ఫ్లోలలో, 2% కంటే తక్కువ సబ్మిట్లు మాత్రమే పాతవిగా తిరస్కరించబడతాయి. మొత్తంగా, మధ్యస్థ (median) సబ్మిట్ లేటెన్సీ 1.7 సెకన్ల కంటే తక్కువ, p99 లేటెన్సీ 8 సెకన్ల కంటే తక్కువ.
Git సర్వీస్ ఆమోదించబడిన ప్రతి మార్పును కూడా నమోదు చేస్తుంది. ఆమోదించబడిన ప్రతి రైట్ కోసం, అది ఒక అవుట్బాక్స్కు ఎంట్రీని జోడిస్తుంది; అవుట్బాక్స్ అనేది రిపోజిటరీ, కొత్త కమిట్, మార్పు చేసిన వినియోగదారు మరియు మారిన పాత్లను జాబితా చేసే లాగ్. పార్సర్ వంటి డౌన్స్ట్రీమ్ సర్వీస్లు కొత్త పనిని కనుగొనడానికి ఈ లాగ్ను చదువుతాయి.
ఈ భాగాలన్నీ కలిసి, ఏజెంట్లకు అవసరం లేని భాగాలు లేకుండా, ఒక రిపోజిటరీ నిర్వహణ లేయర్ను ఏర్పరుస్తాయి. ప్రతి మార్పును ఏ మనిషీ సమీక్షించడు కాబట్టి pull requestలు అవసరం లేదు. బదులుగా, Git సర్వీస్ సబ్మిట్ సమయంలో కాంట్రాక్ట్ను తనిఖీ చేస్తుంది, పోటీలో ఓడిపోయిన ఏజెంట్ తన మార్పును మళ్లీ వర్తింపజేస్తుంది, మరియు ఎవరు ఏమి మార్చారో కమిట్ చరిత్ర నమోదు చేస్తుంది. పెరుగుదలను నిర్వహించడానికి మానవ ఆపరేటర్పై ఆధారపడే బదులు, డిటర్మినిస్టిక్ తనిఖీలు ప్రతి రిపోజిటరీని దాని కాంట్రాక్ట్ పరిధిలో ఉంచుతాయి.
స్టోరేజ్: పనిని మన్నికగా ఉంచడం
స్టోరేజ్ లేయర్ శాండ్బాక్స్లు మరియు Git సర్వీస్ రెప్లికాలతో సంబంధం లేకుండా రిపోజిటరీ డేటాను మన్నికగా సేవ్ చేస్తుంది. రిపోజిటరీలు AWS S3Filesలో ఉంటాయి; ఇది S3 ఆధారిత స్టోరేజ్ను ఫైల్సిస్టమ్ ఇంటర్ఫేస్ ద్వారా అందిస్తుంది, దానిని సాధారణ Git ఎలాంటి మార్పు లేకుండా ఉపయోగించగలదు. ప్రతి రిపోజిటరీ భాగస్వామ్య ఫైల్సిస్టమ్పై ఉన్న ఒక bare Git రిపోజిటరీ, ఇందులో వర్కింగ్ చెక్అవుట్ కాకుండా రిపోజిటరీ ఆబ్జెక్ట్లు మరియు రిఫరెన్స్లు ఉంటాయి.
స్టోరేజ్ను మరియు కంప్యూట్ను వేరుచేయడం వల్ల శాండ్బాక్స్లు తాత్కాలికంగా ఉండగలుగుతాయి. ప్రతి ఏజెంట్కు సొంత శాండ్బాక్స్ లభిస్తుంది, మరియు అనేక ఏజెంట్లు ఒక మెషీన్ను పంచుకోకుండానే ఒకే ప్రాజెక్ట్పై పనిచేయగలవు. ఒక శాండ్బాక్స్ క్రాష్ అయితే, ఇంకా సబ్మిట్ చేయని పనికి మాత్రమే ప్రమాదం ఉంటుంది.
దానికి బదులుగా, మేము ప్రతి ప్రాజెక్ట్కు దాని ఏజెంట్లన్నీ పంచుకునే ఒక దీర్ఘకాలిక శాండ్బాక్స్ను ఇవ్వవచ్చు, అప్పుడు ప్రాజెక్ట్ ఫైల్లు ఆ మెషీన్ డిస్క్పై ఉంటాయి. అయితే, ఇది ఏజెంట్ల కంప్యూట్ను ఆ మెషీన్ రన్ అయ్యే చోటికే కట్టిపడేస్తుంది, మరియు దానిని అత్యంత రద్దీ సమయాలకు తగినట్లుగా సైజ్ చేయాల్సి ఉంటుంది. అది నెలల తరబడి ఆరోగ్యంగా ఉండాలి, బ్యాకప్లు మరియు రికవరీని ప్రాజెక్ట్ స్టోరేజ్ సిస్టమ్లో భాగంగా నిర్వహించాల్సి ఉంటుంది.
డౌన్స్ట్రీమ్ ప్రాసెసింగ్: డాక్యుమెంట్లను ఏజెంట్లు చదవగలిగేలా చేయడం
ప్రధాన డౌన్స్ట్రీమ్ కాంపోనెంట్ ఒక పార్సర్ పైప్లైన్, ఇది ప్రాజెక్ట్ ఫైల్లను ఏజెంట్లు సులభంగా చదవగలిగేలా చేయడానికి కొత్తగా జోడించిన లేదా అప్డేట్ చేసిన డాక్యుమెంట్ల నుండి టెక్స్ట్ మరియు మెటాడేటాను సంగ్రహిస్తుంది. ఒక పార్సర్ వర్కర్ చేంజ్ స్ట్రీమ్ క్యూ నుండి అప్డేట్లను స్వీకరిస్తుంది, కమిట్ మెటాడేటా నుండి మారిన ఫైల్లను గుర్తిస్తుంది, మరియు కంటెంట్ హాష్ను ఉపయోగించి ముడి బైట్లను తెస్తుంది. ఆ తర్వాత అది డాక్యుమెంట్ను పార్స్ చేసి, సంగ్రహించిన టెక్స్ట్ను మరియు డాక్యుమెంట్ మెటాడేటాను రూపొందిస్తుంది.
పార్స్ చేసిన అవుట్పుట్లు రిపోజిటరీ బయట, సోర్స్ డాక్యుమెంట్ హాష్ను కీగా ఉపయోగించే ఒక స్టోర్లో ఉంటాయి. ఈ ఆర్టిఫ్యాక్ట్లు ఎప్పుడూ రిపోజిటరీలోకి తిరిగి కమిట్ చేయబడవు, ఎందుకంటే అలా చేస్తే చరిత్ర అనవసరంగా కలుషితమవుతుంది మరియు ఏకకాలిక రైట్ల సంఖ్య పెరుగుతుంది. బదులుగా, పార్స్ చేసిన అవుట్పుట్లు చెక్అవుట్ మరియు సింక్ ద్వారా శాండ్బాక్స్ను చేరుకుంటాయి. ప్రతి చెక్అవుట్లో, ఆర్టిఫ్యాక్ట్లను సిద్ధం చేయడానికి CLI ఉపయోగించే ఒక రిజర్వ్ చేసిన డైరెక్టరీ ఉంటుంది. పార్సింగ్ అసింక్రోనస్గా జరుగుతుంది, కాబట్టి బ్యాక్గ్రౌండ్ పార్సర్ వర్కర్ చెక్అవుట్లను బ్లాక్ చేయదు.
ఏజెంట్లు వర్క్స్పేస్ను ఎలా ఉపయోగిస్తాయి
ఏజెంట్లు శాండ్బాక్స్లోకి లోడ్ చేయబడిన రిపోజిటరీ వెర్షన్ను ప్రామాణిక ఫైల్సిస్టమ్ టూల్స్తో అన్వేషిస్తాయి. ముందుగా శోధించి ఆపై చదివే స్థిరమైన పైప్లైన్ను అనుసరించే బదులు, అవి ఫోల్డర్లను జాబితా చేస్తాయి, grepతో ఫైల్ కంటెంట్లను శోధిస్తాయి, సంబంధిత భాగాలను చదువుతాయి, మరియు తర్వాత ఎక్కడ చూడాలో నిర్ణయించడానికి తాము కనుగొన్నదాన్ని ఉపయోగిస్తాయి.
Computer లాగానే, Search కూడా తన ప్రామాణిక ఫైల్ టూల్స్ ద్వారా ఇదే విధానాన్ని ఉపయోగిస్తుంది. ఒక ప్రత్యేక ఎక్స్ప్లోరేషన్ ఏజెంట్ మరింత పరిమిత బడ్జెట్లో ప్రాజెక్ట్ను శోధించి, సంబంధిత ఫైల్ పాత్లను మరియు సహాయక ఉద్ధరణలను తిరిగి అందిస్తుంది. ఆ తర్వాత సమాధానమిచ్చే మోడల్ ఎంచుకున్న ఫైల్లను చదివి సమాధానాన్ని రూపొందిస్తుంది. ఇప్పటికే ఉన్న ప్రాజెక్ట్ శాండ్బాక్స్ను మళ్లీ ఉపయోగించడం సెటప్ సమయాన్ని తగ్గిస్తుంది: వార్మ్ చెక్అవుట్కు అటాచ్ కావడానికి దాదాపు 2.9 సెకన్లు పడుతుంది, అదే కోల్డ్ స్టార్ట్కు సుమారు 8 సెకన్లు పడుతుంది.
పార్స్ చేసిన టెక్స్ట్ PDFలు మరియు Office ఫైల్ల వంటి పెద్ద డాక్యుమెంట్లను అవే టూల్స్తో శోధించగలిగేలా చేస్తుంది. ఏజెంట్ ముందుగా ఒక మానిఫెస్ట్ను, అంటే ఏ డాక్యుమెంట్లకు సంగ్రహించిన టెక్స్ట్ అందుబాటులో ఉందో చూపించే జాబితాను, తనిఖీ చేస్తుంది, ఆపై ఆ టెక్స్ట్ను సాధారణ ఫైల్లుగా శోధించి చదువుతుంది. టెక్స్ట్ సరిపోనప్పుడు మాత్రమే, ఉదాహరణకు చిత్రాలు, లేఅవుట్ లేదా ఎంబెడ్ చేసిన డేటాను పరిశీలించడానికి, అది అసలు డాక్యుమెంట్ను డౌన్లోడ్ చేస్తుంది.
ఒకే కార్పస్పై 150 సింగిల్-డాక్యుమెంట్ ఆర్థిక ప్రశ్నలతో, ఇండెక్స్పై సెమాంటిక్ సెర్చ్తో పోల్చి మేము ఈ విధానాన్ని బెంచ్మార్క్ చేశాము. ఎక్స్ప్లోరేషన్ ఏజెంట్ సరైన డాక్యుమెంట్ను తిరిగి పొందడంలో 0.867 మరియు సరిగ్గా సమాధానం ఇవ్వడంలో 0.627 స్కోర్ సాధించింది, సెమాంటిక్ సెర్చ్కు ఇవి దాదాపు 0.39 మరియు 0.37 మాత్రమే; అంటే సుమారు 25% తక్కువ లేటెన్సీతో, సమాధానాలలో దాదాపు 1.7x మరియు రిట్రీవల్లో 2x మెరుగైన ఫలితాలు. ఎక్స్ప్లోరేషన్ ఏజెంట్ ఎక్కువగా సంగ్రహించిన టెక్స్ట్తోనే పనిచేస్తుంది మరియు అసలు 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}
}