Viskas yra failas: dizaino filosofija nuo Unix iki AI agentų
Viskas yra failas: dizaino filosofija nuo Unix iki AI agentų
Originalus autorius Ethan 业成


Atsiliepimai per pusę amžiaus
Dar 1970-ųjų pradžioje Bell Labs, Unix tėvai Ken Thompson ir Dennis Ritchie pirmą kartą pasiūlė drąsų, beveik fanatišką dizaino principą: Everything is a file – viskas yra failas.
Šiandien, praėjus daugiau nei penkiasdešimt metų, AI Agent framework'ai sprogsta. Manus, Claude Code, OpenClaw... Jie yra iš skirtingų komandų, skirtingų technologijų rinkinių, skirtingų verslo tikslų, bet visi vieningai pasirinko tą patį: failų sistemą kaip Agent'o pažinimo pagrindą.
Manus suteikia Agent'ui virtualią mašiną, o užduoties rezultatai išsaugomi kaip failai. Claude Code tiesiogiai skaito ir rašo į vartotojo vietinę failų sistemą, naudodamas CLAUDE.md failą, kad apimtų visas instrukcijas ir kontekstą. OpenClaw ir kiti atvirojo kodo framework'ai taip pat naudoja katalogo struktūrą užduočių suskaidymui ir tarpinėms būsenoms organizuoti.
Kai inžinieriai, atskirti pusės amžiaus, susiduria su visiškai skirtingomis techninėmis problemomis, bet savarankiškai susilieja į tą patį sprendimą – tai nėra atsitiktinumas, tai dizaino filosofijos rezonansas.
Tas Unix sprendimas
Norint suprasti šio dalyko svarbą, pirmiausia reikia grįžti prie to, ką padarė Unix.
Unix failų sistemos dizainas yra visuotinai pripažintas vienu elegantiškiausių dizainų kompiuterių mokslo istorijoje. Jis išsprendė itin sudėtingą problemą: kaip naudoti vieningą, paprastą sąsają valdyti įvairius aparatinės įrangos ir duomenų išteklius.
Iki 1970-ųjų operacinės sistemos veikė taip: norite skaityti diską, kviečiate disko sąsają; norite skaityti juostą, kviečiate juostos sąsają; norite pasiekti terminalą, kviečiate terminalo sąsają. Kiekvienas įrenginys turi savo API, kiekvienas API turi savo semantiką. Jei turite N įrenginių ir M operacijų, sistemos sudėtingumas yra N × M.
Thompson ir Ritchie padarė kažką atrodytų paprasto iki kvailumo:
Paversti viską failais. Naudoti keturis veiksmažodžius open, read, write, close viskam valdyti.
Jo pagrindinė reikšmė yra ta, kad visi ištekliai operacinėje sistemoje – dokumentai, katalogai, standieji diskai, modemai, klaviatūros, spausdintuvai ir net tinklo jungtys bei procesų informacija – gali būti abstrahuoti į failų srautą (Stream of Bytes).
Tai reiškia, kad jums tereikia išmokti vieną API rinkinį – open(), read(), write(), close() – kad galėtumėte valdyti visus kompiuterio išteklius.
Nuo tada sudėtingumas sumažėjo nuo N × M iki 4 × 1. Keturis veiksmažodžiai, vienas abstrakcijos lygmuo.
Šio dalyko genialumas slypi ne žodyje „failas“, o gilesnėje įžvalgoje:
Jums nereikia žinoti, kas slypi už failo deskriptoriaus. Sąsaja yra sutartis.
fd (failo deskriptorius) yra nepermatoma rankena. Jūs jį read(), ir išeina baitų srautas. Nesvarbu, ar šie baitai atkeliauja iš standžiojo disko sektoriaus, tinklo plokštės buferio ar kito proceso standartinės išvesties – jums tai nerūpi, ir jums neturėtų rūpėti.
Tai yra vieningos sąsajos galia: ji leidžia nežinojimui tapti pranašumu.

Ta pati problema, su kuria susiduria Agent'as
Dabar pažvelkime į AI Agent'o padėtį.
Norėdamas atlikti sudėtingą užduotį, Agent'as susiduria su stulbinamai panašia dilema kaip ir operacinė sistema 1970-aisiais:
- Ilgalaikė atmintis: LLM konteksto langas yra nepastovus, o mąstymo grandinė išnyksta kartu su sesija. Tai panašu į atminties atlaisvinimą, kai procesas baigiasi – jums reikia vietos tarpinei būsenai išsaugoti, kitaip kiekvienas pokalbis prasidės nuo nulio.
- Laipsniškas kontekstas: sudėtingų užduočių negalima atlikti vienu žingsniu. Agentas turi palaipsniui kaupti kontekstą per kelis samprotavimo etapus, panašiai kaip Unix procesas perduoda būseną tarp kelių vykdymų skaitydamas ir rašydamas failus. Failų sistema natūraliai suteikia tokį „rašyk šiek tiek, skaityk šiek tiek, vėl rašyk šiek tiek“ laipsniško darbo režimą.
- Vieningas įrankių ir įgūdžių planavimas: Agentas turi iškviesti heterogeninius įrankius (Tools/Skills), tokius kaip paieška, kodo vykdymas, vaizdų generavimas, panašiai kaip Unix turi valdyti heterogeninius įrenginius, tokius kaip diskai, tinklai, spausdintuvai. Jums reikia vieningo abstrakcijos lygmens, kitaip turėsite parašyti naują integracijos logiką kiekvienam naujam įrankiui.
- Kompiuterio naudojimo leidimų ribos: kai Agentas turi galimybę valdyti kompiuterį, „ką jis gali liesti, o ko ne“ tampa gyvybiškai svarbiu klausimu. Unix failų leidimų sistema (rwx) suteikia paruoštą smėlio dėžės modelį – katalogas yra riba, o leidimai yra sutartis.
Keturis poreikiai. Ar tai skamba pažįstamai?
Tai būtent tos problemos, su kuriomis susidūrė operacinės sistemos aštuntajame dešimtmetyje.
Ilgalaikė atmintis – failų sistema natūraliai išsprendžia, rašymas yra nuolatinis. Laipsniškas kontekstas – katalogo struktūra pati savaime kuriama palaipsniui, mkdir, touch, append, kontekstas auga kartu su failu. Vieningas įrankių planavimas – Unix vamzdyno esmė: vieno proceso stdout yra kito proceso stdin, o tarpinė terpė yra baitų srautas. Agento įrankių grandinė taip pat yra tokia pati: ankstesnio žingsnio išvesties failas yra kito žingsnio įvestis. Leidimų ribos – failų sistemos rwx leidimai, chroot smėlio dėžė natūraliai apibrėžia Agento „galimybių ratą“.
Taigi, kai Agento sistemos kūrėjai susiduria su klausimu „kur dėti Agento darbo būseną“, atsakymas beveik nulemtas: į failų sistemą. Nes nėra paprastesnio sprendimo, kuris vienu metu atitiktų šiuos keturis apribojimus.
Kai sistemai reikia „valdyti daugybę heterogeninių išteklių sąveikų“, turite du kelius:
A trasa: sukurkite specialią sąsają kiekvienam ištekliui. N išteklių × M operacijų = NM sąsajų. Tikslus, bet sprogstamasis.
B trasa: raskite pakankamai ploną abstrakcijos lygmenį, kad visi ištekliai dėvėtų tuos pačius drabužius. 4 operacijos × 1 abstrakcijos lygmuo. Grubus, bet kombinuojamas.
Unix pasirinko B. Po daugiau nei penkiasdešimties metų Agento sistema vėl pasirinko B.

Giliau: failas yra mąstymo išraiška
Tačiau jei sustosime tik ties „techninių sprendimų konvergencija“, praleisime esminius dalykus.
Prisiminkite, kaip žmonės patys tvarko sudėtingas užduotis.
Gavę didelį projektą, pirmiausia nepradedate dirbti, o: kuriate aplankus. Projekto šakninis katalogas, potaskų katalogai, informacinės medžiagos katalogai, išvesties katalogai. Katalogo struktūra naudojama chaotiškai užduočiai suskaidyti į valdomus vienetus. Kiekvienam vienetui pavadinti naudojate failo pavadinimą. Failo turinyje įrašote mąstymo procesą ir tarpinius produktus.
Failų sistema yra ne tik saugojimo sprendimas. Tai originalus įrankis žmonių mąstymui išreikšti.
Ši įžvalga paaiškina, kodėl Agento sistema konverguoja į failų sistemą: LLM „mąstymas“ turi būti išreikštas – jo konteksto langas yra ribotas, o ilgalaikis samprotavimas turi priklausyti nuo išorinės atminties. O failų sistema yra pati universaliausia „išorinės atminties“ formatas, kurį žmonija kada nors išrado.
Žvelgiant iš šios perspektyvos, Claude Code CLAUDE.md nėra konfigūracijos failas. Tai išorinė pažinimo sutartis – žmonės rašo ketinimus į failus, o Agentas skaito failus kaip ketinimus. Failas tampa sąsajos sluoksniu tarp žmogaus proto ir dirbtinio intelekto.
Tai stebėtinai atitinka Unix vamzdyno filosofiją:
Rašykite programas, skirtas apdoroti teksto srautus, nes tai yra universali sąsaja.Pakeiskite "programs" į "agents", o "text streams" į "files", ir šis teiginys vis dar bus teisingas 2026 metais.
Grįžimas prie pirmųjų principų
Puikios abstrakcijos nesensta, jos tiesiog randa naujų pavyzdžių naujose srityse.
"Vieninga sąsaja panaikina sudėtingumą" nėra Unix išradimas, tai amžinas sistemos projektavimo dėsnis. Unix atsitiktinai įgyvendino jį su "file" (failas) pavadinimu. AI Agent atsitiktinai vėl įgyvendino jį su "working directory" (darbo katalogas) forma.
Kita karta sistemų vėl susidurs su tuo pačiu pasirinkimu: sukurti specialias sąsajas kiekvienam dalykui, ar rasti ploną, bendrą, sujungiamą abstrakciją?
Jei istorija ko nors moko, atsakymas jau parašytas šalia /dev/null:
Keep it simple. Make it compose. Everything is a file. (Laikykite paprastai. Padarykite, kad susidėtų. Viskas yra failas.)





