← 返回文章列表

技术与工程

从自用工具到开源项目:我做 Thingary 的这段过程

记账坚持不下来,又总想知道什么时候才能不用上班,于是我做了物谱。聊聊这个软件怎么一步步长出来,哪些地方返过工,以及最后为什么选择开源。

上班的时候,我经常想:到底什么时候才能不用上班?

以前我不怎么管钱,感觉每个月都赚了点,钱却花得很快,也不知道去了哪里。后来试过记账软件,每付一笔钱就要记一次,选分类、选时间、选付款账户。连自动识别账单的方式我也试了,还是嫌麻烦,坚持不下来。

我更想知道的是,钱有没有存下来,离不用依靠工资生活还有多远。最好像游戏一样,有一条进度条,看得到自己走到了哪里,上班也能多点动力。

后来,我给自己做了一个软件,叫 Thingary,中文名是物谱。

最早动手做的其实只是物品档案。账户盘点、目标规划,以及后来被删掉的养老和医保测算,都是一步步加进去的。回头翻 Git 记录,已经有了数百次提交。其中有不少地方,做的时候觉得应该这样,过一阵自己用起来,又改了主意。

物谱总览:账户净资产的历史变化与规划摘要

物谱的总览。本文三张图都是真实应用截图,使用虚构样例资料,点击可查看原图。

先把买过的东西记下来

决定自己做之前,我也找过现成的软件。

记资产、记物品的 App 都用过一些。有的要买会员,但提供的分析比较简单,没回答我最关心的问题。国外也有开源工具,不过我当时找到的那些,对公积金、房贷这些国内的情况照顾得不够。既然没有特别合适的,自己也有开发工具可用,就试着做一个。

一开始的范围还比较小:先做一个自己用的中文 Mac 应用,整理物品。那时连名字都还叫 Possio。前面花了一些时间讨论产品和流程,看不同的界面方案,再开始实现。

我记了手机、Mac、Mac mini,还有一套相机。放到一起看,才发现相机其实没怎么用。购入价格、持有时间和每天摊下来的成本摆在那里,很容易让人重新想想当初为什么要买。

物品列表与选中物品的摘要,价格和日期不记得时可以留空

记下买过的东西,也看看哪些已经闲置了。

放得越久,平均每天的成本自然越低。相机有没有用起来,我自己最清楚。这个数字对我的作用,主要是提醒我回头看看这些东西。

录资料也得省事。买了多久、花了多少钱,有些还能找到订单,有些已经记不清了,所以价格和日期都允许先留空。先把东西记进去,想起来再补,比一上来要求填完所有信息容易坚持。

钱慢慢也放了进来

后来,物谱开始有账户、余额、负债和盘点记录。打开各个银行、券商的 App,把余额抄过来,就能看这段时间家底增加了多少。

我自己大概半个月到一个月盘一次。这个频率能接受,每次只花一点时间。以前记账总是在一笔笔付款之后慢慢放弃,现在隔一段时间集中看一次,反而能继续做下去。记录多了,就有了一条自己的家底曲线。

接下来很自然就想往前看:每个月按现在的速度存钱,什么时候能不靠工资?想买个大件,会把时间往后推多久?如果歇一阵,现有的钱能撑多久?

我试过把在北京买房放进规划里,曲线直接变成了负数,压力一下就上来了。至少按当时填的那组条件,原来的安排走不通了。

这类试算对我挺有用。一个平时只在脑子里想想的决定,放进数字里,就能看到它会影响哪些地方。每月多存一点,买一件东西,以后两个人一起赚、一起花,结果都会变。预测也会随着这些条件变化,但我对自己现在的积累和开销,开始有了更具体的感觉。

也正是从这里开始,功能越加越多。

养老和医保,做了一圈又删掉

想算什么时候可以不上班,很快就会碰到养老和医保。

提前停下来以后,还要不要继续缴社保?什么时候开始领养老金?医保年限够不够?这些都会影响后面要花的钱。我当时觉得,既然是面向国内使用的软件,就应该把这些情况考虑进去,于是继续往下做。

最开始像是给计算多加几个输入框。真正做进去以后,问题一个接一个冒出来。

首先,停止工作、停止缴费、开始领取养老金,是三个不同的时间。人可以提前不工作,后面还继续缴费,再过几年才开始领钱。如果只把将来能领的钱加进去,中间要自己掏的缴费漏掉,结果就会算得太乐观。

补上缴费又有新问题:这笔钱已经包含在生活费里了吗?还是要额外支付?由自己承担,还是别人承担?同一笔钱不能扣两遍,不知道金额时也不能按零算。原本一个“每月生活费”,慢慢拆出了不少需要确认的情况。

养老金本身也在越算越细。历史缴费、不同参数怎么取、计算中间怎么取整,都做过核对,还找过外部测算结果来比较。有几组数字能对上,接下来又会遇到别的情况需要查。持续做下去,就意味着要长期维护这些规则,也要让使用者取得并填写对应的资料。

医保那里有个问题,我觉得很能说明这种复杂度。用户已经填了缴费记录,页面却还在让他“补充资料”。仔细看,缺的是适用的政策条件。记录填没填、当地要求是什么、最后够不够,原来是三件事,被挤进了同一个提示里。于是又要改页面,让人看懂到底还差什么。

做到这一步,我开始重新考虑:一个用来定期盘家底的软件,真的需要把这些都包下来吗?用户本来只是想看看以后够不够花,现在却要先弄懂一堆专业参数。我自己之后也得持续核对和更新。

最后,我决定把内置的养老、医保政策测算删掉。

现在物谱保留官方工具的入口,需要的人可以在那里测算,再把预计每月能收到多少钱、从什么时候开始收到,填回自己的计划里。物谱继续算整体的资金安排。前面那些政策测算,已经成了开发历史的一部分。

删功能也有后续工作。账户和盘点记录要保留,已经记下的收入不能丢;个人养老金、公积金账户仍然是自己的资产,当然还得留着。依赖旧测算的计划,则要重新填写相关条件。不能只是把页面移除,就算处理完了。

回头看,这部分花了不少功夫,从增加功能走到主动删除。它也让我以后再想加东西时,会多想一步:这些资料,过几个月我还愿不愿意维护?使用者能不能自己弄明白?

做出来以后,还得自己用

AI 参与了物谱大量的实现工作。一个想法提出以后,很快就能看到页面。

不过,页面出现得快,我也得反复去用。有些问题看着界面想不到,真正操作几次才觉得别扭。

目标页改过好几轮。其中一次,输入条件和结果上下排列,改完条件要往下滚,看完结果想再调,又得滚回去。我希望它回到左边放条件、右边看结果的布局,边改边对照。

物谱目标页:左侧调整条件,右侧查看结果与资产轨迹

左边改条件,右边看变化。这个布局方便来回试几组不同的安排。

侧边栏也做过一层“常用”和“全部”的区分。但功能本来就没多到需要这样整理,反而多了一层要理解的东西。后来又改成直接列出开启的功能,暂时用不到的去设置里关掉。

有些改动更小。比如盘点时,一个账户余额没变,再抄一遍就很麻烦,于是增加了“与上次相同”。但应用也不能因为我没填,就擅自沿用上次的数字:没填可能是还没查,点过确认才表示这次核对了。

页面上的词也一直在改。开发过程中觉得很准确的术语,放在界面上未必好懂。我希望打开以后看到的是“每月还要存多少”“歇一阵能撑多久”,能直接对应自己想问的问题。

这些调整里有一部分还在开发版,后面会继续更新。AI 能很快做出不同方案,最后留哪个,还是要通过使用来决定。

导入成功了,备份却做不了了

有一次修复,光看导入页面还真发现不了。

通过表格导入已经卖出的物品,记录可以正常出现,但接下来做备份就会失败。手动备份不行,自动备份也不行,连恢复之前的保护备份都过不了。界面只报一个笼统的“本地数据操作失败”。

原因是导入时少保存了一份后续校验需要的信息。前面的操作看起来已经完成,问题到了备份时才暴露出来。修复除了补上新导入的处理,也要修好已经产生这种缺项的旧资料。

那一轮还补了升级前自动备份数据库。软件会继续改,自己放进去的记录却是要一直留着的。导入、备份、恢复和升级得连着试,单独看某个按钮有没有反应,很容易漏掉问题。

所以测试时,我会用单独的资料库和虚构数据来试,免得拿日常记录冒险。界面在浏览器里看过以后,保存、重启、文件选择这些操作,也还要回到真正的桌面应用里走一遍。

想过收费,最后还是开源了

做的过程中,我也考虑过把物谱做成付费软件。

按我当时的调研,iOS 上相关产品已经比较成熟,桌面端选择少一些。尤其是适合国内使用习惯、能把资产和养老规划放在一起看的,我没有找到特别合适的。

但仔细想想,愿意在电脑前定期盘点家底、调整长期规划的人,本来就是一个比较小的群体。桌面端竞品少,可能也和这个需求有关。再考虑付费意愿,我觉得这个方向很难做成一门付费生意。

我自己还想继续用,也希望让更多人看到我做的东西,还不如开源。有类似需求的人可以直接用,觉得哪里不合适,也可以接着改。我用过别人的开源工具,把自己做的东西分享出来,也挺自然。

公开以后,还要补上很多自己用时不太在意的事情。

最初只想着在自己的 Mac 上装好,后来又要考虑不同芯片的 Mac、Windows,以及别人第一次安装时会遇到什么。文件选择、通知、窗口大小、备份目录的权限,都在适配过程中改过。帮助文档和介绍视频也得做,不然别人下载以后,可能连从哪里开始都不知道。

为方便国内下载,我还加了 Gitee。同步版本也出过问题,后来改成两边放同一批安装包,并检查下载回来的文件是否一致。同步失败就补同步,不用为了再传一遍文件重新打包。

从自己装着用,到让别人也能用上,中间这些事情都得有人做。开源以后,它们也成了我维护物谱的一部分。

现在,我还是隔一阵盘一次

做了这么多,回到我自己使用时,其实还是很简单:隔半个月到一个月,更新一下余额,看看最近有没有存下钱。有想买的东西,或者对以后的生活有了新打算,再放进去试试。

物谱还在公开测试,也还有不少可以改的地方。但它已经让我更愿意回头看自己的积累、买过的东西,以及接下来想怎么生活。

最初那个“什么时候才能不上班”的问题,还会继续想。至少现在,想到它的时候,有一份自己的记录可以打开看看了。


物谱目前支持 Mac 和 Windows,开源免费。可以在产品网站下载,也可以先看B站介绍视频。源码在 GitHub。