命令列工具
spieglt/FlyingCarpet avatar
spieglt/FlyingCarpet

Flying Carpet:不依赖互联网的跨平台近距离传檔案

跨平台AirDrop。透過 ad hoc WiFi 在 Android、iOS、Linux、macOS 和 Windows 之間傳輸檔案。無需網路基礎設施,只需兩台近距離配備 WiFi 晶片(以及可選的藍牙)的設備即可。

5,322 個 Star256 個 ForkRustGPL-3.0
GitHub

秒懂

它是什麼?
分析热点模式、共享網路模式、Noise 加密握手和各平台限制,判断它是否适合你的设备组合。
適合誰用?
Flying Carpet 适合两台设备在近距离、没有互联网要求,且愿意先统一版本的个人或小组。它不适合需要后台同步、跨版本互传或把 Apple 设备热点创建交给应用自动完成的场景。
可以商用嗎?
可以,但有條件。GPL-3.0 是 copyleft 授權:如果你散布包含它的軟體,就必須以同一授權公開該軟體的原始碼。只在內部執行、不對外散布,則不會觸發這項義務。
還在維護嗎?
有在維護。儲存庫最近一次提交在 5 天前。
用什麼語言寫的?
主要是 Rust(依據 GitHub 的語言統計)。

以上回答依據專案的 GitHub 資料(最近同步於 2026年9月15日)與我們的分析,不構成法律意見。

開源專案深度解析

專案定位與核心模式 · spieglt-flyingcarpet-deep-analysis

Flying Carpet 是一个用 Rust 编写的跨平台檔案传输工具,目标是在 Android、iOS、Linux、macOS 和 Windows 之间发送和接收檔案。它有两种工作模式:一是热点模式,由一台设备创建临时 WiFi 热点供另一台设备加入;二是共享網路模式,两台设备接入同一个现有的 WiFi 或有线網路。两种模式都不需要互联网或蜂窝網路连接,只需要两台设备具备 WiFi 或以太网芯片(可选支持蓝牙),且在使用热点模式时保持近距离。倉庫描述将其称为"跨平台 AirDrop",但 README 本身没有使用这个比喻,而是强调无需網路基础设施。

版本 10 的破坏性变更 · spieglt-flyingcarpet-deep-analysis

README 明确警告,版本 10 是一次破坏性更新:執行版本 10 的设备无法與版本 9 或更早版本传输檔案,使用者会收到版本不匹配的提示。因此,所有参與传输的设备都必须更新到版本 10。版本 10 新增了共享網路模式,适用于不想创建热点、而是使用现有 WiFi 或有线網路的场景。共享網路模式下,接收设备生成一次性密码並显示二维码,发送设备输入密码或扫描二维码后,设备会在網路中發現对方並开始传输。该模式不使用蓝牙,也不需要知道对方的操作系统。

热点模式的操作與限制 · spieglt-flyingcarpet-deep-analysis

热点模式下,一台设备创建 ad hoc WiFi 热点供另一台设备加入。如果两台设备都支持蓝牙,它们会在确认配对码后自动交换热点凭据;否则,主持设备显示密码和二维码,由加入设备手动输入。需要留意的是,Apple 设备无法以编程方式启动热点,因此 Apple 设备之间的传输必须使用共享網路模式,即两台设备先手动加入同一个 WiFi 網路(可以是某台 iPhone 或 MacBook 手动开启的个人热点),再執行 Flying Carpet 的共享網路模式。README 还提到,热点模式会禁用无线互联网连接(共享網路模式除外,Windows 或 Android 主持热点时也不受影响)。

加密與安全设计 · spieglt-flyingcarpet-deep-analysis

README 详细描述了传输加密机制:每次传输都使用 Noise 协议框架下的 NNpsk0 握手,基于 X25519、ChaCha20-Poly1305 和 SHA-256。双方从传输密码透過 PBKDF2-HMAC-SHA256(60 万次迭代)派生预共享密钥,然后进行临时 Diffie-Hellman 密钥交换。檔案名称、大小、哈希和内容在简短明文前导之后全部加密,前导本身作为 Noise 协议的 prologue 绑定到握手中,任何篡改都会中止传输。每次传输使用新的密钥,实现前向保密。README 特别说明,选择 PBKDF2 而非内存硬 KDF(如 Scrypt 或 Argon2),是因为 iOS/macOS 仅提供 Apple 的 CryptoKit,不支持后两者。完整的共享網路加密设计见 docs/shared-network-crypto.md。

平台支持與已知限制 · spieglt-flyingcarpet-deep-analysis

Android 版本需要 Android 10/API 级别 29 及以上,且在某些 Xiaomi、MIUI 或 HarmonyOS 设备上无法正常工作,作者推测與这些设备对 LocalOnlyHotspot API 的支持不足有关,但已确认至少有一台 Xiaomi 手机可以執行。Windows 版本要求 Windows 10 或更高版本。Linux 版本主要在 Linux Mint 上開發和测试,作者表示主要针对 Debian 系发行版,並提到有使用者在 Fedora 上遇到问题(可能與 SELinux 相关,但未确定)。macOS 在长时间传输过程中有时会切换回有互联网连接的无线網路。桌面平台点击取消按钮后,操作系统可能需要一些时间才能完成热点加入或创建,使用者应只点击一次並等待几秒。

获取與编译方式 · spieglt-flyingcarpet-deep-analysis

Android 版本可透過 Google Play 或 F-Droid 获取,也可从 GitHub releases 页面下载 APK 进行侧载。iOS 版本在 App Store 中搜索"Flying Carpet File Transfer"即可。Linux、macOS 和 Windows 版本均从 releases 页面下载:Linux 提供 .AppImage 独立版本或 Debian 系的 .deb 包;macOS 提供 .zip 檔案,解压后将 .app 拖入 Applications 檔案夹,也可透過 Homebrew 执行 brew install flying-carpet;Windows 提供 .msi 安装程序或 FlyingCarpet.exe 独立版本。编译方面,需要安装 Rust 和 Tauri CLI,Linux 需安装若干依赖,然后執行 cargo tauri dev 或 cargo tauri build。Android 构建从 Android/FlyingCarpet/ 目錄执行 ./gradlew assembleDebug。iOS 和 macOS 构建需要 Xcode,且 DEVELOPMENT_TEAM 留空,首次构建会失败,需要使用者自行设置团队。

開發历史與專案状态 · spieglt-flyingcarpet-deep-analysis

README 的问答部分说明,该專案最初是 Go 倉庫,后来迁移到 Rust,原因是作者在 Go/Qt 范式下遇到若干问题,尤其是 Windows 上无法生成单檔案可执行檔案、需要以管理员身份執行,以及必须将 WiFi Direct DLL 写入临时檔案夹並在執行时链接。现在 GUI 框架使用 Tauri,Android 版本用 Kotlin 编写,iOS 和 macOS 版本用 Swift 编写,这些程式碼都位于同一倉庫中。作者计划增加 iOS 分享菜单中的 Flying Carpet 快捷键。倉庫元資料显示该專案有 5259 颗星、256 个分支、16 个开放问题,尚未归档。授權证为 GPL-3.0,但提供的材料中没有完整的授權证文本,因此无法说明具体条款。

針對 spieglt/FlyingCarpet,素材記錄的主要語言是 Rust,授權為 GPL-3.0。核驗時先對照 README 的專案名稱、安裝入口與實際命令,再觀察輸出或畫面;不把未記載的效能、安全性或相容性推成承諾。 在 spieglt/FlyingCarpet 的情境中,先確認 README 指向的安裝方式與作業系統,再保存版本、設定檔位置和終端機輸出。 對照 spieglt/FlyingCarpet 的範例、腳本或路由名稱與參數,記錄成功結果及錯誤訊息,分辨文件描述和環境差異。 素材沒有說明的功能保持未知,不能以倉庫統計推斷品質;授權也不等於維護或支援保證。 評估 spieglt/FlyingCarpet 時回到它自己的輸入、輸出、依賴和限制,檢查 README 提到的檔案是否存在。 在 spieglt/FlyingCarpet 的情境中,先確認 README 指向的安裝方式與作業系統,再保存版本、設定檔位置和終端機輸出。 對照 spieglt/FlyingCarpet 的範例、腳本或路由名稱與參數,記錄成功結果及錯誤訊息,分辨文件描述和環境差異。 素材沒有說明的功能保持未知,不能以倉庫統計推斷品質;授權也不等於維護或支援保證。 評估 spieglt/FlyingCarpet 時回到它自己的輸入、輸出、依賴和限制,檢查 README 提到的檔案是否存在。 在 spieglt/FlyingCarpet 的情境中,先確認 README 指向的安裝方式與作業系統,再保存版本、設定檔位置和終端機輸出。 對照 spieglt/FlyingCarpet 的範例、腳本或路由名稱與參數,記錄成功結果及錯誤訊息,分辨文件描述和環境差異。 素材沒有說明的功能保持未知,不能以倉庫統計推斷品質;授權也不等於維護或支援保證。 評估 spieglt/FlyingCarpet 時回到它自己的輸入、輸出、依賴和限制,檢查 README 提到的檔案是否存在。 在 spieglt/FlyingCarpet 的情境中,先確認 README 指向的安裝方式與作業系統,再保存版本、設定檔位置和終端機輸出。 對照 spieglt/FlyingCarpet 的範例、腳本或路由名稱與參數,記錄成功結果及錯誤訊息,分辨文件描述和環境差異。 素材沒有說明的功能保持未知,不能以倉庫統計推斷品質;授權也不等於維護或支援保證。 評估 spieglt/FlyingCarpet 時回到它自己的輸入、輸出、依賴和限制,檢查 README 提到的檔案是否存在。

編輯結論

Flying Carpet 适合两台设备在近距离、没有互联网要求,且愿意先统一版本的个人或小组。它不适合需要后台同步、跨版本互传或把 Apple 设备热点创建交给应用自动完成的场景。先让参與设备全部升级到 v10,在一组不敏感檔案上分别测试热点模式與共享網路模式,並确认接收端显示的密码或二维码流程。 spieglt/FlyingCarpet 適合需要 README 已列功能且能符合環境條件的使用者,不適合把未記錄行為當成既定保證的場景。先依 README 的專案專屬命令或檔案入口核對安裝結果。

官方來源

  1. Official README
  2. Project repository
  3. Release notes
社群筆記

社群筆記