Alt er en fil: Designfilosofien fra Unix til AI Agent

2/16/2026
7 min read
# Alt er en fil: Designfilosofien fra Unix til AI Agent Original Ethan Yecheng ![cover_image](https://tipclaw.com/uploads/1771216954301-jo63wbw.jpg)![Image 2](https://tipclaw.com/uploads/1771216976853-xrf0b7x.png) ## Et ekko på tværs af et halvt århundrede Allerede i de tidlige 1970'ere fremsatte Ken Thompson og Dennis Ritchie, Unix' fædre, i Bell Labs et dristigt, næsten fanatisk designprincip: **Everything is a file – Alt er en fil**. Mere end halvtreds år senere oplever vi en eksplosion af AI Agent-frameworks. Manus, Claude Code, OpenClaw... De kommer fra forskellige teams, forskellige teknologiske stakke og forskellige kommercielle mål, men de har alle uafhængigt truffet det samme valg: at bruge filsystemet som agentens kognitive skelet. Manus giver agenten en virtuel maskine, hvor opgavernes output gemmes som filer. Claude Code læser og skriver direkte på brugerens lokale filsystem og bruger en CLAUDE.md-fil til at indeholde alle instruktioner og kontekst. OpenClaw og andre open source-frameworks organiserer også opgavedekomponering og mellemtilstande i en mappestruktur. Når ingeniører, der er adskilt af et halvt århundrede, står over for helt forskellige tekniske problemer, men uafhængigt konvergerer til den samme løsning – er det ikke et tilfælde, det er en resonans af designfilosofi. ## Unix' beslutning For at forstå betydningen af dette, er vi nødt til at vende tilbage til, hvad Unix gjorde. Unix-filsystemets design er bredt anerkendt som et af de mest elegante designs i datalogiens historie. Det løste et ekstremt komplekst problem: hvordan man administrerer forskellige hardware- og dataressourcer med en ensartet og enkel grænseflade. Før 1970'erne fungerede operativsystemer på denne måde: Hvis du ville læse en disk, kaldte du diskgrænsefladen; hvis du ville læse et magnetbånd, kaldte du magnetbåndsgrænsefladen; hvis du ville få adgang til en terminal, kaldte du terminalgrænsefladen. Hver enhed havde sin egen API, og hver API havde sin egen semantik. Hvis du havde N enheder og M operationer, ville systemkompleksiteten være N × M. Thompson og Ritchie gjorde noget, der virkede simpelt til det punkt, hvor det var dumt: **Gør alt til en fil. Brug de fire verber open, read, write, close til at manipulere alt.** Dets kernebetydning er: Alle ressourcer i operativsystemet – dokumenter, mapper, harddiske, modemmer, tastaturer, printere, endda netværksforbindelser og procesinformation – kan abstraheres til en filstrøm (Stream of Bytes). Dette betyder, at du kun behøver at lære et sæt API'er – open(), read(), write(), close() – for at manipulere alle computerens ressourcer. Fra da af kollapsede kompleksiteten fra N × M til 4 × 1. Fire verber, et lag af abstraktion. Det geniale ved dette ligger ikke i substantivet "fil", men i en dybere indsigt: Du behøver ikke at vide, hvad der er bag filbeskrivelsen. Grænsefladen er kontrakten. En fd (filbeskrivelse) er et uigennemsigtigt håndtag. Du read() den, og en bytestrøm kommer ud. Hvorvidt disse bytes kommer fra harddisksektorer, netværkskortbuffere eller en anden process' standardoutput – er du ligeglad, og det burde du heller ikke være. Dette er kraften i en ensartet grænseflade: Den gør uvidenhed til en fordel. ![Image 3](https://tipclaw.com/uploads/1771216980153-81ptjfz.png) ## Den samme udfordring for Agent Lad os nu se på AI Agentens situation. En agent, der skal udføre komplekse opgaver, står over for et forbløffende lignende dilemma som operativsystemer i 1970'erne: - **Persistent hukommelse**: LLM'ers kontekstvindue er flygtigt, og tankekæden forsvinder med sessionen. Ligesom hukommelsen genvindes, når en proces afsluttes – du har brug for et sted at persistentgøre mellemtilstanden, ellers starter hver samtale fra bunden. - **Gradvis kontekst**: Komplekse opgaver kan ikke fuldføres i ét trin. Agenten skal gradvist akkumulere kontekst i flere runder af ræsonnement, ligesom en Unix-proces overfører tilstand mellem flere udførelser ved at læse og skrive filer. Filsystemet giver naturligt denne "skriv lidt, læs lidt, skriv lidt mere" gradvise arbejdsmetode. - **Unified Scheduling af værktøjer og færdigheder**: Agenten skal kalde heterogene værktøjer (Tools/Skills) såsom søgning, kodeudførelse og billedgenerering, ligesom Unix skal administrere heterogene enheder såsom diske, netværk og printere. Du har brug for et lag af unified abstraktion, ellers skal du skrive et nyt sæt integrationslogik for hvert nyt værktøj, du tilslutter. - **Computer Use Permissions Boundary**: Når en agent har evnen til at betjene en computer, bliver spørgsmålet om "hvad den kan røre ved, og hvad den ikke kan røre ved" et spørgsmål om liv og død. Unix' filtilladelsessystem (rwx) giver netop en færdig sandkassemode – biblioteket er grænsen, og tilladelsen er kontrakten. Fire krav. Lyder det bekendt? Dette er netop de problemer, operativsystemer stod over for i 1970'erne. Persistent hukommelse – filsystemet løser det naturligt, skrivning er persistent. Gradvis kontekst – biblioteksstrukturen er i sig selv bygget inkrementelt, mkdir, touch, append, konteksten vokser med filen. Unified scheduling af værktøjer – essensen af Unix-pipelines: den ene proces' stdout er den anden proces' stdin, og det mellemliggende medium er bytestrømmen. Det samme gælder for agentens værktøjskæde: outputfilen fra det forrige trin er input til det næste trin. Tilladelsesgrænser – filsystemets rwx-tilladelser, chroot-sandkasse, definerer naturligt agentens "evnecirkel". Så når designeren af Agent-frameworket står over for spørgsmålet om "hvor skal agentens arbejdstilstand placeres", er svaret næsten forudbestemt: i filsystemet. Fordi der ikke er nogen enklere løsning, der kan opfylde disse fire begrænsninger på samme tid. Image 4 Når systemet skal "administrere interaktionen mellem et stort antal heterogene ressourcer", har du to veje: Rute A: Design dedikerede grænseflader til hver ressource. N ressourcer × M operationer = NM grænseflader. Præcis, men eksplosiv. Rute B: Find et lag af abstraktion, der er tyndt nok til, at alle ressourcer kan bære den samme dragt. 4 operationer × 1 lag af abstraktion. Grov, men kombinerbar. Unix valgte B. Mere end halvtreds år senere valgte Agent-frameworket igen B. Image 5 ## Et dybere lag: Filer er eksternalisering af tænkning Men hvis vi kun stopper ved "konvergens af tekniske løsninger", går vi glip af noget mere essentielt. Tænk på, hvordan mennesker selv håndterer komplekse opgaver. Du modtager et stort projekt, og det første du gør er ikke at begynde at arbejde, men: opret mapper. Projektets rodmappe, underopgavemapper, referencematerialemapper, outputmapper. Du bruger biblioteksstrukturen til at nedbryde den kaotiske opgave i overskuelige enheder. Du bruger filnavne til at navngive hver enhed. Du bruger filindhold til at registrere tankeprocessen og mellemprodukter. Filsystemet er ikke kun en lagringsløsning. Det er det originale værktøj til at eksternalisere menneskelig tænkning. Denne indsigt forklarer, hvorfor Agent-frameworket konvergerer til filsystemet: LLM's "tænkning" skal eksternaliseres – dets kontekstvindue er begrænset, og langtrækkende ræsonnement skal afhænge af ekstern hukommelse. Og filsystemet er netop det mest almindelige "eksterne hukommelses"format, som mennesker har opfundet. Fra dette perspektiv er Claude Codes CLAUDE.md ikke en konfigurationsfil. Det er en eksternaliseret kognitiv kontrakt – mennesker skriver intentioner i en fil, og agenten læser filen som en intention. Filen er blevet et interface lag mellem det menneskelige sind og kunstig intelligens. Image 6 Dette er slående konsistent med Unix-pipelinens filosofi: > Skriv programmer til at håndtere tekststrømme, fordi det er en universel grænseflade.At erstatte "programmer" med "agenter" og "tekststrømme" med "filer", vil stadig være sandt i 2026. ## Tilbage til første principper Store abstraktioner forældes ikke; de finder blot nye instanser i nye domæner. "Enhedlige grænseflader opløser kompleksitet" er ikke en Unix-opfindelse; det er en evig lov inden for systemdesign. Unix implementerede det tilfældigvis med navnet "filer". AI Agent implementerede det tilfældigvis igen i form af en "arbejdsmappe". Næste generations systemer vil også stå over for det samme valg: at designe dedikerede grænseflader til hver ting eller at finde et tyndt, generelt, komponerbart abstraktionslag? Hvis historien har lært os noget, er svaret allerede skrevet ved siden af /dev/null: > Keep it simple. Make it compose. Everything is a file. (Hold det simpelt. Gør det komponerbart. Alt er en fil.)
Published in Technology

You Might Also Like