Her Şey Bir Dosyadır: Unix'ten AI Agent'a Tasarım Felsefesi
Her Şey Bir Dosyadır: Unix'ten AI Agent'a Tasarım Felsefesi
Orijinal: Ethan 业成


Yarım Asrı Aşan Yankı
1970'lerin başlarında Bell Labs'ta, Unix'in babaları Ken Thompson ve Dennis Ritchie ilk kez cesur ve neredeyse saplantılı bir tasarım ilkesi ortaya attılar: Her şey bir dosyadır (Everything is a file).
Elli yıldan fazla bir süre sonra, AI Agent çerçeveleri patlama yaşıyor. Manus, Claude Code, OpenClaw... Bunlar farklı ekiplerden, farklı teknoloji yığınlarından, farklı ticari hedeflerden geliyor, ancak hepsi aynı seçimi yapıyor: Dosya sistemini Agent'ın bilişsel iskeleti olarak kullanmak.
Manus, Agent'a bir sanal makine veriyor ve görev çıktıları dosya olarak diske kaydediliyor. Claude Code doğrudan kullanıcının yerel dosya sisteminde okuma ve yazma yapıyor ve tüm talimatları ve bağlamı bir CLAUDE.md dosyasında taşıyor. OpenClaw gibi açık kaynaklı çerçeveler de görev ayrıştırmasını ve ara durumları bir dizin yapısı içinde düzenliyor.
Yarım asır arayla mühendisler, tamamen farklı teknik sorunlarla karşı karşıya kaldıklarında, bağımsız olarak aynı çözüme yöneliyorlar - bu bir tesadüf değil, bu bir tasarım felsefesinin yankısı.
Unix'in O Kararı
Bu kararın önemini anlamak için, önce Unix'in ne yaptığına dönmek gerekiyor.
Unix dosya sistemi tasarımı, bilgisayar biliminin en zarif tasarımlarından biri olarak kabul edilir. Son derece karmaşık bir sorunu çözdü: Çok çeşitli donanım kaynaklarını ve veri kaynaklarını yönetmek için birleşik, basit bir arayüz nasıl kullanılır?
1970'lerden önce, işletim sistemleri şöyle çalışıyordu: Diski okumak için disk arayüzünü çağırırsınız; teybi okumak için teyp arayüzünü çağırırsınız; terminale erişmek için terminal arayüzünü çağırırsınız. Her cihazın kendi API'si vardı, her API'nin kendi anlamı vardı. Eğer N türde cihazınız ve M türde işleminiz varsa, sistem karmaşıklığı N × M olurdu.
Thompson ve Ritchie, aptalca görünecek kadar basit bir şey yaptılar:
Her şeyi dosyaya dönüştürdüler. Her şeyi open, read, write, close dört fiiliyle yönetin.
Bunun temel anlamı şudur: İşletim sistemindeki tüm kaynaklar - belgeler, dizinler, sabit sürücüler, modemler, klavyeler, yazıcılar, hatta ağ bağlantıları ve işlem bilgileri - bir dosya akışı (Stream of Bytes) olarak soyutlanabilir.
Bu, bilgisayarın tüm kaynaklarını yönetmek için yalnızca bir API seti - open(), read(), write(), close() - öğrenmeniz gerektiği anlamına gelir.
Böylece karmaşıklık N × M'den 4 × 1'e çöker. Dört fiil, bir soyutlama katmanı.
Bu işin dehası, "dosya" isminde değil, daha derin bir içgörüde yatıyor:
Dosya tanımlayıcısının (file descriptor) arkasında ne olduğunu bilmenize gerek yok. Arayüz bir sözleşmedir.
Bir fd (dosya tanımlayıcısı) opak bir tutamaktır. Ona read() uyguladığınızda, bayt akışı çıkar. Bu baytların sabit disk sektörlerinden mi, ağ kartı arabelleklerinden mi yoksa başka bir işlemin standart çıktısından mı geldiği - umursamıyorsunuz, umursamamalısınız da.
Birleşik arayüzün gücü budur: Cehaleti bir avantaja dönüştürür.

Agent'ın Karşılaştığı Aynı Soru
Şimdi AI Agent'ın durumuna geri dönelim.
Bir Agent karmaşık bir görevi tamamlamak için, 1970'lerdeki işletim sistemine şaşırtıcı derecede benzer bir zorlukla karşı karşıyadır:
- Kalıcı Bellek: LLM'lerin bağlam penceresi geçicidir ve düşünce zinciri oturumla birlikte kaybolur. Tıpkı bir işlem sonlandırıldığında belleğin geri kazanılması gibi - ara durumu kalıcı hale getirebileceğiniz bir yere ihtiyacınız var, aksi takdirde her konuşma sıfırdan başlar.
- Aşamalı Bağlam: Karmaşık görevler tek adımda tamamlanamaz. Agent'ın, Unix işlemlerinin dosyaları okuyup yazarak birden çok yürütme arasında durumu aktarması gibi, çok turlu çıkarımda bağlamı kademeli olarak biriktirmesi gerekir. Dosya sistemi doğal olarak bu "biraz yaz, biraz oku, sonra biraz daha yaz" aşamalı çalışma modunu sağlar.
- Araç ve Becerilerin Birleşik Zamanlaması: Agent'ın arama, kod yürütme, resim oluşturma gibi heterojen araçları (Araçlar/Beceriler) çağırması gerekir, tıpkı Unix'in diskleri, ağları, yazıcıları vb. heterojen cihazları yönetmesi gibi. Tek tip bir soyutlamaya ihtiyacınız var, aksi takdirde her yeni araç için yeni bir entegrasyon mantığı yazmanız gerekir.
- Bilgisayar Kullanımının İzin Sınırları: Agent'ın bir bilgisayarı çalıştırma yeteneği olduğunda, "neye dokunabileceği, neye dokunamayacağı" hayati bir sorun haline gelir. Unix'in dosya izin sistemi (rwx) tam olarak kullanıma hazır bir sanal alan modeli sağlar - dizinler sınırdır, izinler sözleşmedir.
Dört gereksinim. Tanıdık geliyor mu?
Bu tam olarak işletim sisteminin 1970'lerde karşılaştığı sorundu.
Kalıcı bellek - dosya sistemi doğal olarak çözer, yazma kalıcıdır. Aşamalı bağlam - dizin yapısı zaten artımlı olarak oluşturulmuştur, mkdir, touch, append, bağlam dosya ile birlikte büyür. Araçların birleşik zamanlaması - Unix borularının özü: bir işlemin stdout'u başka bir işlemin stdin'idir, aradaki ortam bayt akışıdır. Agent'ın araç zinciri de böyledir: önceki adımın çıktı dosyası bir sonraki adımın girdisidir. İzin sınırları - dosya sisteminin rwx izinleri, chroot sanal alanı, Agent için doğal olarak bir "yetenek çemberi" tanımlar.
Bu nedenle, bir Agent çerçevesinin tasarımcıları "Agent'ın çalışma durumu nereye yerleştirilmeli" sorusuyla karşılaştığında, cevap neredeyse önceden belirlenmiştir: dosya sistemine yerleştirin. Çünkü bu dört kısıtlamayı aynı anda karşılayabilecek daha basit bir çözüm yok.
Sistem "çok sayıda heterojen kaynağın etkileşimini yönetmesi" gerektiğinde, iki yolunuz vardır:
Yol A: Her kaynak için özel bir arayüz tasarlayın. N kaynak × M işlem = NM arayüz. Kesin ama patlayıcı.
Yol B: Tüm kaynakların aynı kıyafeti giymesini sağlayacak kadar ince bir soyutlama bulun. 4 işlem × 1 soyutlama katmanı. Kaba ama birleştirilebilir.
Unix B'yi seçti. Elli yıldan fazla bir süre sonra, Agent çerçevesi tekrar B'yi seçti.
Daha Derin Bir Katman: Dosya, Düşüncenin Dışavurumudur
Ancak sadece "teknik çözümün yakınsaması"nda kalırsak, daha özünde olanı kaçırırız.
İnsanların karmaşık görevleri nasıl ele aldığını bir düşünün.
Büyük bir proje aldığınızda, ilk yaptığınız şey çalışmaya başlamak değil, şudur: klasörler oluşturmak. Proje kök dizini, alt görev dizinleri, referans materyal dizinleri, çıktı dizinleri. Kaotik görevi yönetilebilir birimlere ayırmak için dizin yapısını kullanırsınız. Her birime ad vermek için dosya adlarını kullanırsınız. Düşünce sürecini ve ara ürünleri kaydetmek için dosya içeriğini kullanırsınız.
Dosya sistemi sadece bir depolama çözümü değildir. İnsanların düşünceyi dışa vurmak için kullandığı orijinal araçtır.
Bu içgörü, Agent çerçevesinin neden dosya sistemine yakınsadığını açıklıyor: LLM'nin "düşüncesi" dışa vurulmalıdır - bağlam penceresi sınırlıdır ve uzun vadeli çıkarım harici belleğe dayanmalıdır. Ve dosya sistemi, insanların icat ettiği en evrensel "harici bellek" biçimidir.
Bu açıdan bakıldığında, Claude Code'un CLAUDE.md'si bir yapılandırma dosyası değildir. Bu, dışa vurulmuş bir bilişsel sözleşmedir - insanlar niyeti bir dosyaya yazar ve Agent dosyayı niyet olarak okur. Dosya, insan zihni ve yapay zeka arasında bir arayüz katmanı haline gelir.
Bu, Unix borularının felsefesiyle şaşırtıcı derecede tutarlıdır:
Metin akışlarını işlemek için programlar yazın, çünkü bu evrensel bir arayüzdür.## İlk İlkelere Dönüş
Büyük soyutlamalar eskimez, sadece yeni alanlarda yeni örnekler bulurlar.
"Birleşik arayüz karmaşıklığı çözer" Unix'in icadı değil, sistem tasarımının ebedi yasasıdır. Unix, bunu tesadüfen "dosya" adı altında gerçekleştirdi. AI Agent, bunu tesadüfen "çalışma dizini" biçiminde tekrar gerçekleştirdi.
Yeni nesil sistemler de aynı seçimle tekrar karşı karşıya kalacak: Her şey için özel arayüzler tasarlamak mı, yoksa ince, genel, birleştirilebilir bir soyutlama bulmak mı?
Tarihin bir dersi varsa, cevap zaten /dev/null'un yanında yazılıdır:
Basit tut. Birleştirilebilir yap. Her şey bir dosyadır.





