# FSKit Driver 完整实现待办事项 ## 当前状态 **已完成基础(可保留):** - ✅ App ID注册(Apple ID: 6770506571) - ✅ Bundle ID: com.momentry.markbase.fskit - ✅ Developer ID Application证书导入 - ✅ .app Bundle创建(build/MarkBaseFSKit.app) - ✅ entitlements.plist配置 **当前限制:** - ❌ binary未实现FSKit driver接口(占位符) - ❌ 无法作为System Extension安装(需要完整driver) --- ## FSKit Driver完整实现要求 ### 需要实现的trait/接口 **1. FSFileSystem(文件系统)** - `fskit_volume_for_identifier()` - 根据identifier获取volume - Volume注册/卸载机制 **2. FSVolume(卷)** - Volume标识符管理 - Volume状态跟踪 **3. FSVolumeOperations(卷操作,9个方法)** ``` create_item() - 创建文件/文件夹 delete_item() - 删除节点 move_item() - 移动节点 rename_item() - 重命名 lookup_item() - 查找节点 fetch_attributes() - 获取文件属性 fetch_contents() - 读取文件内容 write_contents() - 写入文件内容 create_directory() - 创建目录 ``` **4. FSVolumeReadWriteOperations(读写操作)** - 文件读写优化 - 缓存机制 **5. FSItem(文件系统项)** - SQLite node_id → FSItem映射 - 文件属性封装 --- ## 实现技术栈 **Rust依赖:** ```toml objc2-fs-kit = "0.3.2" # FSKit bindings objc2-foundation = "0.3" # NSString等基础类型 rusqlite = "0.32" # SQLite backend ``` **关键技术:** - Objective-C runtime(通过objc2库) - declare_class!宏(定义Objective-C类) - SQLite backend(MarkBaseFS现有实现) - macOS System Extension框架 --- ## 实现步骤(未来) **Phase 1:FSVolumeOperations基础实现** - 实现lookup_item()(已有query_node基础) - 实现fetch_attributes()(已有FileNodeData) - 实现fetch_contents()(已有read_file基础) **Phase 2:写入操作实现** - 实现create_item()(SQLite insert) - 实现write_contents()(文件写入) - 实现delete_item()(SQLite delete) **Phase 3:高级操作实现** - 实现move_item()(parent_id修改) - 实现rename_item()(label修改) - 实现create_directory()(folder节点) **Phase 4:FSKit driver注册** - 实现FSFileSystem接口 - Volume注册机制 - System Extension打包 **Phase 5:System Extension安装** - 使用已有的.app Bundle - 重新编译完整driver binary - 系统批准流程 --- ## 技术挑战 **1. Objective-C runtime复杂性** - declare_class!宏语法复杂 - Objective-C对象生命周期管理 - 需要熟悉Objective-C消息传递机制 **2. FSKit framework限制** - Apple官方文档较少 - 需要通过objc2-fs-kit头文件理解接口 - 可能遇到macOS版本兼容性问题 **3. 性能优化** - SQLite查询优化(12659 nodes) - 文件读写缓存 - 多线程并发处理 --- ## 预估时间 |阶段 |时间 |难度 | |------|------|------| | Phase 1(基础操作) | 3-5天 | 中等 | | Phase 2(写入操作) | 2-3天 | 中等 | | Phase 3(高级操作) | 2-3天 | 高 | | Phase 4(driver注册) | 3-5天 | 高 | | Phase 5(安装调试) | 2-3天 | 中等 | | **总计** | **12-18天** | **高** | --- ## 资源需求 **知识储备:** - Objective-C runtime - FSKit framework - macOS System Extension架构 **参考资料:** - objc2-fs-kit文档:https://docs.rs/objc2-fs-kit/0.3.2/ - FSKit Apple文档:https://developer.apple.com/documentation/fskit - System Extension开发指南:https://developer.apple.com/documentation/systemextensions **现有代码基础:** - MarkBaseFS简化版(src/fskit/filesystem.rs) - SQLite backend(已验证12659 nodes) - warren数据库(16.15 GB数据) --- ## 与WebDAV方案对比 |特性 |WebDAV(短期)|FSKit Driver(长期)| |------|------|------| | 实现难度 | 低 | 高 | | 实现时间 | 1-2天 | 12-18天 | | 性能 | 500 MB/s | 650 MB/s | | macOS集成 | HTTP/SMB | Native FSKit | | Finder挂载 | 网络驱动器 | 原生卷 | | 生产可用 | ✅ 立即 | ⏳ 未来 | | System Extension | ❌ 不需要 | ✅ 需要 | --- ## 建议 **短期(现在):** 使用WebDAV方案 - 利用已有MarkBaseFS backend - 快速实现可用版本 - 满足500 MB/s性能需求 **长期(未来):** 完整实现FSKit driver - 保留System Extension注册基础 - 学习Objective-C runtime - 逐步实现FSKit接口 - 达到650 MB/s原生性能 --- ## 下一步行动 **WebDAV实施计划:** 1. MarkBaseFS backend集成到WebDAV handler 2. HTTP server启动测试 3. Finder连接验证 4. AJA System Test性能验证 **FSKit Driver保留:** - 所有注册配置保留(App ID、证书等) - 未来需要时可继续开发 - 当前POC代码可作为参考 --- **最后更新:** 2026-05-18 20:45