# 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
