Wink Pings

不是Git worktrees,LayerFS是Agent的文件系统

给每个Agent一个完整可写工作区,所有提交并行。157个快照100MB,比Btrfs+zstd小19.9倍。MIT协议。

Camille Roux发了一条推文介绍新项目LayerFS。翻译他的描述:一个文件系统,给每个agent一个完整且可修改的Workspace,放在共享历史之上,不复制基底。每个agent并行commit。157个快照占100MB,比Btrfs+zstd小19.9倍。MIT协议。

GitHub仓库的第一行写着它的定位:Ephemeral Workspaces. Durable Shared History. 临时工作区,持久共享历史。LayerFS是agent下面的基础层:每个agent挂载一棵完整的可写树,在共享的已提交历史上工作,做完commit改动的部分,然后消失。

LayerFS的Workspace是一个FUSE挂载点,不是虚拟机,也不是容器。

核心机制:

  • Store:单个SQLite文件保存所有Branch、Commit和内容对象。没有数据库服务,每个daemon和SDK进程直接打开它。
  • Branch / Commit / Layer:Branch是一条可写的Commit线。发布Branch到main,就加一个Layer。内容分块存储,相同的数据只存一次。
  • Workspace:挂载时绑定整棵已提交的树,不复制。写操作进Workspace自己的overlay,commit时保存,卸载时overlay删除。历史上从不删除。
  • Conflict:两个同时改同一文件的Commit会被拒绝,除非.lww规则声明新编辑覆盖旧编辑。

每个工具调用得到一棵完整的可写树,每次结果变成一个Commit。文件系统本身成为agent的工作记忆。

LayerFS demo:agents在多个Branch上运行工具调用,每次调用成为一个Commit,历史树随之增长

数据

LayerFS的公开基准,数据来自1.0.0,在main分支e5c7aaae05上测得:

项目结果
fs-bench(Cloudflare Computer的十二场景文件系统基准,未改动)5.20s vs 8.88s,快1.71×,12个场景10个更快
dsh-dedup(真实项目157个快照,4.94GB树)100.1MB vs 1,994.6MB,比Btrfs+zstd小19.9×
pjdfstest(POSIX一致性,8,798断言)0意外失败
fsstress(4并发进程,commit后重新挂载比较)3,755/3,755条目一致
fio(数据I/O带宽)随机读/写混合快1.49–2.23×;顺序写0.31×,顺序读0.81×,随机写0.40×

fio的结果说明了它的取舍。LayerFS不是通用文件系统,它优化的是agent的工作负载:大量小文件、快照、并行分支。

和Git worktrees不是一回事

有开发者在评论里问:这不就是Git worktrees吗?

和Git worktrees有相似性,差异在几个地方:

Git worktrees解决“一个仓库多个工作副本”的问题,但每个worktree仍以.git为中心。LayerFS的Workspace包含整棵树,包括.git、忽略的文件、依赖和构建输出。挂载一个新Workspace,依赖已经在了,不需要重新安装。Git worktrees不管这些。

commit时机也不同。Git worktrees等你手动git commit。LayerFS按工具调用自动commit,每次文件读、写、grep或Bash命令,都产生一次commit。agent的每一步都可以回退到这个commit。

LayerFS还允许递归fork:任何commit,任何深度,都可以再fork出Branch。一个项目可以有多个Branch,一个Branch可以有多个agent。

怎么运行

目前通过LayerFS × DSH跑,这是dsh-layerfs插件,给DeepSeek Harness用的。支持Linux、macOS(通过DSH)和Windows(通过WSL2)。agent在DSH会话中fork Branch,在Sandbox里测试,merge并发布到main。Work和History两个标签页实时显示每个agent的Branch。

局限

官方说得很直接:Store运行在Disposable模式,没有崩溃或断电持久性。用它管理agent的工作和历史,不要作为不可重建数据的唯一副本。顺序I/O带宽不行。POSIX有取舍:没有FIFO、socket、设备节点、set-id bit,不单独维护atime/ctime。

项目状态

LayerFS 1.1.0已发布,MIT协议。JavaScript API拆成@layerfs/agent、@layerfs/backend、@layerfs/runtime。代码在 github.com/Ephemeral-AI-Lab/layerfs。

发布时间: 2026-10-27 12:11