这个项目能做什么

Amgi(韩语意为“记忆”)是一款开源、离线优先、兼容 Anki 的 iOS 闪卡客户端,并配有 watchOS 配套应用。它没有重新实现 Anki 的逻辑,而是通过 C FFI 封装官方 ankitects/anki Rust 后端,因此排程、卡片模板、搜索、导入导出、统计和同步都运行在与 Anki Desktop 和 AnkiDroid 相同的引擎上。 README 中描述的核心能力: - 离线优先运行:应用无需网络连接即可工作,并在有网络时进行同步。 - 与任何兼容服务器同步,包括 AnkiWeb 或自托管同步服务器,并在集合出现分歧时进行安全合并。 - FSRS 排程,以及每个牌组的 FSRS 模拟器。 - 内置 EPUB 阅读器,支持离线、兼容 Yomitan 的词典查询,旨在让用户从阅读内容中创建卡片。 - 高级功能,如图片遮挡、卡片模板、带牌组和标签筛选芯片的 Anki 搜索,以及包括连续打卡和未来到期预测在内的统计信息。 - 超越手机:主屏幕小组件、在设备上运行引擎的 Apple Watch 应用,以及快捷指令/Siri 操作。 架构:SwiftUI 功能模块位于依赖注入客户端、服务门面、类型化 protobuf 请求、后端 Swift 封装、四函数 C FFI 接缝以及最终的 Rust 动态框架之上。Swift 负责 UI;Rust 负责数据库(SQLite)、同步、排程、模板、搜索、导入导出和统计。序列化使用 Protocol Buffers,包含 25 个 .proto 服务定义。 技术栈:Swift 6.2 严格并发(语言模式 v6)、用于注入的 swift-dependencies、用于库和功能模块的 SPM,以及用于应用、小组件和手表目标的 xcodegen。EPUB 支持集成了 EPUBKit(MIT),并使用 hoshidicts 提供 Yomitan 词典。 构建需要 Xcode 26、Rust(stable 和 nightly,后者用于 watchOS 切片)、protoc 和 xcodegen。项目是生成而非检入的;README 给出了构建 Rust xcframework、生成 protobuf Swift 类型以及生成 Xcode 项目的命令。文档涵盖功能、构建、架构、Rust 桥接、数据流和代码风格。 许可:AGPL-3.0,因为它包含了同样采用 AGPL-3.0 的 ankitects/anki。README 指出,分发该软件或将其作为网络服务运行需要以相同许可证提供完整源代码。欢迎通过 CONTRIBUTING.md 贡献代码,README 还致谢了 Anki 项目、一个贡献了图片遮挡和主题功能的先前分支、AnkiDroid 的移动端 Rust 桥接模式,以及 Point-Free 的 swift-dependencies。