本机记账 · 不联网也算

说一句,记一笔。
钱花在哪,这台机器自己算给你看。

语音或打字记一笔,一句话里几笔自动拆开;分类预算给到红绿灯,判的是退款抵扣之后的净口径;周期区间、跨年环比、分类榜与商户榜全部在你这台设备上算出来。没有账号,没有服务器上的你。

按钮上的版本号、大小与校验值都从同目录 updates/version.json 现读——这一页的源码里一个版本号都不写,所以它不会在下一次发版之后开始说谎。看不到数字,就是这个镜像没有安装包,下面那段会说清是哪一种。

账本在你设备里网页版写本机浏览器存储,App 写本机数据库;站点是纯静态文件,没有存你账本的服务器。
零第三方请求这一页和网页版都不引外部字体、CDN、图片与统计脚本;发布前有脚本逐条拦外链写法,不合规就不出包。
免注册 · 无广告没有账号体系,没有付费点,也没有可以放广告的位置——页面里没有任何第三方请求。
安装包正在从清单读取大小与分块数…

它替你解决的是三件事,不是三张表

记下来 · 看得出还剩多少 · 知道钱去了哪

说一句,几笔一起记

「中午星巴克拿铁三十二块,打车回家二十五块」——一句话拆成两张确认卡,金额、分类、商户一次带出。没听清金额就先成卡、再补金额,不会把你的话丢掉。

这个月还能花多少

给分类设月度预算,用到八成转黄、超了转红,同时告诉你「还剩多少」和「日均还能花」。红绿灯判的是净口径:退款抵扣之后的钱,不是流水总额。

钱到底去哪了

周期区间、跨年环比、净口径分类榜、商户榜(退款自动抵扣),全部在你这台设备上算出来。它不教你怎么活,只把这个月你实际花在哪摆出来。

按住说,或者打一行字

安卓版自带端侧离线语音模型,不联网也能识别;网页版用浏览器自带的识别服务,默认关着,不点麦克风一个字都不听。

先看确认卡,再决定记不记

拆成几笔、每笔多少钱、归哪类、哪家商户,全部摊在卡上让你改。记一笔 之前它不会自己写进账本。

记错了当场撤销

落账后给一条撤销;删账、改账都有历史。预算与红绿灯立刻重算,不用你手动对齐。

多笔拆分

一句话里的几笔各自成账;商户在整句里共享,但金额与物品逐个绑定,不会串到下一笔。

收入与退款

收入、退款、净支出三条口径分开算;榜单按净额排,退款自动抵扣到原商户。

统计多维

自定义区间、跨年环比、分类与商户榜、消费热力;跨设备也能只看一台设备上算得出的数。

分类你自己定

自定义分类、二级节点、明细页二级多选筛选;判类按支出/收入分开,不混用一棵树。

导出导入互通

JSON 与 CSV 两份导出,网页版导出的账可以原样导进安卓版,反之亦然。搬运的主动权在你手里。

下载不整包重下

安卓更新走分块并发:一次大失败切成几次小失败,坏哪块补哪块,每块按清单的 SHA-256 复核。

提醒与自动化

超支前本地提醒、每日简报、备份保鲜、应用锁与桌面小组件;这些需要系统能力,只在安卓版里。

双端同口径

判定逻辑一份 Dart、一份 ES Module,每次发布前用同一批黄金样例两边逐条比对,一词之差这一版发不出去。

界面长这样

以下三块是按真实界面画的示意,不是截图——不想让你拿示意图去核对像素。

今日页 · 红绿灯与还能花多少(示意)

确认卡 · 记之前每一格都能改(示意)

统计页 · 退款抵到净额再排(示意)

网页版现在能做什么(与安卓版对照)

这张表只写已经实现的能力。做不到的写在右边那一列,不提前承诺。

能力安卓版网页版
说一句话记账,多笔自动拆分✓✓
确认卡 · 编辑 · 删除后撤销✓✓
分类预算与今日红绿灯(净口径)✓✓
收入与退款 · 净支出与净口径榜单✓✓
统计:周期区间、跨年环比、分类榜、商户榜✓✓
明细搜索与分类、二级多选筛选✓✓
自定义分类✓✓
记账连胜与备份保鲜提醒✓✓
导出 JSON/CSV,与对方导入互通✓✓
端侧离线语音模型(不联网也能识别)✓用浏览器自带的识别服务,需联网且默认关
AI 归类兜底、洞察润色、智能问账✓目前只在安卓版
负债与房贷/车贷测算、净资产快照、储蓄目标✓目前只在安卓版
成就与预警、洞察中心、消费决策与教练台✓目前只在安卓版
本地通知提醒、每日自动备份、应用锁、桌面小组件✓需要系统能力,浏览器里做不到

网页版和安卓版会算出不一样的钱吗

不应当。两边跑同一套判定逻辑,只是一个 Dart、一个 ES Module。发布前有一个脚本做三件事:把同一批黄金样例(含多笔连说、纯品牌词、中文数字与「万/w」这类金额写法)在两边各跑一遍逐条比对;把分类词表与品牌词表逐字对照 Dart 真源;把统计口径(周期区间、跨年环比、净口径、退款抵扣、红绿灯档位、连胜宽限天)在 JS 侧复述一遍。任何一词之差就变红,这一版发不出去。

所以如果哪天两边算得不一样,那是缺陷,不是「网页版和 App 本来就有差异」。发现了告诉我们,判据会补进那个脚本里。

隐私不是承诺,是几条能验证的事实

  • 没有存你账本的服务器。站点是纯静态文件;网页版把账本写在你自己浏览器的本机存储里,App 写在你手机的本机数据库里。
  • 没有账号,不做云同步。换设备只能靠你自己导出 JSON/CSV 再导入——格式与安卓版互通。
  • 零外链、零埋点。这一页没有任何第三方请求,连一个统计脚本都没有;发布前脚本逐条拦外链写法与绝对路径。
  • 语音默认关。网页版的语音输入用的是浏览器自带的识别服务,开启就意味着这句话交给浏览器的语音识别处理;不点麦克风,一个字都不听。

完整一条一条写在 隐私与数据 那一页:哪些数据落在哪、为什么网页版的数据会丢、备份怎么办、我们看不到什么。

下载与安装

安装包与更新清单在同一个仓库里:推一次就是站点、清单、整包、分块同时上线。

正在读取安装包…
版本
—
Build
—
大小
—
MD5
—
分块
—

装不上、只有安卓八倍以上、想核对文件是不是这一版、或者想把备用更新地址填进 App——都在 下载与安装 那一页写清了。

常见问题

装了提示「不允许安装未知来源应用」怎么办?

在系统提示里允许这一次安装即可(安卓对非应用商店分发的包的固定流程)。包只有 arm64 的 release 构建:老机型或 x86 模拟器装不上,那不是包坏了。当前发布用的是调试证书,装的时候系统可能提示来源不受信任——这一条我们不假装是正式商店签名。

网页版的数据会丢吗?

会。它存在这台浏览器的本机存储里,清理缓存、换浏览器、换设备都会拿不回来——这正是「服务器上没有你的数据」的代价。所以今日页有一条保鲜提醒:隔了 7 天没导出就提醒你把账本留一份。导出的 JSON,或「复制备份内容」粘进聊天收藏,都算存住了,之后能原样导回来。

要收费吗?有广告吗?

没有账号体系,没有付费点;页面里没有任何第三方请求,因此也不存在广告位与埋点。

为什么不把网页版做得和 App 一样全?

因为「全」要靠后端或靠装东西:AI 归类要调用模型,离线语音要下载几百 MB 的模型,提醒要系统通知,自动备份要后台服务。这些塞进浏览器里的静态页面,就等于把「账本不出你的设备」这条口径破掉。所以网页版只做本机确定性代码能做到的部分,其余如实写在上面那张表里。

在微信里点链接打不开怎么办?

微信内置浏览器会拦它不认识的域名。把链接复制到手机自带浏览器(或 Safari)里打开就行;网页版没有登录态,任何设备任何浏览器打开都是同一个入口,只是各自的账本互不相通。

以后怎么知道出了新版本?

网页版没有「要更新」这个状态:站点换了新版本,你下次刷新拿到的就是新的,不用装包、不会掉数据。安卓版的更新在 App 内完成(设置 → 关于与更新),本卡片与下载页显示的就是当前这一版——数字来自清单文件,我们不在页面上抄一遍。