日光之下無新事:一切皆文件

新聞
HongKong
20
06:31 PM · Jan 16 ,2026

Unix 革命建立在一個核心原則之上:一切皆文件。如今,隨着 AI 智能體(Agents)的興起,大語言模型(LLMs)得以接觸半個世紀以來基於文件的那些深奧知識。結果如何?一切正再次迴歸於文件。

作者:Glauber Costa
原文:turso.tech/blog/nothing-new-under-the-sun

轉自:https://weibo.com/2194035935/QnmFpbeBp(微博:蟻工廠)
----------------------------------
我第一次接觸電腦是在 11 歲那年。那時我有一台運行着 MS-DOS 5.2 和 Windows 3.1 的舊 PC,主要用來玩遊戲。不過,讓如今身為專業人士的我(30 年後)感到欣慰的是,在那個年代光是玩遊戲就需要了解 x86 的內存分段機制。

那是一段有趣的時光,但我甚至不把那視為引我走向編程的“入門毒藥”。真正讓我上癮的是後來遇到的東西:Unix。直到高中一年級我才發現了 Linux。上了大學後,我的興趣真正被點燃了。很快,我就全身心地投入到了 Unix 的歷史中,並且會找任何藉口去把玩那台停放在材料系裏的 SPARC Solaris 工作站。

如果沒有 Unix,我們就不會有今天的成就。如果你未曾經歷過那個舊時代,可能很容易低估 Unix 的重要性。除了 C 語言這個“副作用”之外,Unix 還給了世界兩樣東西:

  • “先發布(Ship it)”的理念:Unix 引入了 man 手冊(man pages)來記錄工具的侷限性,而不是為了追求完美而推遲發佈。
  • “一切皆文件”的抽象,以及用管道(pipes)將工具粘合在一起的概念。

文件的力量

當我把無聊的朋友都換成 Unix 狂熱信徒後(我喜歡這樣講這個故事——其實真相是他們都不理我了,因為我總是喋喋不休地談論 Unix),我不斷聽到這句話:“sed awk cut grep is all you need(你只需要 sed、awk、cut 和 grep)”。這是一個美麗的抽象概念。半個世紀後的今天,它聽起來顯而易見(就像大多數偉大的想法一樣),但在當時,這絕非顯而易見。

每個程序都能理解文件。它們可以寫入文件,也可以從文件讀取。這意味着突然之間,你在整個系統中擁有了一個統一的接口。這是一個所有人共同遵守的契約,確保每一個應用程序都能消費其他任何應用程序的結果。

這個簡單的抽象——文件,讓另一個強大的 Unix 原則得以實現:“做一件事,並把它做好(Do one thing, and one thing well)。” 每個工具不必構建成一個龐大的應用程序,而是可以高度專業化。它們之所以能做到這一點,是因為它們都在通過文件輸入和輸出工作結果。

這引發了可能性的組合爆炸,而這一切都通過文件契約發生。這裏寫幾個字節,那裏讀幾個字節,再用管道將它們粘合在一起。

人們通常理解的文件是存儲設備中的東西,比如 PDF 或電子表格文檔。但文件之所以如此強大,是因為它們是一個非常簡單的抽象:一組可以被讀取和寫入的字節集合。很快,Unix 世界裏到處都是虛擬文件。最終,在 Unix 世界裏,甚至網絡連接也可以被表示為文件。

超越 Unix

Linux 將這一概念推向了極致。Linux 有一個 /proc 虛擬文件系統,包含關於內核的各種信息,而你讀取這些信息的方式是……讀取虛擬文件。(proc 文件系統在最初的 Unix 中就已存在,但正如其名,它主要包含關於運行進程的簡單信息)。

還有一個 /sys 虛擬文件系統,你可以從中獲取關於設備驅動程序和硬件系統的各種信息。而你與它交互的方式,你猜對了,還是讀寫文件。

我們在這一基礎之上構建了我們的世界。後來,我們在其他層面上(比如 API)看到了類似的契約,但文件依然無處不在。即使在基於 API 的系統中,文件仍然被用於配置系統、存儲代碼、提供資源等。

複用性至關重要

快進到 AI 時代,有一件事變得清晰起來:大語言模型(LLM)雖然不錯、整潔且可愛,但光靠它們帶你去不了任何地方。真正解鎖 AI 潛力的關鍵是智能體(Agents)——這不過是“在大語言模型使用工具外層套了個 for 循環”的花哨説法。

事實證明,LLM 非常、非常擅長使用那些伴隨 Unix 存在了半個世紀的工具。這些工具通過文件抽象完美地組合在一起。在 Unix 的半個世紀裏,我們已經為每一個能想到的工作積累了相應的工具。由於智能體本質上就是文本流的推動者,它們非常擅長使用這些工具。

當然,我們可以重建一切。我們可以給智能體提供“智能體原生”的專用工具。但這將意味着把我們在這個漫長過程中積累的所有資本投入虛空……僅僅為了換取微不足道的收益。我們在電源插頭的形狀上沒有這樣做,SQL 也依然佔據統治地位(儘管每個開發人員似乎都認為自己知道如何做得更好)。

現代、更豐富的文件系統

相反,智能體將會擁抱文件系統。這已經在發生了,像 Claude Code 這樣的工具正嚴重依賴它,而且這種趨勢還會加劇。

然而,這並不意味着文件系統將保持不變。行業中目前有兩個特定趨勢正以文件系統的形式施加壓力。

第一是 TypeScript 和基於瀏覽器的環境正作為智能體的部署載體而流行。 瀏覽器並沒有一種簡單的方法可以接入標準文件系統,而基於 TypeScript 的智能體通常部署在臨時環境(ephemeral environments)中,在那裏面文件系統並非理所當然的存在。這是因為這些平台演變為提供類似函數的環境,通過網絡連接數據庫來滿足數據需求。

第二是沙盒(Sandbox)作為隔離智能體工作負載的首選方式正在興起。 沙盒將虛擬化環境提升到了一個新的水平。環境需要在毫秒級上線,因為智能體會生成子智能體去探索解決方案空間。將傳統文件系統附加到這些沙盒上,對於它們所需的運行速度來説實在是太慢了。

有兩個試圖解決這個問題的有趣工具值得一提。第一個是 Vercel 的 just-bash。該工具為用 TypeScript 編寫的智能體提供了一個模擬的類 bash 環境,允許智能體像在普通 Unix shell 中一樣使用工具,無論它們在哪裏執行:

import { Bash } from "just-bash";

const env = new Bash();
await env.exec('echo "Hello" > greeting.txt');
const result = await env.exec("cat greeting.txt");
console.log(result.stdout); // "Hello\n"
console.log(result.exitCode); // 0
console.log(result.env); // Final environment after execution

第二個是我們自己的 AgentFS,這是一個將整個文件系統映射到 SQLite 文件的工具。文件系統可以在智能體之間隔離(更改會被捕獲到文件中,而不損害原始文件系統)。

這確保了:a) 智能體只能訪問它應該訪問的上下文部分;b) 它可以自由地操作資產,因為它知道更改是非破壞性的。

SQLite 文件可以被沙盒複製或部分複製,並在智能體執行時即時可用。這支持了快照(snapshotting)(即智能體可以保存自己的狀態,執行一步操作,如果犯錯則回滾到之前的文件),以及在智能體組之間共享狀態。

結論

周而復始,循環往復。當我們周圍的世界發生劇變時,有一件事不會改變:我們在前人的基礎上構建,若要從頭重建則後果自負。Unix 革命給了我們文件抽象,半個世紀以來,我們一直建立在它之上。

對於 AI 智能體而言,問題將是:我們要利用過去 50 年編寫的所有工具的巨大潛力,還是重建一切?

答案正變得顯而易見。

user avatar
0 位用戶收藏了這個故事!
收藏

發佈 評論

Some HTML is okay.