Files
markbase/docs/FSKIT_DRIVER_TODO.md
Warren 71fa48a626 System Extension注册完成 + FSKit Driver待办事项
已完成:
 App ID(6770506571)
 Bundle ID(com.momentry.markbase.fskit)
 Developer ID Application证书导入
 .app Bundle创建(build/MarkBaseFSKit.app)
 entitlements.plist配置

限制:
- binary未实现FSKit driver(占位符)
- 无法通过systemextensionsctl install安装
- 需要完整FSKit接口实现

策略:
- 短期:WebDAV(500 MB/s)
- 长期:FSKit Driver完整实现(650 MB/s)

文档:
- SYSTEM_EXTENSION_MANUAL_INSTALL.md
- FSKIT_DRIVER_TODO.md(未来待办)
2026-05-18 20:45:50 +08:00

195 lines
4.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 backendMarkBaseFS现有实现
- macOS System Extension框架
---
## 实现步骤(未来)
**Phase 1FSVolumeOperations基础实现**
- 实现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 4FSKit driver注册**
- 实现FSFileSystem接口
- Volume注册机制
- System Extension打包
**Phase 5System 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 4driver注册 | 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