Node.js 拟内置虚拟文件系统,AI 生成代码引争议
核心提案
Matteo Collina(Node.js 技术指导委员会成员、Platformatic 联合创始人)提议在 Node.js 核心中新增 node:vfs 模块,正式引入原生级虚拟文件系统(VFS)。
提案规模:
- PR #61478
- 新增约 19000 行代码
- 涉及 100 个文件
- 在社区引发广泛讨论
四大应用场景
Node.js 的核心始终围绕 I/O,流、缓冲区、套接字和文件共同构成了运行时骨干。然而,以下常见工作流程以往都只能依靠变通方案实现:
- 运行 AI 生成代码:将代码保留在内存中并直接导入
- 无磁盘测试:大幅提升测试速度
- 打包单文件可执行应用:简化部署流程
- 多租户平台沙箱隔离:对文件访问进行安全隔离
node:vfs 模块通过提供基于内存且兼容 fs 的 API,以及支持挂载点、覆盖模式、符号链接和模块加载钩子,一次性解决这四个问题。
性能优势
在 Hacker News 上,一位评论者指出:
Yarn、pnpm、webpack 都有各自对应的解决方案。很高兴这项能力即将成为标准。我有个项目曾受文件系统限制严重:原本执行 13000 个测试需要 40 分钟,若 Node 原生支持虚拟文件系统,耗时可缩短至 3 分钟。
开发者支持
在 Hashnode 上,开发者 Jake Morrison 强调了 AI 智能体的使用场景:
我一直将生成的代码写入临时文件,然后再清理,这种方式总觉得不够妥当。将代码保留在内存中并直接导入,会合理得多。
AI 生成代码引发争议
Collina 坦言,该实现是在 2025 年圣诞节期间借助 AI 辅助完成的,他表示"AI 处理了繁琐的部分",自己则专注于架构、API 设计和代码审核。
反对声音
Node.js 核心资深贡献者、io.js 分支发起人 Fedor Indutny 在 GitHub 上发起了一份请愿书,呼吁禁止在 Node.js 核心中加入 AI 生成的代码。
请愿理由:
- 该 PR 的代码体量大
- 让人对开发者原产地证书(DCO)以及审核人员能否充分核验机器生成代码产生顾虑
Indutny 在 Reddit 上写道:
我始终认为,Node.js 这类核心基础设施并不适合做出这类改变。
支持声音
也有开发者提出反驳,Hacker News 上的一些评论者表示:
"如果要选择信任谁去探索这些方向,我会相信他,还有这几年在 Node.js 仓库中表现出色的维护者们。"
生态跟进
Platformatic:已在 npm 上发布用户态包 @platformatic/vfs,适用于 Node.js 22 及以上版本。待 node:vfs 正式推出时,只需修改一行导入语句即可完成迁移:将 '@platformatic/vfs' 替换为 'node:vfs'。
Vercel:已将这套 API 封装到自己的包中。
LangChain:已通过该包将 VFS 用于智能体沙箱化。
竞争态势:
- Bun 和 Deno 均未提供同类的内置 VFS
- Deno 已创建 issue #32783 用于跟进添加
node:vfs兼容性的工作 - Bun(在原始文件系统吞吐量方面领先基准测试)尚未宣布类似的计划
后续发展
Node.js TSC 计划就 AI 辅助代码贡献的管理规则开展投票,这将决定该 PR 的命运。
用户态包及迁移路径的文档可在:
- Platformatic 博客
- @platformatic/vfs GitHub 仓库