第85期 | 所谓文件,即非文件
前两期讲了翻译表,讲了走路。这一期收束第八章,问一个更底下的问题:文件这层皮底下,到底是什么?答案可能有点出乎意料——不一定是文件。
一、文件这层皮,底下不一定是文件
Unix 1974 年的论文把规矩定下来之后¹,普通文件、目录、设备,都进了同一套名字、同一组操作:打开、读、写、关。设备明明不是文件,却扮成文件住在 /dev 底下。虚拟文件系统把这套扮装做成了制度:应用程序只认 open、read、write、close 这一组动作,内核按文件种类,把调用转交给各自不同的操作表²。同一扇门,门后换人。
这层皮能装的东西,比“存在盘上的字节”多得多。ls -l /proc/cpuinfo,大小是 0;cat 它,却能倒出一整份处理器信息——那份内容不是从盘上读出来的,是你读的那一刻内核现算现给的。往 /dev/null 里写什么都成功,读它立刻就是文件尾——底下是一口深井,写进去的东西不存。管道更直接:数据从一头流向另一头,从不落地。所谓“文件”,原来是一纸契约,不是一块存储:只要答应按打开、读、写、关这套规矩应答,底下是磁盘、是内存、是一次现算、是一口深井,都可以。
但这层皮也有接缝。套接字就扮不全:Unix 域套接字在文件系统里有个路径名,却不能像普通文件那样 cat、读、写,得走另一套套接字接口。ioctl 是另一道接缝:统一操作不够用时,设备专用的命令就从这道侧门漏出来。mmap 也是:绕开读写,直接把内存映射出来用。统一,是有代价的统一。
代价藏在两处。一处是意义被压平了:照片、表格里的一行、传感器的实时读数,经过读写接口,全都长成一样的字节流。读的人得自己把意义再拼回去,文件本身不替你记它是什么。另一处是定义权:读一次返回什么、会不会阻塞、会不会现算,全由实现操作表的那一方说了算。接口决定东西以什么样子被看见,这句话在第八章里说了三期,这一期是最直白的一次——接口不是中性的传声筒,接口就是权力本身。
一张皮,四种底下:磁盘文件、现算文件、管道流、深井。程序绘制概念示意图。
二、如果文件只是接口,智能体的接口该长什么样
2026 年 10 月 26 日,Interact Software 发布 Interact MCP:一个 MCP 服务器,把内网平台的 700 个能力接进 Claude、ChatGPT、Microsoft 365 Copilot、Gemini Enterprise 等助手,员工按自己已有的权限搜索、阅读、创建、编辑与执行³。这正是 VFS 当年的那一步,换了个时代重演:给万物一扇同样的门。通稿里最值得留下的不是 700 这个数字,而是一条边界:能力清单可以膨胀,权限边界不能跟着膨胀——助手能调的上限,是员工本来就能做的上限。
MCP 的工具,就是智能体时代的操作表:一种调用规矩,底下各不相同的实现。但接缝也跟着来了:智能体看见的是工具的名字和描述,不是工具底下那东西本身。名字会漂移,描述会含糊,权限就必须跟着接口一起走,而不是事后在外面再拦一道。第八章的教训在这里正好合上:路径解析那一级级的哨卡告诉我们,谁能走到东西面前,比东西本身叫什么更重要。
再往外推一格,字节流这层皮,对 AI 时代的东西可能太薄了。张量有形状,记录有字段,传感器读数有新鲜度——这些经过读写接口一压,全成了没有形状的字节。旧抽象与新硬件的张力在这里又露了一次面:线性字节流是给顺序指令流准备的,而今天的算力主体是向量阵列。原生 AI 操作系统的接口,大概率要比文件多带几样东西:类型、形状、出处、新鲜度。读一次,拿回来的不只是一串字节,还有“这东西从哪来、多新鲜、凭什么信它”。而像 /proc 那样“读时现算”的路子,恰好是现成的原型:智能体要的“上周那份报价”,不必先存成一份文件再指路,读的那一刻现算出来、附上出处,反而更新鲜、更诚实。
三、亲手摸一摸,文件这层皮
手边任何一台 Linux 机器,先看一个没有大小的文件:
ls -l /proc/cpuinfo
cat /proc/cpuinfo | head -5
大小那一栏是 0,内容却实实在在。再看一口深井:
echo test > /dev/null
echo $?
写成功了,退出码是 0,东西却没去任何地方。再看一眼你自己的 shell 现在开着哪些东西:
ls -l /proc/self/fd
每一个打开的文件、管道、套接字,都在这里扮成了一个条目。接口这层皮,薄到连“打开的东西”本身都能扮成文件。
落到常见的四类部署,同一层皮能套出四种底下。本地模型服务上,权重是盘上的文件,推理时的上下文是内存里的现算物,接口一样,底下完全不同;边缘设备上,摄像头就是 /dev 底下扮成文件的设备,读它就是取流,不必先存再读;视频 AI 平台里,推理结果可以扮成现算文件,读的时候才生成;企业私有智能中心里,每家企业的文档、记录、权限挂在同一棵树的不同枝上,接口一样,底下各不相同——而智能体只能走到被允许的那几枝。皮是统一的,底下是各异的,边界长在皮里面。
觉 然 小 注
所谓文件,即非文件,是名文件⁴。接口是假名,假名立得住,系统才装得下万物;但别把假名当成真物——读到的,永远是接口答应给你的那一面。
引 用 与 出 处
- [1] Ritchie, D. M., Thompson, K. The UNIX Time-Sharing System. Communications of the ACM, 1974. https://dl.acm.org/doi/10.1145/361011.361061
- [2] Linux 内核文档. Documentation/filesystems/vfs.txt. https://mjmwired.net/kernel/Documentation/filesystems/vfs.txt
- [3] Interact Software. Interact brings 700 intranet capabilities to enterprise AI assistants with Interact MCP. GlobeNewswire, 2026-10-26. https://www.globenewswire.com/news-release/2026/10/26/3388061/0/en/interact-brings-700-intranet-capabilities-to-enterprise-ai-assistants-with-interact-mcp.html
- [4] 鸠摩罗什译. 《金刚般若波罗蜜经》. (思想化用)
· · ·