分享一个 iOS 阅读记录工具:微信读书同步、本地图书管理员和多模型切换
做了一个 iOS 阅读记录工具,叫 myLibrarian 。
testflight 测试连接: https://testflight.apple.com/join/CrsdBU97
起因是我长期用微信读书看书、划线、写想法,但时间久了以后,很多阅读痕迹很难再被重新利用。想找某句话、某本书的想法、某一年读过什么,经常要翻很久。
所以我做了一个偏个人资料库的 App:把微信读书里的阅读痕迹同步回来,再和本地阅读记录、金句、小组件、图书管理员放在一起。
目前大概做到了这些:
- SwiftUI + SwiftData 原生 iOS App
- CloudKit 做多设备同步
- 支持从微信读书同步书架、最近阅读、阅读进度、划线和想法
- 本地保存书籍、阅读轮次、摘录、评分、阅读状态等数据
- 支持本地电子书导入和阅读记录关联
- 从摘录中筛选比较值得收藏的金句
- iOS 小组件轮询展示收藏金句
- 内置“图书管理员”,可以用自然语言查询自己的阅读记录、书籍、摘录和微信读书资料
- 支持配置多个 AI 服务和模型,可以随时切换使用
- AI 功能优先支持 Gemini API ,同时也兼容 OpenAI 风格接口
微信读书同步不是官方接口产品,需要用户自己填写微信读书 API Key 。AI 功能也不是绑定某一家服务,目前优先支持 Gemini API ,也可以配置 OpenAI 兼容接口。图书管理员和金句扫描可以分别设置默认模型,避免所有功能都挤在一个模型配置里。
图书管理员这块目前是我比较想打磨的部分。它不是简单把整个书库塞进 prompt 里聊天,而是做成了一个本地资料查询入口:
- App 会把 SwiftData 里的 Book 、ReadingSession 、Quote 等数据整理成结构化阅读工作区
- 模型需要数据时,先规划要查什么,再通过工具读取本地工作区
- 支持按书名、作者、年份、阅读状态、评分、摘录内容等条件查
- 支持语义检索,比如“我读过哪些关于孤独/自由/死亡的句子”
- 支持查看本地记忆,比如用户希望它记住自己的回答偏好或阅读偏好
- 明确进入
/微信读书模式时,可以读取微信读书书架、笔记、进度和统计 - 工具调用过程会展示给用户,避免黑盒式回答
- 当前对话使用哪个模型会在聊天页底部显示,切换模型后下一条消息就会使用新模型
我想要的效果不是“AI 随便评价我的书”,而是更像一个能翻自己书桌的助手。比如可以问:
- 我去年读完了哪些书?
- 帮我找一下我摘录过的关于自由的句子
- 我最近微信读书读到哪里了?
- 哪些书我评分很高但没有写评价?
- 总结一下我最近读书偏好的变化
技术上遇到的一些点:
SwiftData + CloudKit
CloudKit 对模型默认值和 Optional 关系要求比较严格,这块踩了不少坑。微信读书同步
同步时先把远端结果整理成临时快照,全部请求完成后再一次性写入 SwiftData ,减少同步中 UI 反复重绘。本地资料工具层
图书管理员不会默认拿到完整书库,而是通过inspect_workspace、read_workspace、search_workspace、semantic_search等工具按需读取。多模型配置
AI 服务配置是独立的,目前优先支持 Gemini API ,也兼容 OpenAI 风格接口。图书管理员和金句扫描可以分别指定默认模型,也可以在聊天时切换当前模型。这样方便对比不同模型在中文摘录理解、总结、检索跟随上的差异。金句和去重
微信读书划线、本地电子书划线、手动摘录都会进入本地摘录体系,后续再做金句提取、收藏和小组件展示。Widget
WidgetKit + App Group 保存金句快照,小组件可以轮询展示收藏金句,也支持手动刷新和收藏切换。
现在还在测试阶段,还没有正式上架。想听听大家对这个方向的看法:
- 阅读记录类 App 里加一个本地图书管理员,有没有实际价值?
- 你们会希望它更偏统计查询,还是偏摘录/回顾/总结?
- 这种“工具读取本地资料”的 AI 交互,是否比直接聊天更可信?
- 多模型切换对这类个人资料工具是否有必要?
- Gemini API 在中文阅读资料整理上,大家有没有比较推荐的模型或参数?
- 微信读书同步和本地阅读档案结合,大家会不会有隐私顾虑?
- SwiftData + CloudKit + WidgetKit 这套组合还有什么坑?