近 15 年、37374 条流水,我用 AI 重建了一本账
这坑爹的项目总算做完了。
半个多月没更新了,除了工作忙之外(特么的苦命牛马工作又忙又碎),还有个就是我把自己近15年的财务流水全梳理了一遍,让AI帮我分析了一桶。事情的起因,是7月底手动在补从4月中断到当时的记账明细。补着补着,突然想到可以让AI执行。刚开始用 Obsidian 的时候,找了一个 Ledger 插件(使用复式记账法,据说可以更好地了解资金是怎么流动的)记录了一段时间。工作一忙,断了一阵;想继续时,又觉得中间缺的账太多,补起来麻烦,遂放弃。后来心血来潮,又想捡起来重新记录。那时插件原作者已经停更,我还让 AI 在原来的基础上补了一些报表功能,跌跌撞撞把它弄到“好像可以用”的程度。从去年 11 月开始,重新记录收入和支出。春节回家、工作变忙,中间断了一个多月。我手动看账单补过一次(补了一个多月的数据),后来又忙起来,记录再次停了。到今年 6 月,我又想把它捡回来,但一直拖到 7 月底才真正开始补。但这时候问题有点大条了:从4月中断到7月底,虽说只有三四个月,但不同账户的记录找起来,还要查漏补缺,纯人工来干,这事儿太傻逼了。我又不是为了把每天的账记得很漂亮,只是单纯想知道“钱是怎么被花出去的”,方便让AI给自己一些财务建议。而且这种繁复性的工作,交给AI来干不是更合适?我的收入主要是工资,支付以支付宝为主,平时会用两张信用卡,微信支付用来处理一些支付宝覆盖不到的场景。购物主要在京东、淘宝、拼多多、美团,线下消费也多半是支付宝扫码。从资料情况看,这件事似乎没有想象中困难:信用卡账单还留在邮箱里一部分,银行流水可以从 App 导出,支付宝和微信也都能导出明细。那流程就很明显了:先把借记卡这种账户流水弄出来,然后搞定信用卡账单,用AI记录到excel里面,然后汇总、分析,最后按照Ledger的格式写到文件里。后面想怎么分析,让AI直接读取这个文件就行。信用卡早期账单需要在 App 里申请补发,而且一次只能申请一年,还要等一段时间(页面提示24小时,实际上都要等到第二天0点才发邮件)。AI 经常提示缺少某个月的账单,我有几次又重复导出,后来看APP流水记录才发现,有些月份根本没有发生交易,并不是账单漏了(感觉自己好傻逼)。借记卡也不止一张。换过几次工作,就换过几张工资卡,需要分别登录不同的银行 App 导出(而且有一张卡时间太长过期了,换卡后卡号换了,结果之前的记录无法导出,只能截图)。信用卡账单通常是邮件正文AI可以直接读取,借记卡则多是一份带密码的 PDF,还要回到申请记录里找密码。申请年份越多,这件事越像是在做资料整理,而不是记账。支付宝和微信的流水也要单独导出。支付宝还好,明细备注很清晰,看备注大体能猜到用在什么地方;微信会把收发红包也算进去,哪怕只有 0.01 元,记录数量也会迅速增加;而且很多微信支付都是针对个人,不知道是那个路边小摊买瓶水还是什么记录。更麻烦的是,同一笔消费可能在不同地方出现多次。支付宝里用信用卡付款,这笔消费既会出现在支付宝流水里,也会出现在信用卡账单里。如果直接把所有记录相加,结果不是我的消费,而是同一笔消费被计算了两遍。所以第一步不是分析,而是把所有可能找到的原始资料先收集起来:邮箱、PDF、支付宝、微信、银行卡,还有以前手动记过的账。流水数据收集得差不多以后,我让 AI 先把账户流水汇总,再进行数据合并和清洗。除了跨渠道重复,还要区分退款、信用卡还款、账户互转、充值、提现、手续费、利息、基金投资、贷款本金,以及那些已经无法从摘要中判断用途的记录。后来仔细看处理底稿,才弄清楚这不是一个单纯的“待确认列表”。第一轮真正还没有进入候选账本的是 16,264 条来源记录;“两万多”是后面候选经济事件达到的规模,不是两万多条都要我逐条确认。原本以为把账单交给 AI,剩下的就是分类;现在看来,真正麻烦的是先把这些记录一笔笔配对、排除和归类。能拆分的就拆分,能通过不同账户互相验证的就交叉验证;一轮不够,就继续下一轮,必要时拆成更小的任务并行处理。这个过程持续了十六轮以上(开始还没注意,后知后觉,Token在燃烧)。每一轮都会减少一部分模糊记录,也会暴露新的问题:一笔退款的方向错了,同一笔还款被算成了消费,某些账户之间的转账被误认成收入。好歹每跑一轮,待确认的数量都在下降,最后降到了可以手动处理的范围。一个是命令运行卡住,这个问题跑其他任务都会出现。当时AI的判断是,可能因为数据量太大,内存扛不住:还有就是数据导入。已经注销的卡没有明细,截图又太麻烦,只能是在电脑上打开手机镜像,然后让AI读取页面截图;AI还要求每次都有停顿,实际上执行比较麻烦会偷懒,而且从效果来看并没有达到预期,最后还是手动截图完成的。从一开始,我就要求把原始数据、汇总数据和处理后的数据分开保存。这样即使处理结果出了问题,也可以回到原始资料重新核对。中间我也会随机抽查,找几十条记录,看日期、金额和类别是否合理。很多早年的交易我已经记不清了,所以不可能要求每一笔都恢复当年的完整语境;但类别明显不对、同一笔钱被重复计算,这些问题必须处理掉。否则后面的分析建立在错误数据上,得到的就不是建议,而是噪音。最后,AI 把这些资料整理成了一本可以继续使用的复式账本。以数据截止到 8 月 13 日、8 月 17 日复核的事实报告为准,原始来源有 37,374 条,正式账本有 24,936 笔复式交易,整个过程 AI 实际运行了 25 个多小时。早些年我主要使用现金。现在能找到的,很多只是取现记录;钱从 ATM 取出来以后,具体花到哪里,已经没有办法补回来了。微信里也有不少“转给某某”的记录,能知道钱转出去了,却不知道当时究竟买了什么。结果就是:账目梳理了,但细节想不起来了哈哈哈哈哈哈哈哈哈过程麻烦,而且好像没什么特别的意义,中途都甚至想放弃算球了。但就是不甘心:我倒是想把所有的流水都汇总出来,看看AI最后能得出一个什么不一样的结论。到最后也在反思:这么麻烦和耗时的情况下,记账到底是不是一个必要的动作?过去的记账 App,大多要求人在消费之后再做一步:选时间、填金额、选账户、写备注。这个动作看起来不大,但只要中间因为工作忙、旅行或者过节停几天,后面就很难再有动力把缺口补上。我使用过几款记账 App,最长也只坚持了两三个月,后面因为各种原因一断,基本就很难捡起来。如果只是想了解自己的财务趋势,也不一定非要追求十几年一笔不漏。早年的现金记录和模糊明细,即使花很大力气,也未必能得到有意义的结果。现在回头看,最近三年、五年的记录,对我来说已经差不多够用了。至于 AI,它确实完成了我原本想让它完成的工作:把分散在不同地方的账单和流水整理起来,形成可以继续分析的账本。但它没有办法补回现金消费,也不能替我确认那些已经失去描述的明细。数据是否准确,仍然需要我在关键位置做确认。