← 工作方式
日常使用中 个人项目 · 2026

可导入银行流水的 AI 记账应用

过去每隔几天,我就要花 30 到 60 分钟手动记账。于是我开发了一款应用:它读取银行流水,让 AI 为每笔付款选择类别,再请我逐行检查。它还会告诉我的女朋友她欠我多少钱。

我的角色
我设计了这款应用,并决定它如何使用 AI。代码由编程智能体 Claude Code 和 Codex 编写,受我设定的规则和检查约束。
状态
我从 2026 年 4 月起每天使用它。代码不公开,所以由一段使用示例数据的演示视频来展示它的实际运行。
技术栈
Android、经由我的私有 AI 网关调用的 Claude、Telegram Bot API、用于备份和更新的 GitHub
规模
两年间约 1000 笔交易,包括我从旧应用迁移过来的历史记录

问题

我的开户银行 Toss Bank 以设有密码的 Excel 文件提供流水。每一行都有日期、金额和简短的商户名称。

我想知道钱都花在了哪里,而且我和女朋友有很多共同开销。所以每隔几天,我都要把这些行复制到一款预算应用里,为每一行选择类别,再算出她应付的那一份。

发展历程

我从小处做起。2026 年 4 月,我用两天时间做了一个 Telegram 机器人。后来,它变成了一个 Telegram Mini App,也就是运行在 Telegram 里的小型网页应用,并加入了 AI 导入功能。2026 年 6 月,它变成了我现在使用的 Android 应用。

一次导入的流程

  1. 打开流水 应用在手机上用已保存的密码打开银行的 Excel 文件。
  2. 读取数字 代码读取每一行的日期、金额和商户名称。AI 从不设定金额。
  3. 匹配收据 对于 Coupang(一家韩国网上商城)的订单,应用会找到订单邮件,并补上商品名称。
  4. AI 选择类别 Claude 从一份固定的类别列表中选择。我为熟悉的商户设定的规则优先。
  5. 我逐行检查 我标记由谁付款:I Pay Full(我付全款)、Half(各付一半)或 She Pays(她付)。我可以修改任何字段,也可以跳过某一行。
  6. 保存并通知 这些行保存在手机上,我的女朋友会收到一条 Telegram 消息,里面写着她应付的总额。
  • AI 出错时由本地规则为各行分类,并有提醒说明原因
  • 备份一个私有 GitHub 仓库,每次更改后都会更新
  • 更新来自 GitHub Releases 的已签名应用更新
一份银行流水从文件变成已保存支出的过程。虚线步骤只在开启邮件查找时运行。

示例:一行流水的处理过程

  1. 银行文件中的这一行 2026-09-23 11:52 · 쿠팡(쿠페이)_KCP · −12,800 KRW
  2. 匹配收据之后 쿠팡(쿠페이)_KCP — A4 복사용지 500매 订单邮件写明了商品:一包 A4 复印纸。
  3. 代码读取的内容,以及 AI 补充的内容
    • date: 2026-09-23
    • amount: −12,800 KRW
    • type: expense
    • category: Paperwork › Printing & scanning
    前三项由代码填写。AI 只选择类别。
  4. 我点了 Half,Telegram 消息随即发出 2026-09-23 11:52 - 쿠팡(쿠페이)_KCP — A4 복사용지 500매 [Printing & scanning] - 6,400 KRW (total: 12,800 KRW)
取自应用示例数据的一行虚构记录,用来演示各个步骤。

设计决策

  • 数字交给代码处理。有一次,AI 把我的账户余额当成了收入。现在,每一笔金额和日期都由代码读取,金额的正负号决定这一行是收入还是支出。AI 只选择类别,所以它改变不了任何总额。
  • 更好的输入胜过更好的提示词。Coupang 的扣款在流水上看起来几乎一模一样,所以任何提示词都没法把它们分好类。把每笔扣款与对应的订单邮件匹配之后,AI 就拿到了真实的商品名称。只有当收据的总额与扣款金额相等,并且邮件与扣款的时间相差不超过两小时,这张收据才算数。
  • 我的规则优先。我为熟悉的商户设定的规则,总是优先于 AI 的选择。
  • 绝不静默失败。如果 AI 调用失败,或者它给出的类别不在列表里,就由本地规则为这些行分类,并有提醒说明原因。如果某一行怎么也分不了类,它会保持为“Unknown”(未知),等我来修正。
  • 决策来自真实数据。退款过去会被算作收入。在我自己的流水中,17 笔 Coupang 退款里有 10 笔恰好只对应一笔之前的扣款。所以现在,应用会自动把这些退款从对应的那笔购买中扣除,其余的留给我手动匹配。
  • 默认保护隐私。数据保存在手机上。导入时,只有流水的文本会经由我自己的网关发送给 AI。备份存放在一个私有 GitHub 仓库中,从不包含密码或令牌。

实际演示

在 YouTube 上观看 12 分钟的演示视频 视频展示的是应用的演示模式,只使用示例数据。

截图来自应用的演示模式,其中只有示例数据。

结果

  • 40–100 小时每年节省的时间,据我自己估算
  • 约 1000 笔已记录的交易,涵盖两年的历史
  • 每日自 2026 年 4 月起一直在用

过去,每次更新要花 30 到 60 分钟。现在,一次导入只要 5 到 10 分钟。

按类别看清自己的支出,也帮我省下了钱。

这款应用的代码不公开。视频和截图展示的都是演示模式,它使用示例数据运行。