TyStark444
V2EX  ›  Apple

testflight 微信读书同步、本地图书管理员和多模型切换

  •  
  •   TyStark444 · 3 days ago · 1354 views
    做了一个 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 随便评价我的书”,而是更像一个能翻自己书桌的助手。比如可以问:

    - 我去年读完了哪些书?
    - 帮我找一下我摘录过的关于自由的句子
    - 我最近微信读书读到哪里了?
    - 哪些书我评分很高但没有写评价?
    - 总结一下我最近读书偏好的变化

    技术上遇到的一些点:

    1. SwiftData + CloudKit
    CloudKit 对模型默认值和 Optional 关系要求比较严格,这块踩了不少坑。

    2. 微信读书同步
    同步时先把远端结果整理成临时快照,全部请求完成后再一次性写入 SwiftData ,减少同步中 UI 反复重绘。

    3. 本地资料工具层
    图书管理员不会默认拿到完整书库,而是通过 `inspect_workspace`、`read_workspace`、`search_workspace`、`semantic_search` 等工具按需读取。

    4. 多模型配置
    AI 服务配置是独立的,目前优先支持 Gemini API ,也兼容 OpenAI 风格接口。图书管理员和金句扫描可以分别指定默认模型,也可以在聊天时切换当前模型。这样方便对比不同模型在中文摘录理解、总结、检索跟随上的差异。

    5. 金句和去重
    微信读书划线、本地电子书划线、手动摘录都会进入本地摘录体系,后续再做金句提取、收藏和小组件展示。

    6. Widget
    WidgetKit + App Group 保存金句快照,小组件可以轮询展示收藏金句,也支持手动刷新和收藏切换。
    Supplement 1  ·  2 days ago
    大家注意啊,AI 服务 App 并没有给大家内置,我只是做一个为爱发电的一个小工具而已。大家可以在 App 的设置页面填写自己的 API 来获取相应的服务。
    10 replies    2026-05-27 16:15:48 +08:00
    terrenceyq
        1
    terrenceyq  
       2 days ago
    尝试了一下,在 APP 中填写微信读书 api ,读取不到书籍信息,不知道为什么
    TyStark444
        2
    TyStark444  
    OP
       2 days ago
    @terrenceyq #1 诶?我朋友试了可以诶,你用的是 wrk-开头的那个吗?
    hahao
        3
    hahao  
       2 days ago
    金句这个板块,是无法拉取微信读书已读过书籍的划线那些吗?另外 app 图标看看是否再打磨下,哈哈
    terrenceyq
        4
    terrenceyq  
       2 days ago via iPhone
    @TyStark444 是的,从软件里获取到的那个
    Ethan24067
        5
    Ethan24067  
       2 days ago
    这个导入微信读书里的书籍,不能全选的话那么多一个个点,要好久
    TyStark444
        6
    TyStark444  
    OP
       2 days ago
    @Ethan24067 #5 可以多选的呀,点击书架页面右上角的加号,从微信读书,然后多选就行了
    TyStark444
        7
    TyStark444  
    OP
       2 days ago
    @hahao #3 金句的抓取还是需要 AI 判别的,我只是内置了系统提示词而已,因为不大可能用一个脚本直接给你识别出来。所以要拉取金句的话,在设置页面需要填写你对应供应商的 token 。提供了 gemini ,gpt ,硅基流动,kimi 官方的接口地址,别的服务也可以自己配。
    TyStark444
        8
    TyStark444  
    OP
       2 days ago
    @terrenceyq #4 方便的话可以发一下我邮箱,我研究下,[email protected]
    terrenceyq
        9
    terrenceyq  
       2 days ago
    @TyStark444 已反馈到邮箱
    TyStark444
        10
    TyStark444  
    OP
       2 days ago
    @terrenceyq #9 可以更新到最新的 testflight 版本
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2702 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 66ms · UTC 14:55 · PVG 22:55 · LAX 07:55 · JFK 10:55
    ♥ Do have faith in what you're doing.