闲不住而起意

我真的是一个闲不下来的人,任何时候,手上没有正在做的事、或者没有马上要去做的事情,就浑身难受坐立不安,偶尔甚至感觉要被憋出毛病了。

我跟🐦说这件事情,她无法理解:难道现代人不都是忙得受不了、巴不得闲下来吗?我说这不是一回事。我也不能接受被工作占满所有时间,当时当我逃离工作以后,剩下的时间,我仍然不能接受自己闲着。

我感觉有一定程度上是性格原因,另一种程度上是被职场的产出压力和优绩主义给腌入了味。我承认其实很羡慕社交媒体上推崇的那种松弛感:闲着就闲着呗,就在那坐着,放空,或者刷小红书娱乐也好,不要有休息耻辱。但是实话讲我不太行。强迫自己一直闲着,到一天的结束,我是不能接受自己过了这样的一天的,我会觉得懊悔和难受。

「这不是贱骨头吗」!

我觉得倒也不全是。终究人人的愿望都是让自己过上称心如意的生活,只是对我来说,「放空」、「刷小红书」这种休息不算称心如意吧。前段时间🐦出差比较频繁,周末我就一个人在家。平时都是🐦给我安排周末去哪玩什么的,但是她不在,我从起床开始就浑身难受,拿起手机、iPad 东翻翻西看看,都没什么意思,消磨到了晚上,闷闷不乐地睡了。

但回想过来,其实有很多事情可以做啊!给小猫换换猫砂、换换水碗;扫扫地;清理一下冰箱里面的过期食品;去健身房跑一会儿步;找部电影来看看。

所以我在想,与其被小红书自动吸走所有空闲的时间与注意力,为什么不能有一种机制,帮我在这样的时刻找一些更现实、更有成就感、更有益的小事做做呢

比如说,它需要知道家里的洗衣液该囤货了;做咖啡用的鲜奶快用完了;上一次理发已经是一个月前该再剪一次了;书房地毯已经很久没有打理需要打理了;小猫的指甲也差不多该剪了。在合适的时间提醒我除了把时间浪费在屏幕上,还可以做这样一些与现实产生联结、同时也能帮我把生活过得井井有条的小事。

所以这就是我花了两个周末写了一个叫做「干点啥」的小 App 的最初 motivation。

也是因为对 AI agent 和 SwiftUI 的好奇

如果要干,就要趁着这个契机,接触点自己不懂、好奇的东西。我从一开始就决定这肯定得是个基于 AI agent 的 App,不然上面这些非常灵活、甚至有时候具有一些创新性的推荐,肯定是不能通过规则枚举写出来的,得是一个 AI。

App 不仅得能够回应我的诉求,还要能够记录做过的事情,计划未来要做的事情,所以中间一定又会有很多数据持久化、增删改查的逻辑。我又不想花太多时间在这些细节上面(我一开始想要一个周末完成),所以我决定这个 app 本质上得是一个 AI agent:它来响应我的诉求,包括推荐事项、记录事项、修改事项、安排事项,所有这些这个 agent 都能干。

我今年以来已经在 OpenCode、Codex 之类的产品中领教了 coding agent 的厉害,又在一些办公 agent 里面领料了通用 agent 的厉害,但我还没有自己写过一个 agent。不过大体的概念是有的,包括基本的模型 API、tool call、agent 循环之类的基本知识具备。所以我摩拳擦掌地想要亲手实操一下以 chatbot 为交互界面、实现这么一个麻雀虽小五脏俱全的 agent。

我又想:做都做了,为什么不做一个原生 app 呢?

我常年是 Apple 生态忠实用户,从十年前就开始使用独立开发者们开发的 app。我一直对于写一个 iOS app 抱有浓厚的兴趣,也对一个 iOS 从开发到 TestFlight 到上架的全流程有很大的好奇。近几年 Apple 推的 SwiftUI,据说又把门槛拉低了不少(虽然也有很多吐槽)。此外还有一个吸引我的点:一个原生 app 有机会利用上 iOS 平台和生态的各种资源,比如 iCloud,Push Notification,健康数据等等,未来我可能也会想玩玩这些内容。

总之不管了,先买一台 MacBook Air —— 在 AI 的帮助下,给苹果缴纳 $99 手续费,开干吧!

但 MacBook Air 确实也买了一台,嗯。

来看看成品

其实很快我就做好了一个 web app 的版本,并火速发了朋友圈炫耀(😂),agent 这块没有借助已有的库,而是自己实现了一个简版,其实基本功能都有了。

决定做一个原生 app 之后,一周很快又过去了。这中间就是与 SwiftUI、SwiftData、CloudKit 的搏斗,以及在 web app 版本基础上增加了不少新的小巧思。

目前的成品是一个可以跑在 iPhone、iPad 和 Mac 上的跨平台 app。用户交互主要还是类似 chatbot 的形态,只不过除了聊天查资料这类 chatbot 自身能力外,着重于这个 app 的初衷:AI 辅助的事项推荐与管理。

深色模式也做了。历史会话、日历视图都有,最近的事项有浮窗显示。当然只作为 chatbot 使用也是完全没有问题的,支持联网搜索近期信息。

在 iPad 和 Mac 上用起来也不错(长得基本一样):

Mac 版本界面

所以还是成了一个 TODO App!?

我自己用了一段时间之后,惊觉这不又是一个 TODO list app!果然 iOS 开发的 hello world 一定是一个 TODO list app。

不过我又想了想,还是有本质的不同。这个 app 的目的不在于提醒人去做已经安排好的事,反倒是记录已经做过的事情,并且基于过去与现在,推荐一些可以进一步去做的事、去体验的东西。

好像有点微妙……反正就不是 TODO list app 啦(😡)!

如果有朋友也想玩玩这个小 app,可以把 Apple ID 邮箱发我,我拉你进 TestFlight 的内测组,有人数限制先到先得,需要自备 API key 来访问大模型服务以及使用联网搜索能力。 目前还没有开启 TestFlight 公测,也没正式上架,并且我也不确定有没有必要。