OpenCode 在 FreeBSD/ZFS 上 stat 崩溃:BigInt 溢出 bug 已在上游修复

asomers · ghdev · 2026-10-21

开发者报告 OpenCode 在 FreeBSD + ZFS 环境下文件系统功能大面积失效:/cd 命令和文件选择器报错,GET /api/fs/list、/find、/read 返回 HTTP 500,POST /api/session/{id}/move 甚至对真实存在的目录报"Directory does not exist"。

根因:OpenCode 的 Node 文件系统层依赖 @effect/platform-node-shared,其 stat 调用 fs.stat(path, { bigint: true }) 后把 BigInt 类型的 dev 字段转成 Number。FreeBSD 对 ZFS 数据集报告 64 位 stdev(如 8599779474788709465),超出安全整数范围直接抛 RangeError,导致几乎所有路径的 stat 失败。

修复状态:Effect 侧已在 @effect/platform-node-shared 4.0.5 修复(保留 dev 为 BigInt),但 OpenCode 在 workspace catalog、v2.0.32、v2.1.1 及 dev 分支仍锁定 4.0.1。复现环境:FreeBSD 15.1-RELEASE、ZFS 2.4.2、opencode 2.0.32(内嵌 Bun v1.4.2)。

原文链接 →

「编程与Agent」频道最新

更多「编程与Agent」频道 AI 资讯 →