工作记录
Todo
- 找到开源的产品试试: Element X => 把 server 搭起来看看 [放弃了]
- 确定目标:先搞一个能记录到本地的版本,IM 窗口,文件写到本地目录,数据库用 SQLite. => 确定了大概的 concept; v1 版本功能需求撰写中
Process
路线选择:
DS:
大胆使用 Matrix,具体技术栈为: 服务端:自部署 Conduit 或 Synapse(一台 1CPU/1GB 内存的轻量 VPS 足够个人使用)。 客户端核心:matrix-rust-sdk,通过其 Kotlin 绑定(参考 matrix-rust-components-kotlin)直接集成到你的 Android 项目。 UI 层:完全自定义,用 Jetpack Compose 构建你想要的“记录式聊天界面”——比如时间线显示、日历跳转、标签过滤,而不是标准的群聊对话。 图片/语音/视频:发送时通过 SDK 上传,使用 Matrix 的媒体仓库;可以开启“加密媒体”支持。 这样,你现在得到的是一款极强可扩展性的个人记录核心;未来需要多人房间时,仅仅是在现有引擎上创建新房间、邀请用户——所有同步、加密、类型扩展能力都已内置,无需改动底层。 “看起来简单”的直觉是对的,不要因为对“大”的模糊恐惧而走回头路。与其自己写一套半成品 IM,不如站在已经踩过无数坑的 Matrix 肩膀上,把精力用在打磨你独一无二的记录体验上。
Gemini:
为了兼顾“前期要轻”和“后期要强”,我不建议你直接拷贝或修改 element-x-android。相反,你应该采取“自建轻量前端 + Matrix 官方基础库”的策略。
阶段一:个人记录 MVP(最轻量) 前端:自己用纯 Kotlin (Jetpack Compose) 搭建一个干净、漂亮的笔记 UI。 网络与核心:不要用 Rust SDK。在 Android 端直接使用更轻量的 Matrix 客户端库,或者直接用 Retrofit / Ktor 按照 Matrix Client-Server API 封装你需要的几个核心接口(登录、发消息、上传媒体、同步 _matrix/client/v3/sync)。 优势:安装包极小,代码完全可控,UI 随心所欲,没有 Rust 编译的大坑。
阶段二:引入多人协作与房间(按需扩展) 此时,因为你的后端完全是标准的 Matrix 服务器(比如 Synapse 或 Dendrite),你只需要在你的轻量前端加上“创建房间”、“邀请用户”的 UI 交互。
既然前期通信协议就是按 Matrix 标准写的,此时开启群聊和多人协同,后端不需要改动一行代码,前端也只需要增加少量的状态处理逻辑。
阶段三:如果要上重度功能(如端到端加密) 如果你未来发现用户对隐私要求极高,必须做端到端加密,这时候你再考虑把底层的网络请求层,替换为官方的 matrix-rust-sdk(只用它的 SDK 内核,不用它的 Element 前端)。因为你前期的业务抽象是基于 Matrix 协议的,这种替换也是完全有迹可循的。
确实这是合理的;自建前端+使用 matrix sdk.
进一步看,是否可以避免 matrix sdk:
如果你想为你的“个人记录 App”寻找技术地基,千万不要去硬啃 Keet 或者是 Berty 这种纯 P2P(去中心化)项目的源码。
原因非常残酷:P2P 组网在移动端(Android/iOS)存在致命的后台保活和电量消耗问题。为了在没有服务器的情况下让两个手机互传数据,手机必须在后台保持高功耗的网络穿透(NAT Traversal),这会导致你的 App 极易被 Android 系统杀后台,或者因为耗电太快被用户卸载。
🚀 针对你的场景,最轻量、最稳妥的开源全栈方案: 既然你中后期需要“类似房间的共同编辑”,“客户端本地 SQLite (CRDT) + 一个极其简单的中心化同步网关(Sync Server)” 是行业里公认对独立开发者最友好的架构。
你可以直接参考 electric-sql 或者 PowerSync 的开源示例:
单机阶段:你用 Android 原生的 Room 数据库写代码,普通的 SQL 增删改查,没有任何网络心跳,包体积极小,绝对省电,绝不杀后台。
协作阶段:引入它们的轻量级客户端 SDK(只有几百 KB)。只要你部署一个非常微型的 Node.js 或 Go 后端作为数据中转站,当本地 SQLite 有变动时,SDK 会把增量补丁传给后端,后端再分发给这个“房间”里的其他人。
这种做法既避开了 Matrix 编译 Rust 几百 MB 的重度负担,又避开了 Keet/Berty 纯 P2P 导致移动端严重耗电的死穴,是做“记录/工具类 IM”最舒服的姿势。
生活记录
B 站看了许飞的《你根本无法理解这件事的重大意义》的 live, 发现许飞还是人气不够哒;另外屏幕后面的歌词也和我理解的不同,特别是 “个体诗意“这个词,让我更迷惑了。
黄车车 7 点多自己就起来了,在好好出门前。
剪了个头;人家看我头发乱糟糟,说工作多热啊,然后就聊到没工作、带娃的事情;人家也有个 1 岁多的娃娃,每天都想坐电瓶车出去玩,哈哈。
情绪记录
Good
Bad
Reflect
今晚先玩游戏,再弄的工作。游戏大概 2 小时,超时了,工作也不愿意撒手。但最后还是 12 点半结束,比之前好啊。