Spacedrive:基于 Rust 虚拟分布式文件系统的跨平台开源文件管理器
Spacedrive 是一款开源跨平台文件管理器与跨设备数据平台,由 Rust 编写的虚拟分布式文件系统(VDFS)驱动,提供 macOS、Windows、Linux、iOS、Android 客户端。它把本地磁盘、外接硬盘、NAS、云存储与 Gmail、Apple Notes、Chrome 书签等外部数据源统一索引,支持基于 Iroh/QUIC 的 P2P 同步、BLAKE3 内容身份、九种视图、事务化文件操作,并为 AI Agent 提供权限化、可审计的访问层。许可证为 FSL-1.1-ALv2,两年后自动转为 Apache 2.0。
社区作者 · zZz
它解决什么问题
项目定位
Spacedrive 自称不是 Finder 或 Explorer 的替代品,而是位于操作系统文件管理器之上的一层:跨平台、跨设备、感知云存储、面向自动化。底层文件交互仍交给操作系统,Spacedrive 在其上增加内容身份、边车文件、衍生数据、丰富元数据、同步与跨设备感知能力。
核心能力
- 内容身份(Content identity):每个文件获得 BLAKE3 内容哈希,同一文件在两台设备上产生相同哈希,可在所有机器间追踪冗余与去重。
- 跨设备(Cross-device):在一个界面查看全部设备上的文件;断开连接的设备,其文件仍保留在索引中并标记为离线。
- P2P 同步:设备通过 Iroh/QUIC 直连,无服务器、无云、无单点故障;同步的是元数据,文件本身留在原处。
- 云卷(Cloud volumes):可将 S3、Google Drive、Dropbox、OneDrive、Azure、GCS 作为一等卷与本地存储并列索引。
- 九种视图:grid、list、columns、media、size、recents、search、knowledge、splat;QuickPreview 支持视频、音频、代码、文档、3D 与图片。
- 本地优先(Local-first):全部在本机运行,除非用户选择在自己的设备之间同步,否则数据不离开设备。
相比系统文件管理器的差异
- 跨一切门户:从单一界面搜索与浏览本地磁盘、外接盘、NAS、云存储与归档数据源。
- 文件操作平面:内容身份、sidecar、衍生工件、丰富元数据、同步与跨设备感知内建于核心模型。
- 可嵌入可共享:可作为桌面应用、无头服务器、托管文件服务运行,也可将界面与 API 嵌入其他产品。
- 为 AI 而设计:索引与分析流水线提前准备数据,而不是把原始 shell 访问权交给 Agent。
- 更安全的访问模型:AI 与自动化经由结构化 API、权限与处理层访问,而不是直接操作文件。
数据归档(Data Archival)
Spacedrive 通过基于脚本的适配器索引外部数据源:Gmail、Apple Notes、Chrome 书签、Obsidian、Slack、GitHub、日历事件、联系人。每个数据源都会成为与文件并列的可搜索仓库。适配器本质上是一个文件夹,内含 adapter.toml 清单与任意语言编写的同步脚本——只要能读 stdin 并按行输出即可工作。
已随附的适配器包括:Gmail、Apple Notes、Chrome Bookmarks、Chrome History、Safari History、Obsidian、OpenCode、Slack、macOS Contacts、macOS Calendar、GitHub。
Spacebot 集成
Spacedrive 可与开源 AI Agent 运行时 Spacebot 集成。Spacebot 作为可选独立进程运行:Spacedrive 提供数据、权限与执行层,Spacebot 提供智能。
- 每个 Spacebot 实例与一个 Spacedrive 节点配对,作为其归属设备;该节点负责认证 Agent、维护设备图、解析权限并把操作转发到对等设备。
- 库中每台设备都能通过配对节点经 P2P(Iroh/QUIC)访问 Spacebot,无需直接网络访问;一个 Agent 运行时服务整个设备群。
- Spacebot 派生 worker 后,worker 可指向库内任意设备,文件读取、shell 命令与操作经 Spacedrive 代理到目标设备。
- 每个操作都经过权限系统:可访问哪些设备、哪些路径可读或可写、允许哪些操作、哪些需要人工确认;由配对节点解析最终策略后再转发,全设备与云统一安全模型与审计面。
文件系统智能(File System Intelligence)
由三层叠加构成:
- 文件智能:OCR、转录、抽取元数据、缩略图、预览、分类与 sidecar 等衍生数据。
- 目录智能:附着在文件夹与子树上下的上下文知识(如“进行中的项目”“休眠归档”)。
- 访问智能:跨设备与云生效的权限与策略,让 Agent 走结构化访问而非原始 shell 命令。
Agent 在 Spacedrive 中导航时可获得文件列表、子树上下文、有效权限与摘要;用户可以说明自己的组织方式,Agent 可添加带署名的笔记,作业可根据结构与活动生成摘要。智能附着在文件系统上,而不是埋在临时会话记忆中。
安全筛查(Safety Screening)
启用后,每条记录在可被搜索之前都会经过安全流水线:
- Prompt Guard 2:本地分类器在邮件、消息与文档进入索引前检测提示注入。
- 信任层级:自著内容(个人笔记)采用均衡筛查,外部内容(如收件箱)采用严格筛查。
- 隔离系统:被标记的记录从 AI Agent 查询中排除,可在桌面应用中复核。
- 内容围栏:搜索结果携带信任元数据,让 Agent 区分安全与不可信内容。
架构
四项核心原则:
实现为单一 Rust crate,采用 CQRS/DDD 架构;每个操作(文件复制、标签创建、搜索查询)都是注册的 action 或 query,具备类型安全输入输出,并自动生成前端使用的 TypeScript 类型。
- 虚拟分布式文件系统(VDFS):文件与文件夹成为带丰富元数据的一等对象,独立于物理位置;每个文件拥有跨设备通用的地址(SdPath)。
- 内容身份系统:自适应哈希(BLAKE3,对大文件采用策略性采样)为每份内容生成唯一指纹,支持去重、冗余追踪与基于内容的操作。
- 事务化操作:每个文件操作执行前可预览,查看可节省空间、冲突与预计耗时,再批准或取消;操作成为可持久化的作业,能跨网络中断与设备重启存活。
- 无领导同步(Leaderless Sync):无中心协调者的点对点同步;设备专属数据使用状态复制,共享元数据使用 HLC 排序日志与确定性冲突解决。
技术栈
语言 Rust;异步运行时 Tokio;数据库 SQLite(SeaORM + sqlx);P2P Iroh(QUIC、打洞、本地发现);内容哈希 BLAKE3;向量搜索 LanceDB + FastEmbed;云存储 OpenDAL;密码学 Ed25519、X25519、ChaCha20-Poly1305、AES-GCM;媒体 FFmpeg、libheif、Pdfium、Whisper;桌面 Tauri 2;移动端 React Native + Expo;前端 React 19、Vite、TanStack Query、Tailwind CSS v4;设计系统 SpaceUI;类型生成 Specta。
仓库结构
spacedrive/ 下包含 core/(Rust 引擎,CQRS/DDD)、apps/(tauri 桌面、mobile React Native、cli 与守护进程、server 无头服务器、web 浏览器客户端)、packages/(interface 共享 React UI、ts-client 自动生成 TypeScript 客户端、ui 组件库、assets 图标与图片)、crates/(独立 Rust crate,如 ffmpeg、crypto)、adapters/(脚本化数据源适配器)、schemas/(TOML 数据类型 schema)。
隐私与安全
可选的云集成仅用于备份与远程访问,并非必需;云服务以标准 P2P 设备身份运行未修改的 Spacedrive 核心,不具特殊权限。
- 端到端加密:所有 P2P 流量经 QUIC/TLS 加密。
- 静态加密:库可选在磁盘上加密(SQLCipher)。
- 无遥测:零跟踪与零分析。
- 可自托管:可运行自己的中继服务器。
- 数据主权:用户控制数据存放位置。
参与贡献
可加入 Discord 与开发者及社区交流;仓库提供 Contributing Guide、Adapter Guide(编写数据源适配器);SpaceUI 为共享设计系统,需与 Spacedrive 一起克隆以便开发 UI。
适用对象
需要在多设备与多云之间统一索引、搜索与整理文件,并希望以权限化方式让 AI Agent 安全访问本地数据的个人用户、知识工作者与小团队;以及希望嵌入其界面或 API、或编写数据源适配器的开发者。
配图说明
配图 1 为 Spacedrive 项目 logo(来源:仓库 .github/logo.png),用于识别项目标识。
— 本文由 AI 根据公开来源辅助整理,命令、版本与许可证请在使用前到原始页面复核。
安装 / 开始使用
以下步骤来自项目 README 的 “Getting Started” 部分,按原文顺序执行。
一、准备环境
需先安装:
- Rust 1.81+(版本要求以来源为准)
Bun 1.3+- just(命令运行器)
Python 3.9+(用于适配器开发/运行)
二、克隆仓库
git clone https://github.com/spacedriveapp/spacedrive
cd spacedrive三、初始化
just setup # 等价于 bun install + 安装原生依赖 + 生成 cargo 配置四、首次运行(桌面端)
just dev-desktop # 启动桌面应用,并自动启动 daemon(守护进程)五、运行测试
just test # 运行整个 workspace 的测试六、其他运行形态
仓库除桌面端外还提供 apps/cli(CLI 与守护进程)、apps/server(无头服务器)、apps/web(浏览器客户端)、apps/mobile(React Native,iOS/Android),具体构建与启动命令来源未给出,标记为待核验。
七、编写数据源适配器(可选)
适配器是一个文件夹,内含 adapter.toml 清单和一个任意语言编写的同步脚本;脚本只要能读取 stdin 并按行输出即可工作。仓库随附 Gmail、Apple Notes、Chrome Bookmarks、Chrome History、Safari History、Obsidian、OpenCode、Slack、macOS Contacts、macOS Calendar、GitHub 等适配器示例,详细步骤见仓库 Adapter Guide。
八、常见问题
来源正文未提供故障排查或常见报错说明,标记为待核验。已知的环境提示仅为:适配器相关工作需要 Python 3.9+;未安装 just、Bun 或 Rust 版本低于 1.81+ 会导致上述命令无法执行。