它替你解决的是三件事,不是三张表
记下来 · 看得出还剩多少 · 知道钱去了哪
说一句,几笔一起记
「中午星巴克拿铁三十二块,打车回家二十五块」——一句话拆成两张确认卡,金额、分类、商户一次带出。没听清金额就先成卡、再补金额,不会把你的话丢掉。
这个月还能花多少
给分类设月度预算,用到八成转黄、超了转红,同时告诉你「还剩多少」和「日均还能花」。红绿灯判的是净口径:退款抵扣之后的钱,不是流水总额。
钱到底去哪了
周期区间、跨年环比、净口径分类榜、商户榜(退款自动抵扣),全部在你这台设备上算出来。它不教你怎么活,只把这个月你实际花在哪摆出来。
按住说,或者打一行字
安卓版自带端侧离线语音模型,不联网也能识别;网页版用浏览器自带的识别服务,默认关着,不点麦克风一个字都不听。
先看确认卡,再决定记不记
拆成几笔、每笔多少钱、归哪类、哪家商户,全部摊在卡上让你改。记一笔 之前它不会自己写进账本。
记错了当场撤销
落账后给一条撤销;删账、改账都有历史。预算与红绿灯立刻重算,不用你手动对齐。
多笔拆分
一句话里的几笔各自成账;商户在整句里共享,但金额与物品逐个绑定,不会串到下一笔。
收入与退款
收入、退款、净支出三条口径分开算;榜单按净额排,退款自动抵扣到原商户。
统计多维
自定义区间、跨年环比、分类与商户榜、消费热力;跨设备也能只看一台设备上算得出的数。
分类你自己定
自定义分类、二级节点、明细页二级多选筛选;判类按支出/收入分开,不混用一棵树。
导出导入互通
JSON 与 CSV 两份导出,网页版导出的账可以原样导进安卓版,反之亦然。搬运的主动权在你手里。
下载不整包重下
安卓更新走分块并发:一次大失败切成几次小失败,坏哪块补哪块,每块按清单的 SHA-256 复核。
提醒与自动化
超支前本地提醒、每日简报、备份保鲜、应用锁与桌面小组件;这些需要系统能力,只在安卓版里。
双端同口径
判定逻辑一份 Dart、一份 ES Module,每次发布前用同一批黄金样例两边逐条比对,一词之差这一版发不出去。
界面长这样
以下三块是按真实界面画的示意,不是截图——不想让你拿示意图去核对像素。
今日页 · 红绿灯与还能花多少(示意)
确认卡 · 记之前每一格都能改(示意)
统计页 · 退款抵到净额再排(示意)
网页版现在能做什么(与安卓版对照)
这张表只写已经实现的能力。做不到的写在右边那一列,不提前承诺。
网页版和安卓版会算出不一样的钱吗
不应当。两边跑同一套判定逻辑,只是一个 Dart、一个 ES Module。发布前有一个脚本做三件事:把同一批黄金样例(含多笔连说、纯品牌词、中文数字与「万/w」这类金额写法)在两边各跑一遍逐条比对;把分类词表与品牌词表逐字对照 Dart 真源;把统计口径(周期区间、跨年环比、净口径、退款抵扣、红绿灯档位、连胜宽限天)在 JS 侧复述一遍。任何一词之差就变红,这一版发不出去。
所以如果哪天两边算得不一样,那是缺陷,不是「网页版和 App 本来就有差异」。发现了告诉我们,判据会补进那个脚本里。
隐私不是承诺,是几条能验证的事实
- 没有存你账本的服务器。站点是纯静态文件;网页版把账本写在你自己浏览器的本机存储里,App 写在你手机的本机数据库里。
- 没有账号,不做云同步。换设备只能靠你自己导出 JSON/CSV 再导入——格式与安卓版互通。
- 零外链、零埋点。这一页没有任何第三方请求,连一个统计脚本都没有;发布前脚本逐条拦外链写法与绝对路径。
- 语音默认关。网页版的语音输入用的是浏览器自带的识别服务,开启就意味着这句话交给浏览器的语音识别处理;不点麦克风,一个字都不听。
完整一条一条写在 隐私与数据 那一页:哪些数据落在哪、为什么网页版的数据会丢、备份怎么办、我们看不到什么。
下载与安装
安装包与更新清单在同一个仓库里:推一次就是站点、清单、整包、分块同时上线。
常见问题
装了提示「不允许安装未知来源应用」怎么办?
在系统提示里允许这一次安装即可(安卓对非应用商店分发的包的固定流程)。包只有 arm64 的 release 构建:老机型或 x86 模拟器装不上,那不是包坏了。当前发布用的是调试证书,装的时候系统可能提示来源不受信任——这一条我们不假装是正式商店签名。
网页版的数据会丢吗?
会。它存在这台浏览器的本机存储里,清理缓存、换浏览器、换设备都会拿不回来——这正是「服务器上没有你的数据」的代价。所以今日页有一条保鲜提醒:隔了 7 天没导出就提醒你把账本留一份。导出的 JSON,或「复制备份内容」粘进聊天收藏,都算存住了,之后能原样导回来。
要收费吗?有广告吗?
没有账号体系,没有付费点;页面里没有任何第三方请求,因此也不存在广告位与埋点。
为什么不把网页版做得和 App 一样全?
因为「全」要靠后端或靠装东西:AI 归类要调用模型,离线语音要下载几百 MB 的模型,提醒要系统通知,自动备份要后台服务。这些塞进浏览器里的静态页面,就等于把「账本不出你的设备」这条口径破掉。所以网页版只做本机确定性代码能做到的部分,其余如实写在上面那张表里。
在微信里点链接打不开怎么办?
微信内置浏览器会拦它不认识的域名。把链接复制到手机自带浏览器(或 Safari)里打开就行;网页版没有登录态,任何设备任何浏览器打开都是同一个入口,只是各自的账本互不相通。
以后怎么知道出了新版本?
网页版没有「要更新」这个状态:站点换了新版本,你下次刷新拿到的就是新的,不用装包、不会掉数据。安卓版的更新在 App 内完成(设置 → 关于与更新),本卡片与下载页显示的就是当前这一版——数字来自清单文件,我们不在页面上抄一遍。