सर्व काही एक फाइल आहे: युनिक्सपासून एआय एजंटच्या डिझाइनचे तत्त्वज्ञान
सर्व काही एक फाइल आहे: युनिक्सपासून एआय एजंटच्या डिझाइनचे तत्त्वज्ञान
मूळ लेखक: एथन ये चेंग


अर्ध्या शतकाहून अधिक काळचा प्रतिध्वनी
१९७० च्या दशकाच्या सुरुवातीला बेल लॅब्समध्ये (Bell Labs), युनिक्सचे जनक केन थॉम्पसन (Ken Thompson) आणि डेनिस रिची (Dennis Ritchie) यांनी प्रथम एक धाडसी आणि जवळजवळ हट्टी असे डिझाइन तत्त्व मांडले: Everything is a file - सर्व काही एक फाइल आहे.
आज, पन्नास वर्षांहून अधिक काळानंतर, एआय एजंट फ्रेमवर्कची (AI Agent framework) वाढ झाली आहे. Manus, Claude Code, OpenClaw... हे विविध टीम्स, विविध तंत्रज्ञान आणि विविध व्यावसायिक उद्दिष्टांचे आहेत, तरीही त्यांनी एकच निवड केली आहे: फाइल सिस्टमला (file system) एजंटचा (Agent) मूलभूत आधार बनवणे.
Manus एजंटला एक व्हर्च्युअल मशीन (virtual machine) देते, कार्याचे आउटपुट (output) फाइलमध्ये सेव्ह (save) केले जाते. Claude Code थेट वापरकर्त्याच्या लोकल फाइल सिस्टमवर (local file system) वाचते आणि लिहिते आणि CLAUDE.md फाइलमध्ये सर्व सूचना आणि संदर्भ ठेवते. OpenClaw सारखे ओपन सोर्स फ्रेमवर्क (open source framework) देखील कार्य विभाजन आणि मधल्या स्थितीला निर्देशिक संरचनेत (directory structure) आयोजित करतात.
जेव्हा अर्ध्या शतकाने वेगळे झालेले अभियंते पूर्णपणे भिन्न तांत्रिक समस्यांना सामोरे जातात, तेव्हा ते एकाच समाधानावर पोहोचतात - हा योगायोग नाही, तर डिझाइनच्या तत्त्वज्ञानाचा (design philosophy) प्रतिध्वनी आहे.
युनिक्सचा तो निर्णय
या गोष्टीचे महत्त्व समजून घेण्यासाठी, युनिक्सने (Unix) काय केले हे समजून घेणे आवश्यक आहे.
युनिक्स फाइल सिस्टमचे (Unix file system) डिझाइन हे संगणक विज्ञानातील सर्वात सुंदर डिझाइनपैकी एक मानले जाते. हे एक अत्यंत गुंतागुंतीची समस्या सोडवते: विविध हार्डवेअर (hardware) संसाधने आणि डेटा संसाधनांचे व्यवस्थापन करण्यासाठी एकसमान आणि सोपा इंटरफेस (interface) कसा वापरायचा.
१९७० च्या दशकापूर्वी, ऑपरेटिंग सिस्टम (operating system) अशा प्रकारे कार्य करत होती: तुम्हाला डिस्क वाचायची असल्यास, डिस्क इंटरफेस वापरा; तुम्हाला टेप वाचायची असल्यास, टेप इंटरफेस वापरा; तुम्हाला टर्मिनलमध्ये प्रवेश करायचा असल्यास, टर्मिनल इंटरफेस वापरा. प्रत्येक डिव्हाइसचे (device) स्वतःचे API होते आणि प्रत्येक API चा स्वतःचा अर्थ होता. तुमच्याकडे N प्रकारचे डिव्हाइसेस आणि M प्रकारच्या ऑपरेशन्स (operations) असल्यास, सिस्टमची गुंतागुंत N × M असेल.
थॉम्पसन (Thompson) आणि रिची (Ritchie) यांनी एक साधे आणि मूर्खपणाचे काम केले:
प्रत्येक गोष्ट फाइलमध्ये रूपांतरित करा. open, read, write, close या चार क्रियापदांनी सर्व काही ऑपरेट (operate) करा.
याचा अर्थ असा आहे की ऑपरेटिंग सिस्टममधील (operating system) सर्व संसाधने - डॉक्युमेंट्स (documents), डायरेक्टरी (directory), हार्ड ड्राइव्ह (hard drive), मॉडेम (modem), कीबोर्ड (keyboard), प्रिंटर (printer), आणि नेटवर्क कनेक्शन (network connection) आणि प्रोसेस इन्फॉर्मेशन (process information) - हे सर्व फाइल स्ट्रीममध्ये (Stream of Bytes) रूपांतरित केले जाऊ शकतात.
याचा अर्थ असा आहे की तुम्हाला फक्त एक API शिकण्याची आवश्यकता आहे - open(), read(), write(), close() - आणि तुम्ही संगणकातील सर्व संसाधने ऑपरेट करू शकता.
यामुळे, गुंतागुंत N × M वरून 4 × 1 पर्यंत कमी झाली. चार क्रियापदे, एक ॲबस्ट्रॅक्शन लेयर (abstraction layer).
यातील बुद्धिमत्ता 'फाइल' या संज्ञेमध्ये नाही, तर त्याहून अधिक सखोल दृष्टिकोन आहे:
तुम्हाला फाइल डिस्क्रिप्टरच्या (file descriptor) मागे काय आहे हे जाणून घेण्याची गरज नाही. इंटरफेस म्हणजे करार.
fd (फाइल डिस्क्रिप्टर) हे एक अपारदर्शक हँडल (opaque handle) आहे. तुम्ही त्यावर read() करता, बाइट स्ट्रीम (byte stream) बाहेर येते. हे बाइट्स हार्ड ड्राइव्ह सेक्टरमधून (hard drive sector), नेटवर्क कार्ड बफरमधून (network card buffer) आले आहेत की दुसर्या प्रोसेसच्या (process) स्टँडर्ड आउटपुटमधून (standard output) - याची तुम्हाला पर्वा नाही आणि नसायला हवी.
एकसमान इंटरफेसची (uniform interface) हीच ताकद आहे: ते अज्ञानाला एक फायदा बनवते.

एजंटसमोरचे तेच आव्हान
आता एआय एजंटच्या (AI Agent) स्थितीकडे परत येऊया.
एखाद्या एजंटला (Agent) एखादे गुंतागुंतीचे कार्य पूर्ण करायचे असल्यास, त्याला १९७० च्या दशकातील ऑपरेटिंग सिस्टमसारखीच (operating system) परिस्थितीचा सामना करावा लागतो:- टिकाऊ मेमरी **: LLM चा संदर्भ विंडो अस्थिर असतो, विचारांची साखळी सेशनसोबत नष्ट होते. जसे एखादी प्रक्रिया बंद झाल्यावर मेमरी रिकामी होते - तुम्हाला एक जागा हवी आहे जिथे तुम्ही मधली स्थिती टिकवून ठेवू शकता, अन्यथा प्रत्येक संवाद शून्यापासून सुरू होईल.
- क्रमिक संदर्भ: गुंतागुंतीचे कार्य एकाच वेळी पूर्ण होऊ शकत नाही. एजंटला अनेक अनुमान चक्रांमध्ये हळूहळू संदर्भ जमा करणे आवश्यक आहे, जसे युनिक्स प्रक्रिया फाइल वाचून आणि लिहून अनेक अंमलबजावणी दरम्यान स्थिती प्रसारित करते. फाइल सिस्टम नैसर्गिकरित्या 'थोडे लिहा, थोडे वाचा आणि पुन्हा थोडे लिहा' अशा क्रमिक कार्य मोड प्रदान करते.
- साधने आणि कौशल्यांचे एकीकृत वेळापत्रक: एजंटला शोध, कोड अंमलबजावणी, प्रतिमा निर्मिती इत्यादी विषम साधनांना (Tools/Skills) कॉल करणे आवश्यक आहे, जसे युनिक्सला डिस्क, नेटवर्क, प्रिंटर इत्यादी विषम उपकरणांचे व्यवस्थापन करावे लागते. तुम्हाला एक समान अमूर्तता आवश्यक आहे, अन्यथा प्रत्येक नवीन साधन जोडण्यासाठी तुम्हाला एक नवीन एकत्रीकरण तर्क लिहावा लागेल.
- कॉम्प्युटर वापराच्या परवानगी सीमा: जेव्हा एजंटमध्ये कॉम्प्युटर चालवण्याची क्षमता असते, तेव्हा 'ते काय स्पर्श करू शकतात आणि काय स्पर्श करू शकत नाहीत' हा जीवन-मरणाचा प्रश्न बनतो. युनिक्सची फाइल परवानग्या प्रणाली (rwx) एक तयार सँडबॉक्स मॉडेल प्रदान करते - निर्देशिका म्हणजे सीमा आणि परवानग्या म्हणजे करार.
चार गरजा. हे परिचित वाटते का?
हेच ते प्रश्न आहेत जे ऑपरेटिंग सिस्टमला 1970 च्या दशकात आले होते.
टिकाऊ मेमरी - फाइल सिस्टम नैसर्गिकरित्या निराकरण करते, लेखन म्हणजे टिकवणे. क्रमिक संदर्भ - निर्देशिका रचना स्वतःच वाढत्या स्वरूपाची असते, mkdir, touch, append, संदर्भ फाइलसह वाढतो. साधनांचे एकीकृत वेळापत्रक - युनिक्स पाइपलाइनचे सार: एका प्रक्रियेचे stdout हे दुसर्या प्रक्रियेचे stdin असते, मधले माध्यम म्हणजे बाइट प्रवाह. एजंटची साधन साखळी देखील अशीच असते: मागील चरणाचे आउटपुट ही पुढील चरणाची इनपुट असते. परवानगी सीमा - फाइल सिस्टमच्या rwx परवानग्या, chroot सँडबॉक्स, नैसर्गिकरित्या एजंटसाठी 'क्षमतेचे वर्तुळ' निश्चित करतात.
म्हणून जेव्हा एजंट फ्रेमवर्कचे डिझाइनर 'एजंटची कार्य स्थिती कुठे ठेवायची' या प्रश्नाला सामोरे जातात, तेव्हा उत्तर जवळजवळ पूर्वनिर्धारित असते: फाइल सिस्टममध्ये ठेवा. कारण या चारही मर्यादा एकाच वेळी पूर्ण करणारा कोणताही सोपा उपाय नाही.
जेव्हा सिस्टमला 'असंख्य विषम संसाधनांच्या परस्परसंवादाचे व्यवस्थापन' करण्याची आवश्यकता असते, तेव्हा तुमच्याकडे दोन मार्ग आहेत:
मार्ग A: प्रत्येक संसाधनासाठी समर्पित इंटरफेस डिझाइन करा. N संसाधने × M ऑपरेशन्स = NM इंटरफेस. अचूक पण स्फोटक.
मार्ग B: एक पुरेसा पातळ अमूर्त स्तर शोधा, जेणेकरून सर्व संसाधने समान कपडे घालू शकतील. 4 ऑपरेशन्स × 1 अमूर्त स्तर. खडबडीत पण एकत्र करण्यायोग्य.
युनिक्सने B निवडले. पन्नास वर्षांहून अधिक काळानंतर, एजंट फ्रेमवर्कने पुन्हा B निवडले.

आणखी एक सखोल स्तर: फाइल हे विचारांचे बाह्य स्वरूप आहे
परंतु जर आपण फक्त 'तांत्रिक उपायांच्या अभिसरणावर' थांबलो, तर आपण अधिक मूलभूत गोष्टी गमावतो.
माणूस स्वतः गुंतागुंतीच्या कार्यांना कसा हाताळतो ते आठवा.
तुम्हाला एक मोठा प्रकल्प मिळतो, पहिली गोष्ट म्हणजे काम सुरू करणे नव्हे, तर: फोल्डर तयार करणे. प्रकल्प रूट डिरेक्टरी, उप-कार्य डिरेक्टरी, संदर्भ सामग्री डिरेक्टरी, आउटपुट डिरेक्टरी. तुम्ही अराजक कार्याला व्यवस्थापित करण्यायोग्य युनिट्समध्ये विभाजित करण्यासाठी डिरेक्टरी स्ट्रक्चरचा वापर करता. तुम्ही प्रत्येक युनिटला नाव देण्यासाठी फाइल नावांचा वापर करता. तुम्ही विचार प्रक्रिया आणि मधले उत्पादन रेकॉर्ड करण्यासाठी फाइल सामग्रीचा वापर करता.
फाइल सिस्टम हे फक्त स्टोरेज सोल्यूशन नाही. हे मानवी विचारांना बाह्य स्वरूप देण्याचे मूळ साधन आहे.
या दृष्टीने हे स्पष्ट होते की एजंट फ्रेमवर्क फाइल सिस्टमवर का केंद्रित आहे: LLM च्या 'विचारांना' बाह्य स्वरूप देणे आवश्यक आहे - त्याची संदर्भ विंडो मर्यादित आहे आणि दीर्घकालीन अनुमानासाठी बाह्य मेमरीवर अवलंबून राहावे लागते. आणि फाइल सिस्टम हे मानवाने शोधलेले सर्वात सामान्य 'बाह्य मेमरी' स्वरूप आहे.
या दृष्टिकोनातून, Claude Code चा CLAUDE.md हा कॉन्फिगरेशन फाइल नाही. हा एक बाह्य ज्ञानात्मक करार आहे - मानव हेतू फाइलमध्ये लिहितो आणि एजंट फाइल वाचून हेतू समजून घेतो. फाइल हे मानवी मन आणि कृत्रिम बुद्धिमत्ता यांच्यातील इंटरफेस स्तर बनते.
हे युनिक्स पाइपलाइनच्या तत्त्वज्ञानाशी आश्चर्यकारकपणे जुळते:
Write programs to handle text streams, because that is a universal interface."प्रोग्राम्स" च्या जागी "एजंट्स" आणि "टेक्स्ट स्ट्रीम्स" च्या जागी "फाईल्स" लिहा, हे वाक्य 2026 मध्येही तितकेच खरे असेल.
पहिल्या तत्त्वांकडे परत
महान अमूर्त कल्पना कधीही कालबाह्य होत नाहीत, त्यांना फक्त नवीन क्षेत्रांमध्ये नवीन उदाहरणे मिळतात.
"एकात्मिक इंटरफेस गुंतागुंत कमी करतो" हा युनिक्सचा शोध नाही, तर ही सिस्टम डिझाइनची एक शाश्वत बाब आहे. युनिक्सने योगायोगाने "फाईल" या नावाने हे साध्य केले. AI Agent ने योगायोगाने "वर्किंग डिरेक्टरी" च्या स्वरूपात ते पुन्हा साध्य केले.
पुढील पिढीतील सिस्टीम्सला देखील त्याच निवडीचा सामना करावा लागेल: प्रत्येक गोष्टीसाठी समर्पित इंटरफेस डिझाइन करायचा, की एक पातळ, सामान्य, एकत्र करण्यायोग्य अमूर्तता शोधायची?
जर इतिहासाने काही शिकवण दिली असेल, तर त्याचे उत्तर /dev/null च्या बाजूलाच लिहिले आहे:
Keep it simple. Make it compose. Everything is a file. (सोपे ठेवा. ते एकत्र करण्यायोग्य बनवा. प्रत्येक गोष्ट एक फाईल आहे.)





