用了三年 Beancount ,从 MoneyWiz 转过来的。 有一说一,Beancount 记账是爽,但 Fava 自带的预算展示真的是……一言难尽。
最受不了两点:
- 没法滚存:上个月省下的钱,下个月就归零了?这不科学。我想攒几个月的零花钱买个大件都看不出来。
- 太干巴:怀念 MoneyWiz 那种红红绿绿的进度条,一眼就能看出来这个月还能浪多久。
找了一圈没得趁手的,干脆自己动手。
最近 Vibe Coding 把这个 fava_budget_freedom 给搓出来了。
主要就为了解决这几个痒点
- 预算滚存 (Rollover):这是刚需。我在语法里加了个
rollover开关,上个月没花完的额度,自动累积到这个月。 - 进度条回归:简单粗暴,就是看图。带时间参考线,月过半,预算花了一多半,那就该剁手了。
- 兼容折旧摊销 (Amortize):如果你用
beancount_periodic.amortize做大额折旧摊销,这插件能自动识别,不会把分期生成的条目算进预算里,而是将一次性开支算进去,避免产生没怎么花钱的幻觉。

用法很简单,继续使用 fava 的 预算语法,扩展了一些:
; 1. 开启插件
2025-01-01 custom "fava-extension" "fava_budget_freedom"
; 2. 定义预算(支持通配符 *,这比原生的好用)
; 比如:每月吃的预算 2000 ,开启滚存(攒下的钱下月接着吃)
2025-01-01 custom "budget" "Expenses:Food:*" "monthly" "2000 USD" "rollover"
; 比如:房租(配合 amortize 插件用,自动处理分期逻辑,不重复统计)
2025-01-01 custom "budget" "Expenses:Home:Rent" "yearly" "12000 USD"
项目地址: https://github.com/Leon2xiaowu/fava_budget_freedom
代码属于 Vibe Coding 产物,主打一个能跑就行,功能反正我是用爽了。 各位 Beancount 道友如果也有预算焦虑,可以试一下。有 bug 欢迎提,或者直接 PR 帮我修修车。🙈