Kaikki on tiedosto: Suunnittelufilosofia Unixista AI Agenteihin
Kaikki on tiedosto: Suunnittelufilosofia Unixista AI Agenteihin
Alkuperäinen Ethan 业成


Puolen vuosisadan kaiku
Jo 1970-luvun alussa Bell Labsissa Unixin isät Ken Thompson ja Dennis Ritchie esittivät ensimmäistä kertaa rohkean, jopa pakkomielteisen suunnitteluperiaatteen: Everything is a file – Kaikki on tiedosto.
Yli viisikymmentä vuotta myöhemmin AI Agent -kehysten määrä on räjähtänyt. Manus, Claude Code, OpenClaw... Ne tulevat eri tiimeiltä, eri teknologioilla ja eri liiketoiminnallisilla tavoitteilla, mutta ovat kaikki tehneet saman valinnan: tiedostojärjestelmä on Agentin kognitiivinen runko.
Manus antaa Agentille virtuaalikoneen, ja tehtävän tulokset tallennetaan tiedostoiksi. Claude Code lukee ja kirjoittaa suoraan käyttäjän paikalliseen tiedostojärjestelmään ja käyttää CLAUDE.md-tiedostoa kaikkien ohjeiden ja kontekstin tallentamiseen. OpenClaw ja muut avoimen lähdekoodin kehykset järjestävät tehtävien pilkkomisen ja välitilat samalla tavalla hakemistorakenteen avulla.
Kun puolen vuosisadan päässä toisistaan olevat insinöörit kohtaavat täysin erilaisia teknisiä ongelmia, mutta päätyvät itsenäisesti samaan ratkaisuun – tämä ei ole sattumaa, vaan suunnittelufilosofian resonanssi.
Unixin päätös
Ymmärtääksemme tämän asian merkityksen, meidän on palattava siihen, mitä Unix teki.
Unix-tiedostojärjestelmän suunnittelua pidetään yhtenä tietojenkäsittelytieteen historian elegantimmista suunnitelmista. Se ratkaisi erittäin monimutkaisen ongelman: kuinka hallita monipuolisia laitteistoresursseja ja dataresursseja yhtenäisellä ja yksinkertaisella käyttöliittymällä.
Ennen 1970-lukua käyttöjärjestelmät toimivat näin: jos halusit lukea levyltä, käytit levyrajapintaa; jos halusit lukea magneettinauhasta, käytit nauharajapintaa; jos halusit käyttää päätettä, käytit pääterajapintaa. Jokaisella laitteella oli oma API, ja jokaisella API:lla oli oma semantiikkansa. Jos sinulla oli N laitetta ja M operaatiota, järjestelmän monimutkaisuus oli N × M.
Thompson ja Ritchie tekivät jotain näennäisesti yksinkertaista ja jopa typerää:
Muutettiin kaikki tiedostoiksi. Käytettiin neljää verbiä open, read, write ja close kaiken operoimiseen.
Sen ydinsisältö on: kaikki käyttöjärjestelmän resurssit – dokumentit, hakemistot, kiintolevyt, modeemit, näppäimistöt, tulostimet, jopa verkkoyhteydet ja prosessitiedot – voidaan abstrahoida tiedostovirraksi (Stream of Bytes).
Tämä tarkoittaa, että sinun tarvitsee oppia vain yksi API – open(), read(), write(), close() – voidaksesi käyttää kaikkia tietokoneen resursseja.
Tästä lähtien monimutkaisuus romahti N × M:stä 4 × 1:een. Neljä verbiä, yksi abstraktiotaso.
Tämän asian nerokkuus ei ole sanassa "tiedosto", vaan syvemmässä oivalluksessa:
Sinun ei tarvitse tietää, mitä tiedostokuvaajan takana on. Rajapinta on sopimus.
Fd (tiedostokuvaaja) on läpinäkymätön kahva. Kun suoritat sille read(), tavuvirta tulee ulos. Onko nämä tavut peräisin kiintolevyn sektorista, verkkokortin puskurista vai toisen prosessin standarditulosteesta – et välitä, eikä sinun pitäisi välittää.
Tämä on yhtenäisen rajapinnan voima: se tekee tietämättömyydestä edun.

Agentin kohtaama sama kysymys
Palataan nyt AI Agentin tilanteeseen.
Agentin on suoritettava monimutkaisia tehtäviä, ja se kohtaa hämmästyttävän samanlaisen ongelman kuin käyttöjärjestelmä 1970-luvulla:
- Pysyvä muisti: LLM:n konteksti-ikkuna on haihtuva, ja ajatusketju katoaa session mukana. Aivan kuten prosessin päätyttyä muisti vapautetaan – tarvitset paikan, johon tallentaa välitilan pysyvästi, muuten jokainen keskustelu alkaa alusta.
- Progressiivinen konteksti: Monimutkaisia tehtäviä ei voida suorittaa yhdellä kertaa. Agentin on asteittain kerättävä kontekstia useissa päättelykerroissa, aivan kuten Unix-prosessi välittää tilaa useiden suoritusten välillä lukemalla ja kirjoittamalla tiedostoja. Tiedostojärjestelmä tarjoaa luonnostaan tällaisen "kirjoita vähän, lue vähän, kirjoita lisää" -työskentelytavan.
- Työkalujen ja taitojen yhtenäinen hallinta: Agentin on kutsuttava heterogeenisiä työkaluja (Tools/Skills), kuten haku, koodin suoritus ja kuvien generointi, aivan kuten Unixin on hallittava heterogeenisiä laitteita, kuten levyjä, verkkoja ja tulostimia. Tarvitset yhtenäisen abstraktion, muuten jokaisen uuden työkalun integrointiin on kirjoitettava uusi logiikka.
- Computer Use -käytön käyttöoikeusrajat: Kun Agentilla on kyky käyttää tietokonetta, "mitä se voi koskea ja mitä ei" on elintärkeä kysymys. Unixin tiedosto-oikeusjärjestelmä (rwx) tarjoaa juuri sopivan hiekkalaatikkomallin – hakemisto on raja, käyttöoikeus on sopimus.
Neljä vaatimusta. Kuulostaako tutulta?
Tämä on juuri se ongelma, jonka käyttöjärjestelmät kohtasivat 1970-luvulla.
Pysyvä muisti – tiedostojärjestelmä ratkaisee luonnostaan, kirjoittaminen on pysyvää. Progressiivinen konteksti – hakemistorakenne itsessään on inkrementaalinen, mkdir, touch, append, konteksti kasvaa tiedostojen mukana. Työkalujen yhtenäinen hallinta – Unix-putkien ydin: yhden prosessin stdout on toisen prosessin stdin, väliaine on tavuvirta. Agentin työkaluketju on sama: edellisen vaiheen tulostiedosto on seuraavan vaiheen syöte. Käyttöoikeusrajat – tiedostojärjestelmän rwx-oikeudet, chroot-hiekkalaatikko, määrittävät luonnostaan Agentille "kykykehän".
Joten kun Agent-kehyksen suunnittelijat kohtaavat kysymyksen "mihin Agentin työtila sijoitetaan", vastaus on melkein ennalta määrätty: tiedostojärjestelmään. Koska ei ole olemassa yksinkertaisempaa ratkaisua, joka täyttäisi samanaikaisesti nämä neljä rajoitusta.
Kun järjestelmän on "hallittava suurta määrää heterogeenisten resurssien vuorovaikutusta", sinulla on kaksi vaihtoehtoa:
Vaihtoehto A: Suunnittele jokaiselle resurssille oma rajapinta. N resurssia × M toimintoa = NM rajapintaa. Tarkka, mutta räjähtävä.
Vaihtoehto B: Löydä riittävän ohut abstraktiotaso, joka pukee kaikki resurssit samaan asuun. 4 toimintoa × 1 abstraktiotaso. Karkea, mutta yhdisteltävissä.
Unix valitsi B:n. Yli viisikymmentä vuotta myöhemmin Agent-kehys valitsee jälleen B:n.

Syvemmälle: Tiedosto on ajattelun ulkoistaminen
Mutta jos pysymme vain "teknisen ratkaisun lähentymisessä", menetämme olennaisemman asian.
Muistele, miten ihmiset itse käsittelevät monimutkaisia tehtäviä.
Kun saat suuren projektin, ensimmäinen asia ei ole aloittaa työtä, vaan: luoda kansioita. Projektin juurihakemisto, alitehtäväkansiot, viitemateriaalihakemisto, tulostehakemisto. Käytät hakemistorakennetta hajottaaksesi kaoottisen tehtävän hallittaviin yksiköihin. Nimeät jokaisen yksikön tiedostonimellä. Kirjaat tiedoston sisältöön ajatteluprosessin ja välituotteet.
Tiedostojärjestelmä ei ole vain tallennusratkaisu. Se on ihmisen ajattelun ulkoistamisen alkuperäinen työkalu.
Tämä oivallus selittää, miksi Agent-kehykset lähentyvät tiedostojärjestelmään: LLM:n "ajattelu" on ulkoistettava – sen konteksti-ikkuna on rajallinen, ja pitkän aikavälin päättely on riippuvainen ulkoisesta muistista. Ja tiedostojärjestelmä on juuri se yleisin "ulkoinen muisti" -muoto, jonka ihminen on keksinyt.
Tästä näkökulmasta Claude Coden CLAUDE.md ei ole määritystiedosto. Se on ulkoistettu kognitiivinen sopimus – ihminen kirjoittaa aikomuksen tiedostoon, Agent lukee tiedoston aikomukseksi. Tiedostosta tulee ihmisen mielen ja tekoälyn välinen rajapintakerros.
Tämä on hämmästyttävän yhdenmukainen Unix-putkien filosofian kanssa:
Kirjoita ohjelmia käsittelemään tekstivirtoja, koska se on yleinen rajapinta.## Paluu ensimmäisiin periaatteisiin
Suuret abstraktiot eivät vanhene, ne löytävät vain uusia ilmentymiä uusilla alueilla.
"Yhtenäinen rajapinta poistaa monimutkaisuuden" ei ole Unix:n keksintö, vaan se on järjestelmäsuunnittelun ikuinen laki. Unix sattui toteuttamaan sen nimellä "tiedosto". AI Agent sattui toteuttamaan sen uudelleen muodossa "työhakemisto".
Seuraavan sukupolven järjestelmät kohtaavat myös saman valinnan: suunnitellaanko jokaiselle asialle oma rajapinta, vai löydetäänkö ohut, yleinen ja yhdisteltävä abstraktio?
Jos historia on opettanut jotain, vastaus on jo kirjoitettu /dev/null:n viereen:
Keep it simple. Make it compose. Everything is a file. (Pidä se yksinkertaisena. Tee siitä yhdisteltävä. Kaikki on tiedosto.)





