最近我折腾了一个小东西:把 Chrome 和 ChatGPT Atlas 的书签同步起来。
起因特别小。
我平时 Chrome 里存一堆网页,Atlas 里也存一堆。两个浏览器的书签不通电,时间一长就开始乱:那个链接到底在 Chrome 还是 Atlas?
于是我去找有没有现成项目。后来翻到一个:JinHanAI/echo-bookmark-sync。MIT 协议,能改能发。
所以我没从零造轮子。拿过来,让 AI 帮我改成更顺手的样子。
我不想要一个窗口应用
原版能跑,但那个长相不太对。
macOS 上状态栏小工具一抓一大把:1Password、AlDente、Magnet、Ice。它们有个共同点,平时在状态栏里待着,需要时点一下就出来,没事就跟没装一样。
我就想整个这个。
第一步是把它从窗口应用改成状态栏后台。改完之后,启动不进 Dock,只留个图标在菜单栏。右键能开设置、能启动同步、能停、能手跑一次,也能直接退出。
打开电脑,工具已经在状态栏里坐好了,不出声。
同步这块重做了一遍
原版逻辑没达到我要的效果。
我想要的不是两边合一下,而是更硬的镜像。
选 Atlas 同步到 Chrome,Chrome 就该只剩跟 Atlas 一模一样的书签。多出来的删掉,少了的补上,名字变了同步过去。反过来也一样。
说起来简单,写起来要特别小心。书签是用户数据,写错一次可能是个小灾难。
所以我让 AI 帮我补了测试,专门卡几种情况:
Atlas 到 Chrome,Chrome 严丝合缝对得上 Atlas Chrome 到 Atlas,Atlas 严丝合缝对得上 Chrome 双向监听时,看哪边先动 手动双向同步时,看谁更新
这几种跑通了才敢往下走。
图标才是真折腾
技术问题搞定之后,图标反而最磨人。
App 图标想弄得像样一点,状态栏图标是另一码事。
一开始用了彩色的状态栏图标。放到菜单栏里,看着非常突兀。然后又发现图标太小,还带个浅色底,像贴了张小贴纸。
最后换成了 macOS 推荐的 Template 图标,黑白、透明、随系统深浅自动切。
这才算对了。
App 图标可以精致、立体、有颜色。状态栏图标得克制,黑白、清晰、无背景。
两套审美,两套规则。
发布前还得处理许可证
毕竟是基于别人 MIT 项目改的,发布前归属得说清楚。
我做了几件事:
保留原作者 JinHanAI 的 MIT 声明 README 里写明这是基于原项目的修改版 第三方依赖的许可证单独列 加了非官方声明,别让人误会是 Google、OpenAI 或 Atlas 官方出的 仓库地址、作者信息都换成自己的
开源不是拿来就成自己的,是在协议允许的范围内,把出处说清楚。
最后丢到 GitHub
仓库地址:
https://github.com/hardboy0418/echo-bookmark-sync
Release 里挂了 macOS arm64 的 DMG。
中间还踩了个小坑,GitHub Release 上传 DMG 时网络一直重置,最后换成 curl 带重试才传上去。
一个小需求,最后凑出了一整条链路。发现问题,找到开源项目,跟 AI 一起改代码,调同步逻辑,做图标,补测试,处理许可证,最后丢到 GitHub。
这就是 AI 编程有意思的地方。
它不会凭空给你变一个产品。是你脑子里那些模糊的小念头,一点点落到真实的文件、真实的测试、真实的安装包里。
工具不大,但能解决自己的问题。
剩下的事,就交给这个静静待在状态栏里的小图标了。
夜雨聆风