我们拍了很多照片,往往它最高光的时刻就是按下快门的那一瞬间,此后便长眠于我们的手机或相机存储卡中。iPhone 的推荐时常给我惊喜和感动,把我尘封的记忆扰动,可是我们是否可以“让美好持续发生”?
初衷:我就是想要
如我博客的副标题:那些岁月,如果不记录,就像风一样飘逝了,然后了无痕迹,仿佛未曾发生。
我一直有个比较“强迫”的习惯,记录一些瞬间——不管未来用不用得上。这是我从大学到毕业不停买相机的原因,老实说拍照理论学了一通,但摄影水平有限。所幸生活并不全是艺术,真实的瞬间便足够回味。于是手机相册常常满满的,iCloud 得开通 2TB 会员才能容纳。
我也时常分享一些有趣或有意义的照片给家人,当有了娃后,特别是当父母不在身边时,他们只能从我零星发的照片里看到孙辈,我在想我或许需要灵活的相册,我也不用那么主动和刻意的分享,有一个相册他们随时可以看到。你或许会说,这不是群相册、QQ 相册之流就可以解决的吗?遗憾的是老人上了年纪较难主动获取这些信息了,有了门槛效果就没有多大意义了。
原本我还在想如何解决此问题,直到某天在 B 站看到 老戴Donald 的这个视频。我毫不犹豫的下单了。
硬件:成品它不香
起初我打算买零散部件自己在家焊,再次锻炼一下金工能力,但挑选再三发现各个部件的组装成本远高于直接买成品硬件,于是就直接在微雪下单了一款。钱的差额是小事,主要担心缺少个别部件到时反复折腾等待快递就破坏了美妙的心情,当时时间还是五一放假前夕(没错,又拖更了很久),于是果断先成品折腾。 它是 ESP32-S3 7.3寸 E6 全彩色电子墨水屏,看画面显示效果还不错,诸位别被骗了,放大了看,颗粒度还是清晰的,毕竟 PPI 摆在那里。

当然我不是来带货的,直接买了成品降低了我折腾的乐趣,硬件咱就没得玩了。下单后第二天就到了,看了一下发货地深圳,果然,深圳速度~
软件:私人化定制
收到货物后,官方给的固件集成了几个模式,还带了小智对话模式,我之前也折腾过小智机器人(见让你的小智AI机器人起飞),有种莫名的熟悉感。 但是带的相册功能和上面老戴的那种 Feel 就差一大截了,仅有图片轮播等基础玩法,既不文艺也不艺术。这一点都不慌,啥年代了,不就是写一些驱动、编译固件、刷机嘛?
改造一:迁移 InkTime
人家已经开源了InkTime,让 AI “借鉴”一下是很快的。我先在原固件上添加了一个新模式,将 InkTime 的代码集成进去。老戴的模式中特别亮点的就是 AI 根据图片的内容评分和打标签,而我是不想将大量图片做贡献给云端大厂们作训练素材的。“众所周知”,我有一台 Mac Mini M4,这正是它发挥的时候。用 LMStudio 再召唤 qwen3.5 9B,效果已经不错了。虽然说处理一张图片大概要 50-90 秒,但这个设备功耗极低,又保障了隐私,咱们就忍着点,图不出户才是最重要的:)
迁移完可以用了,测试了一下效果,图片筛选和文案看了后表示满意:

不过原来的架构是这样的:

这里有一个比较严重的问题,server 需要绑定在 NAS 侧获取图片再渲染,这样就不方便我们将电子相框带到外面去时也可以查看图片。所以我们需要调整架构,使图片处理在内网,图片分享拉取在外网:

当然我们的服务在拉取图片时需要支持身份认证,这里我让服务返回了 COS 的预签名链接,使相框固件拿到链接后便可直接安全拉取,保护隐私。
改造二:支持 iPhone 相册追踪
原项目中假定了我们 NAS 中的图片都需要分享和唤起,它负责可以扫描某个目录进行处理。而我还有一个场景就是最近发生的事情(照片),隔几天会冒出来让你回忆下。我希望我可以将某些有意义的照片放到可被追踪的相簿中,我家人也可以随时分享它觉得有意义的照片,当满足一定条件,它会自动出现在相框中。这显然是 iPhone 共享相簿擅长的场景,怎么整合进来呢?
“众所周知”(你现在应该知道了),我有一台 Mac Mini M4。我找到一个开源软件,用 osxphotos 将 macOS 照片 app 中的 iCloud 共享相簿导出到本地目录,再通过 rsync 同步到我们的图片处理服务中(调用 VLM 识图及筛选),这个功能我是放在 NAS 上的。为了能够比较及时的感知到相簿的变化,可通过 launchd 定时后台同步。
然后我们的图片处理服务负责监听目录下的文件变化,有新文件过来就会交给VLM进一步处理。
这些工具我都设计为一个个小仓库,方便后续的维护和扩展。本来想整理一下放 GitHub 的,但现在 AI 时代,如果你要折腾也很容易搞定,有需要的朋友欢迎给我留言。
改造三:丰富 AI 生图
我家娃年幼无知,沉迷奥特曼打怪兽,所以给小智扩展了一下,让它对接国内几个图像生成和编辑的模型,这里我先选择火山引擎豆包的模型(seedream 5.0/4.5),因为免费额度比较高,而且效果也不错,最重要的是速度还比较快。于是我在娃面前说,帮我生成迪迦在大海中对战一个章鱼怪兽,在一小会等待之后,屏幕忽闪忽闪刷新后,一张让娃兴奋的图片出现了。

因为支持了编辑能力,我们还可以让它继续修改,在小智 AI 的帮助下,娃也可以自己通过描述来定制自己想要的图片了。我看着他好奇又开心的样子,或许科技本该让人如此愉悦。
思考:AI 擅长做,你自己才是大脑
在当前阶段,AI去实现功能已经很快捷了,并且基本你只要描述清楚了,做出来返工都比较少。这并不意味着你就废了,以这个项目为例,有几点可以值得聊聊的。
云控
原来固件中有一些配置,它是放在 SD 卡中再加载的,这样不方便调整。在几次拆卡读卡后,我便难以忍受了。我把配置重新梳理了一下,让 SD 卡中只有最基本的配置,只要达到联网能力和找到我们的 API 即可,其它都通过网络拉取。同时为了减少 SD 卡的读取,WiFi 等 SSID 信息我们直接保存到 ESP32 的 NVS 中。
| |
不过这样运行中当前到底跑的是什么配置,最新配置是否生效了呢?我们不妨来下个调试界面:

通用图片展示框
既然我们已经在云端进行渲染和图片管理,有这样一套统一的管理和展示逻辑,那么也不再局限于只展示我们特定照片了。有云端 API 后,我让 AI 将其创建了一个skill,然后我们可以随时将要展示的信息让各个 Agent 可以调用在它上面呈现。
我想最近关注 Token 消耗比较多,到底订阅的套餐被我们薅了多少本回来呢?

当每天早上醒来时,看到你的 Token 用量,是不是又有冲动继续折腾 AI 了呢?

这个 Token 统计支持多机汇总,使用了开源方案 openusage。当时看界面不错,支持的 Agent 比较多,于是给它扩展了一下多机汇总的 Hub 功能,作者很给力也很认真 Review PR,已经合入了。
后记
当然还有不少折腾的细节,限于篇幅不再展开了。这个项目当前比较稳定运行,一个相框静静放在那里,时不时有一些小惊喜。我在想是放在每天出入的门口,家庭的温馨程度能否+1。
但从技术上,还是有些遗憾:涉及部分硬件的事情,时常要烧录固件再测试,为了降低调试成本,除了给项目的核心功能添加完善的测试用例外,我尝试在本地搭建一个模拟器,希望打通全流程这样 AI 可以自闭环。遗憾的是因为过往经验较少,加上这里的电路等还没研究清楚,这个想法最终没有成功。
如果你有更好的点子,欢迎留言交流。如果你懂上面的硬件模拟,欢迎指导我一下,谢谢。
我是个爱折腾技术的工程师,也乐于分享。欢迎点赞、关注、分享,更欢迎一起探讨技术问题,共同学习,共同进步。为了获得更及时的文章推送,欢迎关注我的公众号:爱折腾的风

