17611538698
info@21cto.com

NodeJS提议内置虚拟文件系统,引发关于AI生成贡献的争论

图片

导读:Node.js团队将要创建新模型,称为VFS——虚拟文件系统。

Node.js 技术指导委员会成员兼 Platformatic 联合创始人 Matteo Collina 提议通过一个新模块,为 Node.js 核心添加一个一流的虚拟文件系统 (VFS) 。该提案已作为PR #61478提交至 Node.js的GitHub 代码库,新增了约 19,000 行代码,分布在 100 个文件中,引发了社区的广泛讨论,讨论的焦点不仅在于该功能本身,还在于它主要使用Claude Code构建。

Node.js 一直以来都以 I/O 为核心,字节流、缓冲区、Socket和文件构成了运行时的骨干。然而,诸如运行 AI 生成的代码、在不触及磁盘的情况下执行测试、打包单可执行应用程序 (SEA) 以及在多租户平台中对文件访问进行沙箱隔离等常见工作流程,历来都需要一些变通方案。

本文中提出的模块node:vfs旨在通过提供一个内存、fs兼容 Node.js 的 API 来解决这四个问题,该 API 包含挂载点、覆盖模式、符号链接和模块加载钩子。

除了核心提案之外,Platformatic 还发布了@platformatic/vfs一个用户级 npm 包,目前支持 Node.js 22 及以上版本。该包镜像了核心提案的 API,node:vfs发布时只需一行导入更改即可迁移:替换'@platformatic/vfs''node:vfs'。Vercel 已独立地将相同的 API 提取到自己的node-vfs-polyfill包中,而 LangChain 也已通过 VFS 实现代理沙箱@langchain/node-vfs

这项功能已经获得了开发者的支持,他们认为这项功能优势明显。在Hacker News上,一位评论者这样指出:

Yarn、pnpm 和 webpack 都提供了相应的解决方案。很高兴看到这逐渐成为一种标准。我的一个项目就因为文件系统而严重受限。运行 13000 个测试需要 40 分钟,而 Node 可以直接使用的虚拟文件系统可以将运行时间缩短到 3 分钟。

Hashnode上,开发者 Jake Morrison 重点介绍了 AI 代理的使用案例:

我之前一直把生成的代码写到临时文件里,然后再清理,总觉得这样做不太对劲。直接把代码放在内存里导入要合理得多。

然而,这个 PR 却引发了一场更广泛的辩论。

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 代码库中做出卓越贡献的维护者们。”

Node的类似产品,Bun 和 Deno 目前尚没有提供等效的内置虚拟文件系统 (VFS)。

不过,Deno 已创建issue #32783来跟踪node:vfs兼容性添加进度。Bun 在原始文件系统吞吐量基准测试中领先,但尚未公布类似计划。Node.js 技术指导委员会 (TSC) 预计将对 AI 辅助贡献的相关政策进行投票,这将决定该 PR 的命运。用户空间软件包和迁移路径的文档可在Platformatic 博客@platformatic/vfs GitHub 仓库中找到。

作者:万能的大雄

评论

我要赞赏作者

请扫描二维码,使用微信支付哦。

分享到微信