అన్నీ ఫైళ్లే: యునిక్స్ నుండి AI ఏజెంట్ డిజైన్ ఫిలాసఫీ వరకు
అన్నీ ఫైళ్లే: యునిక్స్ నుండి AI ఏజెంట్ డిజైన్ ఫిలాసఫీ వరకు
ఒరిజినల్: ఇథాన్ యేచెంగ్


సగం శతాబ్దం ప్రతిధ్వని
1970ల ప్రారంభంలో బెల్ ల్యాబ్స్లో, యునిక్స్ పితామహుడు కెన్ థాంప్సన్ మరియు డెన్నిస్ రిట్చీ మొట్టమొదటిసారిగా ఒక సాహసోపేతమైన మరియు మొండి పట్టుదలగల డిజైన్ సూత్రాన్ని ప్రతిపాదించారు: అన్నీ ఫైళ్లే - Everything is a file.
యాభై సంవత్సరాల తరువాత, AI ఏజెంట్ ఫ్రేమ్వర్క్లు విపరీతంగా పెరిగాయి. Manus, Claude Code, OpenClaw... ఇవి వేర్వేరు బృందాలు, వేర్వేరు సాంకేతిక స్టాక్లు, వేర్వేరు వాణిజ్య లక్ష్యాల నుండి వచ్చాయి, కానీ అన్నీ ఒకే ఎంపికను చేశాయి: ఫైల్ సిస్టమ్ను ఏజెంట్ యొక్క జ్ఞాన అస్థిపంజరంగా ఉపయోగించడం.
Manus ఏజెంట్కు ఒక వర్చువల్ మెషీన్ను ఇస్తుంది, టాస్క్ అవుట్పుట్లు ఫైల్లుగా నిక్షిప్తం చేయబడతాయి. Claude Code నేరుగా వినియోగదారు స్థానిక ఫైల్ సిస్టమ్లో చదువుతుంది మరియు వ్రాస్తుంది, మొత్తం సూచనలు మరియు సందర్భాన్ని CLAUDE.md ఫైల్లో నిక్షిప్తం చేస్తుంది. OpenClaw వంటి ఓపెన్ సోర్స్ ఫ్రేమ్వర్క్లు కూడా టాస్క్ విభజన మరియు మధ్యంతర స్థితిని డైరెక్టరీ నిర్మాణంలో నిర్వహిస్తాయి.
సగం శతాబ్దం దూరంలో ఉన్న ఇంజనీర్లు పూర్తిగా భిన్నమైన సాంకేతిక సమస్యలను ఎదుర్కొన్నప్పుడు, స్వతంత్రంగా ఒకే పరిష్కారానికి చేరుకున్నారు - ఇది యాదృచ్ఛికం కాదు, ఇది డిజైన్ ఫిలాసఫీ యొక్క ప్రతిధ్వని.
యునిక్స్ తీసుకున్న నిర్ణయం
దీని ప్రాముఖ్యతను అర్థం చేసుకోవడానికి, యునిక్స్ ఏమి చేసిందో ముందుగా తెలుసుకోవాలి.
యునిక్స్ ఫైల్ సిస్టమ్ డిజైన్ కంప్యూటర్ సైన్స్ చరిత్రలో అత్యంత సొగసైన డిజైన్లలో ఒకటిగా పరిగణించబడుతుంది. ఇది చాలా క్లిష్టమైన సమస్యను పరిష్కరించింది: విభిన్న హార్డ్వేర్ వనరులు మరియు డేటా వనరులను నిర్వహించడానికి ఒక ఏకీకృత మరియు సరళమైన ఇంటర్ఫేస్ను ఎలా ఉపయోగించాలి?
1970ల ముందు, ఆపరేటింగ్ సిస్టమ్ ఈ విధంగా పనిచేసేది: మీరు డిస్క్ను చదవాలంటే, డిస్క్ ఇంటర్ఫేస్ను ఉపయోగించాలి; మీరు మాగ్నెటిక్ టేప్ను చదవాలంటే, టేప్ ఇంటర్ఫేస్ను ఉపయోగించాలి; మీరు టెర్మినల్ను యాక్సెస్ చేయాలంటే, టెర్మినల్ ఇంటర్ఫేస్ను ఉపయోగించాలి. ప్రతి పరికరానికి దాని స్వంత API ఉంది, ప్రతి API కి దాని స్వంత అర్థం ఉంది. మీకు N రకాల పరికరాలు మరియు M రకాల ఆపరేషన్లు ఉంటే, సిస్టమ్ సంక్లిష్టత N × M అవుతుంది.
థాంప్సన్ మరియు రిట్చీ చూడటానికి చాలా సులభమైన మరియు తెలివితక్కువ పని చేశారు:
అన్నింటినీ ఫైళ్లుగా మార్చారు. ప్రతిదీ చేయడానికి open, read, write, close అనే నాలుగు క్రియలను ఉపయోగించారు.
దీని ప్రధాన అర్థం ఏమిటంటే: ఆపరేటింగ్ సిస్టమ్లోని అన్ని వనరులు - పత్రాలు, డైరెక్టరీలు, హార్డ్ డ్రైవ్లు, మోడెమ్లు, కీబోర్డ్లు, ప్రింటర్లు, నెట్వర్క్ కనెక్షన్లు మరియు ప్రాసెస్ సమాచారం కూడా - ఒక ఫైల్ స్ట్రీమ్గా (Stream of Bytes) సంగ్రహించబడతాయి.
దీని అర్థం, మీరు ఒకే API సెట్ను నేర్చుకుంటే - open(), read(), write(), close() - మీరు కంప్యూటర్ యొక్క అన్ని వనరులను ఆపరేట్ చేయవచ్చు.
అప్పటి నుండి, సంక్లిష్టత N × M నుండి 4 × 1కి కుదించబడింది. నాలుగు క్రియలు, ఒక సంగ్రహణ.
దీనిలోని మేధావితనం "ఫైల్" అనే నామవాచకంలో లేదు, కానీ మరింత లోతైన అంతర్దృష్టిలో ఉంది:
ఫైల్ డిస్క్రిప్టర్ వెనుక ఏమి ఉందో మీరు తెలుసుకోవలసిన అవసరం లేదు. ఇంటర్ఫేస్ అంటే ఒప్పందం.
ఒక fd (ఫైల్ డిస్క్రిప్టర్) ఒక అపారదర్శక హ్యాండిల్. మీరు దానిపై read() చేస్తే, బైట్ స్ట్రీమ్ బయటకు వస్తుంది. ఈ బైట్లు హార్డ్ డ్రైవ్ సెక్టార్ నుండి వచ్చాయా, నెట్వర్క్ కార్డ్ బఫర్ నుండి వచ్చాయా లేదా మరొక ప్రాసెస్ యొక్క ప్రామాణిక అవుట్పుట్ నుండి వచ్చాయా అనేది మీకు అనవసరం, మీరు పట్టించుకోకూడదు.
ఇది ఏకీకృత ఇంటర్ఫేస్ యొక్క శక్తి: ఇది అజ్ఞానాన్ని ఒక ప్రయోజనంగా చేస్తుంది.

ఏజెంట్ ఎదుర్కొంటున్న అదే సమస్య
ఇప్పుడు AI ఏజెంట్ పరిస్థితిని తిరిగి చూద్దాం.
ఒక ఏజెంట్ సంక్లిష్టమైన పనిని పూర్తి చేయడానికి, అది 1970లలోని ఆపరేటింగ్ సిస్టమ్ను పోలి ఉండే ఆశ్చర్యకరమైన ఇబ్బందిని ఎదుర్కొంటుంది:
- నిలకడగా ఉండే జ్ఞాపకం**: LLM యొక్క సందర్భోచిత విండో అస్థిరమైనది, ఆలోచనల గొలుసు సెషన్తో పాటు అంతరించిపోతుంది. ఒక ప్రక్రియ నిష్క్రమించిన తర్వాత మెమరీ తిరిగి పొందబడినట్లే—మీరు మధ్యంతర స్థితిని నిలకడగా ఉంచడానికి ఒక స్థలం కావాలి, లేకపోతే ప్రతి సంభాషణ మొదటి నుండి ప్రారంభమవుతుంది.
- క్రమంగా సందర్భోచితం: సంక్లిష్టమైన పనులు ఒకేసారి పూర్తి చేయడం సాధ్యం కాదు. Unix ప్రక్రియలు ఫైల్లను చదవడం మరియు వ్రాయడం ద్వారా బహుళ-దశల అనుమితిలో ఏజెంట్ క్రమంగా సందర్భోచితాన్ని సేకరించాలి, ఇది బహుళ అమలుల మధ్య స్థితిని తెలియజేస్తుంది. ఫైల్ సిస్టమ్ సహజంగానే ఈ "కొంచెం వ్రాయండి, కొంచెం చదవండి, ఆపై కొంచెం వ్రాయండి" అనే క్రమమైన పని విధానాన్ని అందిస్తుంది.
- సాధనాలు మరియు నైపుణ్యాల ఏకీకృత షెడ్యూల్: ఏజెంట్ శోధన, కోడ్ అమలు, చిత్రం ఉత్పత్తి మరియు ఇతర విభిన్న సాధనాలను (Tools/Skills) ఉపయోగించాలి, Unix డిస్క్లు, నెట్వర్క్లు, ప్రింటర్లు మరియు ఇతర విభిన్న పరికరాలను నిర్వహించినట్లే. మీకు ఒక ఏకీకృత సంగ్రహణ పొర అవసరం, లేకపోతే మీరు ప్రతి కొత్త సాధనాన్ని కనెక్ట్ చేయడానికి కొత్త ఇంటిగ్రేషన్ లాజిక్ను వ్రాయాలి.
- కంప్యూటర్ వినియోగం యొక్క అనుమతి సరిహద్దులు: ఏజెంట్కు కంప్యూటర్ను ఆపరేట్ చేసే సామర్థ్యం ఉన్నప్పుడు, "అది ఏమి తాకగలదు మరియు ఏమి తాకకూడదు" అనేది ప్రాణాంతకమైన సమస్యగా మారుతుంది. Unix యొక్క ఫైల్ అనుమతి వ్యవస్థ (rwx) సరిగ్గా ఒక రెడీమేడ్ శాండ్బాక్స్ మోడల్ను అందిస్తుంది—డైరెక్టరీ సరిహద్దు, అనుమతి ఒప్పందం.
నాలుగు అవసరాలు. ఇది మీకు సుపరిచితంగా ఉందా?
ఇది 1970లలో ఆపరేటింగ్ సిస్టమ్ ఎదుర్కొన్న సమస్య.
నిలకడగా ఉండే జ్ఞాపకం—ఫైల్ సిస్టమ్ సహజంగా పరిష్కరిస్తుంది, వ్రాయడం అంటే నిలకడ. క్రమంగా సందర్భోచితం—డైరెక్టరీ నిర్మాణం స్వయంగా పెరుగుతున్న నిర్మాణం, mkdir, touch, append, సందర్భోచితం ఫైల్తో పాటు పెరుగుతుంది. సాధనాల ఏకీకృత షెడ్యూల్—Unix పైప్లైన్ యొక్క సారాంశం: ఒక ప్రక్రియ యొక్క stdout మరొక ప్రక్రియ యొక్క stdin, మధ్యస్థ మాధ్యమం బైట్ స్ట్రీమ్. ఏజెంట్ యొక్క టూల్చెయిన్ కూడా అంతే: మునుపటి దశ యొక్క అవుట్పుట్ ఫైల్ తదుపరి దశకు ఇన్పుట్.
అనుమతి సరిహద్దులు—ఫైల్ సిస్టమ్ యొక్క rwx అనుమతులు, chroot శాండ్బాక్స్, సహజంగానే ఏజెంట్ కోసం "సామర్థ్య వృత్తాన్ని" నిర్వచిస్తాయి.
కాబట్టి ఏజెంట్ ఫ్రేమ్వర్క్ యొక్క డిజైనర్ "ఏజెంట్ యొక్క పని స్థితిని ఎక్కడ ఉంచాలి" అనే ప్రశ్నను ఎదుర్కొన్నప్పుడు, సమాధానం దాదాపుగా నిర్ణయించబడుతుంది: ఫైల్ సిస్టమ్లో ఉంచండి. ఎందుకంటే ఈ నాలుగు పరిమితులను ఒకేసారి సంతృప్తి పరచడానికి సులభమైన పరిష్కారం లేదు.
సిస్టమ్ "విభిన్న వనరుల యొక్క పెద్ద సంఖ్యలో పరస్పర చర్యలను నిర్వహించవలసి వచ్చినప్పుడు", మీకు రెండు మార్గాలు ఉన్నాయి:
రూట్ A: ప్రతి వనరు కోసం ప్రత్యేక ఇంటర్ఫేస్ను రూపొందించండి. N రకాల వనరులు × M రకాల కార్యకలాపాలు = NM రకాల ఇంటర్ఫేస్లు. ఖచ్చితమైనది కానీ పేలుడు.
రూట్ B: తగినంత సన్నని సంగ్రహణ పొరను కనుగొనండి, తద్వారా అన్ని వనరులు ఒకే దుస్తులను ధరిస్తాయి. 4 రకాల కార్యకలాపాలు × 1 పొర సంగ్రహణ. కఠినమైనది కానీ కలపడానికి వీలుంది.
Unix Bని ఎంచుకుంది. యాభై సంవత్సరాల తర్వాత, ఏజెంట్ ఫ్రేమ్వర్క్ మళ్లీ Bని ఎంచుకుంది.

మరింత లోతుగా: ఫైల్ అనేది ఆలోచన యొక్క బాహ్యీకరణ
కానీ మనం "సాంకేతిక పరిష్కారం యొక్క కలయిక" వద్ద మాత్రమే ఆగిపోతే, మనం మరింత ముఖ్యమైన విషయాన్ని కోల్పోతాము.
మానవులు సంక్లిష్టమైన పనులను ఎలా నిర్వహిస్తారో గుర్తుకు తెచ్చుకోండి.
మీకు ఒక పెద్ద ప్రాజెక్ట్ వచ్చినప్పుడు, మీరు చేయవలసిన మొదటి పని పని చేయడం ప్రారంభించడం కాదు, కానీ: ఫోల్డర్లను సృష్టించడం. ప్రాజెక్ట్ రూట్ డైరెక్టరీ, సబ్-టాస్క్ డైరెక్టరీ, రిఫరెన్స్ మెటీరియల్ డైరెక్టరీ, అవుట్పుట్ డైరెక్టరీ. మీరు అస్తవ్యస్తమైన పనిని నిర్వహించదగిన యూనిట్లుగా విభజించడానికి డైరెక్టరీ నిర్మాణాన్ని ఉపయోగిస్తారు. మీరు ప్రతి యూనిట్కు పేరు పెట్టడానికి ఫైల్ పేరును ఉపయోగిస్తారు. మీరు ఆలోచనా విధానాన్ని మరియు మధ్యంతర ఉత్పత్తులను రికార్డ్ చేయడానికి ఫైల్ కంటెంట్ను ఉపయోగిస్తారు.
ఫైల్ సిస్టమ్ కేవలం నిల్వ పరిష్కారం మాత్రమే కాదు. ఇది మానవులు ఆలోచనలను బాహ్యంగా వ్యక్తపరచడానికి ఉపయోగించే అసలైన సాధనం.
ఏజెంట్ ఫ్రేమ్వర్క్ ఫైల్ సిస్టమ్కు ఎందుకు చేరుకుందో ఈ అంతర్దృష్టి వివరిస్తుంది: LLM యొక్క "ఆలోచన" బాహ్యంగా వ్యక్తపరచబడాలి—దాని సందర్భోచిత విండో పరిమితం చేయబడింది మరియు దీర్ఘకాలిక అనుమితి బాహ్య జ్ఞాపకంపై ఆధారపడాలి. ఫైల్ సిస్టమ్ మానవులు కనుగొన్న అత్యంత సాధారణ "బాహ్య జ్ఞాపకం" ఆకృతి.
ఈ కోణం నుండి చూస్తే, Claude Code యొక్క CLAUDE.md ఒక కాన్ఫిగరేషన్ ఫైల్ కాదు. ఇది బాహ్యీకరించబడిన అభిజ్ఞా ఒప్పందం—మానవులు ఉద్దేశాన్ని ఫైల్గా వ్రాస్తారు మరియు ఏజెంట్ ఫైల్ను ఉద్దేశంగా చదువుతుంది. ఫైల్ మానవ మనస్సు మరియు కృత్రిమ మేధస్సు మధ్య ఇంటర్ఫేస్ పొరగా మారింది.
ఇది Unix పైప్లైన్ యొక్క తత్వానికి ఆశ్చర్యకరంగా అనుగుణంగా ఉంది:
వచన ప్రవాహాలను నిర్వహించడానికి ప్రోగ్రామ్లను వ్రాయండి, ఎందుకంటే అది సార్వత్రిక ఇంటర్ఫేస్.## మొదటి సూత్రాలకు తిరిగి వెళ్లండి
గొప్ప సంగ్రహణలు కాలం చెల్లవు, అవి కొత్త రంగాలలో కొత్త ఉదాహరణలను కనుగొంటాయి.
"సమగ్రమైన ఇంటర్ఫేస్ సంక్లిష్టతను తగ్గిస్తుంది" అనేది Unix యొక్క ఆవిష్కరణ కాదు, ఇది సిస్టమ్ డిజైన్ యొక్క శాశ్వతమైన నియమం. Unix దానిని "ఫైల్" అనే పేరుతో అమలు చేసింది. AI Agent దానిని "వర్కింగ్ డైరెక్టరీ" రూపంలో మళ్లీ అమలు చేసింది.
తదుపరి తరం వ్యవస్థలు కూడా అదే ఎంపికను ఎదుర్కొంటాయి: ప్రతిదానికీ ప్రత్యేక ఇంటర్ఫేస్లను రూపొందించాలా లేదా సన్నని, సాధారణమైన, కలపగలిగే సంగ్రహణను కనుగొనాలా?
చరిత్ర నుండి ఏదైనా నేర్చుకుంటే, సమాధానం ఇప్పటికే /dev/null పక్కన వ్రాయబడి ఉంది:
Keep it simple. Make it compose. Everything is a file. (దీన్ని సులభంగా ఉంచండి. దీన్ని కలపగలిగేలా చేయండి. ప్రతిదీ ఒక ఫైల్.)





