跳转到主要内容
Beancount 对比 hledger

两款优秀的纯文本账本 —— 选择适合你的生态

Beancount 和 hledger 共享相同的理念:你的账簿以纯文本形式存在,你可以用 Git 阅读、比对和版本控制 —— 永远没有锁定。真正的问题是哪种更适合你:Beancount 的严格模型和 Web 生态系统,还是 hledger 快速、功能齐全的命令行。

  • 两者都免费且开源
  • 纯文本 + Git
  • 永远没有锁定
beancount.io 账本仪表盘,显示净资产趋势图和账户余额
Beancount 移动应用首页,显示净资产图表和近期交易
100%
开源 —— 两个项目都是
纯文本
30年后你仍能读懂的账本
严格
Beancount 在解析时强制平衡
随时随地
beancount.io 提供托管、同步和 AI 功能

相同理念,不同生态

两者都是纯文本复式记账账本,可以用 Git 进行版本控制。区别在于契合度:严格的模型配合 Web 生态,或者快速、自包含的命令行。

Beancount

严格的老师

账户必须显式声明,每笔交易必须平衡,批次和成本基础是一等公民。错误在解析时就会暴露 —— 在影响你的报告之前。

hledger

宽容的朋友

hledger 兼容 Ledger 的格式,可以动态创建账户,甚至能推断平衡分录。上手更快,纪律性取决于你自己。

Beancount

Fava,一个完整的 Web UI

在 Fava 精美的仪表盘中探索你的账簿 —— 交互式图表、报表、持仓和 BQL 查询控制台 —— 并有 bean-check 验证每次编辑。

hledger

命令行利器

丰富的内置终端报告、hledger-ui TUI 和 hledger-web 用于轻量级浏览和录入 —— 无需额外服务。

Beancount

Python、插件和 BQL

用 Python 编写导入器和插件,用类似 SQL 的 BQL 查询分录。自动化存在于可审查、可测试的代码中。

hledger

规则和 Shell 管道

声明式 CSV 导入规则和可组合的 CLI 命令可直接融入 Unix 管道 —— 快速自动化,无需 Python。

Beancount

严格的批次和成本基础

每种货币或证券都公开携带单位、成本和价格 —— 精确的资本利得和多币种跟踪,可逐行审计。

hledger

更简单的商品处理

hledger 以更温和的模型覆盖日常多币种和简单的投资跟踪 —— 足以满足许多个人投资组合。

Beancount

随时随地访问你的账簿

自行托管 Fava,或让 beancount.io 处理托管,包括银行同步、原生移动应用和帮助分类和草拟分录的 AI 助手。

hledger

单一二进制,完全本地化

安装一个预构建的单一二进制文件,你的账本保留在你的机器上。hledger-web 覆盖移动浏览器;无需依赖云账户。

Beancount

核心免费,可选托管

Beancount 和 Fava 永远免费。可选的 beancount.io 计划增加托管、同步、移动和 AI 功能 —— 无论哪种方式,账本都是可移植的。

hledger

完全免费

hledger 的所有功能 —— 报告、TUI、Web UI、CSV 导入 —— 都免费包含在一个工具中。没有付费层级;也不需要。

hledger 仍然胜出的地方

同一家族,诚实对比:当你想要一个快速、自包含且能从单一二进制文件完成所有工作的工具时,hledger 是更好的选择。

开箱即用的报告

资产负债表、损益表、现金流量表和多期对比都是内置命令 —— 无需 Web 服务器、无需查询语言、无需设置。

速度极快

用 Haskell 编写,hledger 瞬间启动,并在处理大型账簿时保持快速 —— 每秒处理数万笔交易,内存占用适中。

内置 CSV 导入

声明式规则文件将银行 CSV 导出转换为整洁的日记分录 —— 无需编写或维护 Python 导入器。

无需额外运行任何东西

没有数据库、没有服务器、没有账户。一个二进制文件加上你的文本文件就是整个堆栈 —— 备份、同步和移动都非常简单。

完整对比

逐项对比,没有营销话术。

数据模型

Beancount
严格且显式 —— 声明的账户、强制平衡、批次和成本基础
hledger
灵活且宽容 —— 兼容 Ledger,账户动态创建

主要界面

Beancount
Fava Web UI、CLI 验证、编辑器工具
hledger
内置 CLI 报告、hledger-ui TUI、hledger-web

性能

Beancount
基于 Python;v3 增加了 C++ 核心以提高速度
hledger
Haskell —— 速度非常快,即使在非常大的账簿上也是如此

报告

Beancount
交互式 Fava 图表加类似 SQL 的 BQL 查询
hledger
丰富的内置终端报告和多期视图

导入

Beancount
Python 导入器生态;beancount.io 上的托管银行同步
hledger
使用声明式规则文件的内置 CSV 导入

投资

Beancount
严格的批次、成本基础和多币种
hledger
适用于日常投资组合的简单商品处理

设置

Beancount
需要 Python;显式的账户声明
hledger
单一预构建二进制文件;宽容的解析器

移动端

Beancount
原生 beancount.io 应用;Fava 的响应式 Web UI
hledger
移动浏览器中的 hledger-web;第三方应用

查看你的完整财务状况

Web 仪表盘、BQL 查询和原生移动应用 —— 背后都是一个纯文本账本。

净资产仪表盘
净资产仪表盘
损益表
损益表
日记账 —— 每条分录,以纯文本形式
日记账 —— 每条分录,以纯文本形式
BQL 查询控制台
BQL 查询控制台
首页 —— 净资产一目了然
首页 —— 净资产一目了然
账户
账户
交易
交易
报告 —— 收入、支出、利润
报告 —— 收入、支出、利润
几秒钟内添加一笔交易
几秒钟内添加一笔交易
收据采集
收据采集

两者都免费 —— 选择你的生态

两个项目都不对软件收费,并且都让你的账簿以纯文本形式存在。选择的是工作流程,而不是钱包。

Beancount

免费
开源,永远
  • Beancount + Fava:$0,自行托管
  • 可选的 beancount.io 计划,提供托管、银行同步、移动和 AI 功能
  • 无论你取消什么,你的纯文本账本都能继续工作

hledger

免费
开源,永远
  • 完整的工具包 —— CLI、TUI 和 Web UI:$0
  • 内置报告和 CSV 导入,无需额外添加
  • 一个二进制文件加一个文本文件 —— 没有账户,没有服务器

两者都试试 —— 切换成本很低

两个账本都是纯文本,因此你的数据永远不会被锁定。用相同的交易样本测试每个账本,然后投入 —— 或者两者都保留。

  1. 1

    从一个真实月份开始

    在两个工具中输入相同的近期交易:导入一张报表,对账,并在每个工具中生成你最重要的报告。

  2. 2

    确定投入后转换

    简单的日记账很容易适应,hledger 可以导出为 Beancount 格式。高级成本、元数据和指令功能值得仔细审查一遍。

  3. 3

    或者同时运行两者

    很多人这样做:用 hledger 进行快速录入和日常命令行检查,用 Beancount 加 Fava 进行更深入的视觉分析。纯文本使得拆分很容易。

你应该选择哪一个?

选择 Beancount,如果……

……你想要 Fava 的交互式 Web 仪表盘、用于投资的严格批次和成本基础跟踪、基于 Python 的导入器和自定义分析,以及一个强制正确性的严格系统 —— 并在 beancount.io 上提供可选的托管同步、移动应用和 AI。

选择 hledger,如果……

……你生活在命令行中,想要快速、内置的文本报告、一个宽容的格式以便快速上手、单一二进制安装、以及强大的多期报告 —— 并有稳定、定期发布的版本支持。

两者都是优秀、成熟、积极维护的开源项目,并且都让你的数据以纯文本形式保持可移植。最公平的测试是用你自己的交易在每个工具中做一个小样本 —— 与你产生共鸣的工作流程就是正确的选择。

常见问题

Beancount 比 hledger 更严格吗?

是的。Beancount 要求显式声明账户,并采用更正式的数据模型,而 hledger 则有意接受更灵活的 Ledger 风格日记账格式,并能推断一些缺失信息。

Beancount 和 hledger 哪个用户界面更好?

Beancount 配合 Fava 提供更丰富的图形化分析体验。hledger 在快速终端报告方面更强,并包含 hledger-ui 和 hledger-web,适合偏好文本或轻量级网页界面的用户。

hledger 和 Beancount 能使用相同的日记账吗?

它们的格式有重叠但不完全相同。简单的日记账通常可以调整或导出,而高级的成本、元数据和指令功能通常需要转换和审查。

哪个工具更适合自动化?

Beancount 对基于 Python 的导入器和插件有吸引力;hledger 对 Shell 流水线、CSV 规则和快速命令行报告有吸引力。更好的选择取决于你想要维护的语言和工作流程。

准备好用纯文本管理你的账簿了吗?

几分钟内免费开始 —— 无需信用卡,没有锁定,你的纯文本账本永远归你所有。