2026 年上半年,如果你观察 Coding Agent 的架构演进,会发现一个共同趋势:它们不再让模型「直接读写宿主机文件」,而是在中间加了一层虚拟文件系统(Virtual Filesystem,VFS)。从 Cursor 的 sandbox 工具、Claude Code 的 workspace 抽象,到 OpenHands、E2B、Modal 的远程沙箱——Agent 与磁盘之间多了一道可编排的接口。
这不是「换个挂载点」那么简单。VFS 同时承担了安全隔离、Token 节流、状态快照、可审计变更四项职责。本文从工程视角拆解:为什么 VFS 在 2026 年成为 Agent 标配、它与 Memory 记忆层如何分工、主流实现怎么选,以及 iOS / 跨平台开发者如何把 VFS 沙箱与云端 Mac 构建环境接起来。
* 基于常见 monorepo 实验与 Agent 厂商公开最佳实践,实际比例因仓库结构而异。
什么是 Agent 虚拟文件系统
传统 IDE 插件让 LLM 直接 read_file("/Users/..."),路径即权限。Agent VFS 则在模型与存储之间插入受控 API 层,常见操作包括:
ls/tree:列出目录,返回摘要而非全文grep/glob:按模式检索,只把命中行注入上下文read:按行范围读取,支持分页与 Token 预算write/patch:结构化 diff,而非整文件覆盖snapshot/rollback:任务级检查点
对模型来说,它「看见」的仍像文件树;对平台来说,每一次 I/O 都可计费、限流、审计、拒绝越权路径。这就是 VFS 与「把仓库 clone 到容器里直接 bash」的本质区别。
为什么 2026 年突然流行
三个压力在同一时间点叠加,把 VFS 从「可选优化」推成「默认架构」。
安全:Agent 不能碰整台机器
当 Agent 能执行 shell、改配置、装依赖时,一次 prompt 注入就可能等价于 RCE。2025–2026 年多起「Agent 删库」「误改 ~/.ssh」事件后,主流产品默认启用沙箱:
- 路径白名单:只允许项目根与
/tmp子目录 - 网络 egress 控制:npm/pip 走代理,禁止随意 curl 内网
- 凭证隔离:API Key 不进 VFS,由网关注入
VFS 是实施这些策略的统一拦截点——比在每次工具实现里散落 if path.startswith 可维护得多。
Token:上下文不是免费硬盘
我们在 AI 编程月成本里算过:把 10 万行 monorepo 整仓塞进 prompt,单次调用就可能烧掉数美元。VFS 的核心价值是把「拥有代码」变成「按需检索代码」:
- Agent 先
grep "class FooBar"定位文件 - 再
read path:42-80只读相关函数 - 改完后
patch只回传 diff,不把整文件再塞一遍
这与 DeepSeek / Claude Code / Cursor 选型里「谁更擅长长上下文」并不矛盾——能塞进去 ≠ 应该塞进去。VFS 是产品层的 Token 经济学。
快照:可回滚、可复现
Agent 连续改十个文件后编译失败,用户期望「一键回到五分钟前」。VFS 在每次 write 前打快照(或基于 overlay FS / git stash),让任务状态可版本化。这对:
- 多人共享的 Cloud Agent 会话
- CI 里跑无人值守修复 PR 的 bot
- 需要向合规部门出示「模型改了哪些文件」的企业
都至关重要。Memory 层记住「用户偏好」;VFS 快照记住「这次任务改了什么」——两者时间尺度不同。
谁在用什么方案
| 产品 / 框架 | VFS 形态 | 特点 |
|---|---|---|
| Cursor | 本地 sandbox + 工具级 read/grep | 与 IDE 深度集成;.cursorignore 即路径策略 |
| Claude Code | Workspace + 权限确认 | 强调人机协同;危险操作需用户批准 |
| OpenHands | Docker 沙箱 + 仓库挂载 | 开源可自托管;适合自定义 Agent 流水线 |
| E2B / Modal | 远程 VM 级 VFS | 强隔离;冷启动与成本需权衡 |
| LangGraph / 自研 | Store 抽象(可接 S3、git) | 灵活;要自己实现 grep 性能与快照 |
共同点是:模型永远不直接持有 open() syscall,而是通过 schema 化的 tool call 间接访问。这也是 Claude Code Skills 能安全分发「可执行能力包」的前提——Skill 声明允许的路径与工具,VFS 负责 enforcement。
VFS 与 Memory 层怎么分工
很多人把 VFS 和 Mem0 / Zep / TencentDB 等 Memory 方案混为一谈。一张表理清边界:
| 维度 | VFS(虚拟文件系统) | Memory(记忆层) |
|---|---|---|
| 时间范围 | 单次任务 / 单次会话的工作区 | 跨会话、跨天的用户与项目事实 |
| 存什么 | 代码树、diff、构建日志缓冲 | 偏好、约束、历史决策、失败原因摘要 |
| 典型 API | read / grep / patch |
add_memory / search |
| 失效模式 | 快照回滚丢改动 | 错误记忆需时序失效(Zep 擅长) |
成熟架构往往是三层:VFS 管「现在正在改什么」→ Memory 管「这个用户一贯要什么」→ 真实 macOS 环境管「能不能编过、能不能上架」。缺任何一层都会在规模化时暴露问题。
主流实现对照
选型速查
- 个人本地开发 → IDE 内置 VFS(Cursor / Claude Code)通常够用
- 团队共享 Agent → OpenHands + 自托管 Docker,或 E2B 按会话计费
- 要强合规审计 → VFS 网关落日志 + Memory 用 Zep 双时序
- 超长工具输出(
xcodebuild日志)→ VFS 侧 ring buffer,摘要写入 Memory
自研 VFS 时,优先保证 grep 在 10 万文件下 <2s 与 patch 原子性——Agent 体验比「支持多少云存储后端」更敏感。很多团队用 git worktree 做底层,VFS 只做权限与 Token 包装,是务实的 MVP 路径。
iOS / 跨平台开发者落地路径
Flutter / React Native 团队常见误区:以为 VFS 沙箱里跑通 flutter build 就等于能上架。实际上:
- VFS 沙箱:Agent 改 Dart/Swift 源码、跑单元测试、生成 PR 描述
- Memory:记住「这台测试机的 UDID」「只用 TestFlight」「上次签名失败因为 Profile 过期」
- 云端 Mac:在真实 macOS 上跑
xcodebuild、Archive、上传 App Store Connect
我们在 RN / Flutter iOS 真机调试与上架一文里强调过:Apple 工具链绑定硬件与系统。VFS 解决「Agent 安全改代码」;Zilmac 云端 Mac解决「改完的代码能在 Apple 环境里编译通过」。
推荐流水线:本地或云端 VFS 沙箱完成 feature branch → Memory 记录构建约束 → webhook 触发云端 Mac CI → 失败日志摘要回写 Memory,供下次 Agent 会话读取。
选型建议与反模式
推荐做法
- 默认 deny-all 路径策略,按目录放行
- 工具输出超过 N KB 自动 spill 到 VFS 文件,上下文只留摘要 + 路径
- 每次任务结束把「未合并的关键 diff」同步到 Memory 或 issue
- 构建与签名与 VFS 物理分离,避免 Agent 碰 Provisioning Profile
反模式
- ❌ 把 VFS 当数据库塞 JSON 业务数据——用 Memory 或正规 DB
- ❌ 允许 Agent 无限制
readnode_modules——Token 黑洞 - ❌ 在宿主机路径上做 VFS 薄封装却不做快照——回滚无能为力
- ❌ 指望 VFS 替代 Xcode——签名与真机调试仍需 macOS
常见问题
虚拟文件系统和普通 Docker 挂载有什么区别?
Docker 挂载仍是真实路径语义;Agent VFS 在路径之上增加 Agent 专用 API,可做 Token 预算、变更快照与权限白名单。很多实现把 VFS 跑在容器里,但 VFS 是 Agent 与存储之间的抽象层,不是容器本身。
有了 Memory 层还需要 VFS 吗?
需要,职责不同。Memory 管跨会话偏好与任务轨迹;VFS 管单次任务内的代码树读写与工具输出缓冲。详见上文分工表。
iOS 开发者用 Agent VFS 能替代 Xcode 工程目录吗?
不能替代构建与签名环境,但能大幅改善 Agent 改代码的安全性。务实组合:VFS 沙箱 + 云端 Mac 构建。
自建 Agent 如何选型 VFS 实现?
原型用 git worktree;生产按隔离需求选 OpenHands、E2B 或自研网关。重点看 grep 性能、快照与多租户隔离。
VFS 管住改代码,云端 Mac 管住能编译
虚拟文件系统让 Agent 安全地读写信箱里的 Swift / Flutter 改动;TestFlight 签名、真机调试与 xcodebuild 仍要在 macOS 上跑。Zilmac 可与任意 VFS + Memory 栈组合——Agent 在沙箱里改,构建在稳定的 Apple Silicon 云端 Mac 上执行。
无需实体 Mac,即可运行完整 Apple 工具链。 — 查看云 Mac 方案