很多年前,我写过一篇文章:丝滑体验 + 多端同步,技术人 Markdown 笔记的最佳实践,主要讲长期管理个人知识笔记时遇到的一些痛点:多端同步、流畅体验、Markdown 格式、安全与免费。
国内简单、纯粹又好用的产品极少。我当时的方案是迁移到 Typora,固定使用 Markdown 格式,直接存储到 GitHub,再写个脚本定时同步。
因为我一直坚持用 GitHub 作为永久存储仓库,所以始终没有找到体验好、又支持跨端同步的手机端产品。
后来我把两类笔记彻底分开,最近一年在手机上一直用语雀,单独记录生活类笔记。
我特别想吐槽一下语雀 。玉伯做的产品,由顶级技术大佬为工程师打造,听起来很有极客范,但实际体验一点也不极客。用了一年实在受不了,我只挑两点:
- 每次打开目录或文件,加载加渲染都要超过 1 秒,而且每次都从远端加载。不知道非要加载个鸡毛,就算不用本地存储,特么起码也该做个缓存吧,几乎看不到优化。
- 从体验上看,应该是 Web 套壳的 Hybrid 方案。就算是前端出身,也没必要这么热衷于 Web 吧?这么多年都不用原生实现,交互体验太差了。
手机端的 Obsidian 非常丝滑。为了不花每年 350 元的订阅费,我决定自己手搓一个。
芝士就是力量!

它必须满足两个核心要求:
- 数据永久存储在 GitHub 上。
- 要快。
基于这两点,我做了芝士(知识)笔记:一套完全无广告、支持私有化部署、以 Markdown 为唯一内容格式,并与 GitHub 仓库双向同步的个人笔记系统。
- 技术方案必须遵循本地优先原则,打开速度越慢,使用次数就越少。
- 针对多端同步冲突,设计明确的冲突处理方式。
- 使用基于 Authenticator 的权限验证,直接输入验证码登录,省去传统登录流程,每台设备验证一次即可。
- 自部署服务使用 SQLite 保存索引、状态、凭据等临时信息,原始文档永久存储在 GitHub。
预览图如下:



私有化部署
配置项
编辑 server/config/runtime.local.json,完成以下配置:
authenticatorSecret:Authenticator 使用的 Base32 TOTP Secret,用于生成和校验设备登录验证码。请自行生成独立密钥并写入配置,然后下载手机 Authenticator 应用,将密钥添加到应用中。每次重新登录时,需要从 Authenticator 应用获取临时验证码。githubOAuth.clientId:打开 GitHub Developer Settings,新建 GitHub OAuth App,获取 Client ID 并写入配置。githubOAuth.clientSecret:同样在 GitHub OAuth App 中配置 Client Secret,用于服务端完成 GitHub 授权,不能提交到 Git 仓库或泄露给客户端。
构建部署
bash
# iOS 构建
cd ios-capacitor
pnpm ios:sync:production
# 服务端构建
cd ../server
pnpm install
pnpm build
pnpm start
将服务端部署到服务器后,即可进行 iOS 真机测试或发布到应用市场。
原创声明
原创文章,转载请注明作者和原文链接。插图由 AI 生成,关注公众号查看更多文章!

内容创作 AI 自律声明
