跳转到主要内容
Beancount 对比 Ledger CLI

原始的纯文本账本 —— 及其现代继任者

Ledger 在 2003 年证明了纯文本会计是可行的;Beancount 通过严格的验证收紧了模型,并围绕它发展了一个托管生态。两者都让你的账簿以纯文本形式存在,你可以用 Git 阅读、比对和版本控制 —— 问题在于哪种工作流程适合你。

  • 两者都免费且开源
  • 纯文本 + Git
  • 二十年共同的理念
beancount.io 账本仪表盘,显示净资产趋势图和账户余额
Beancount 移动应用首页,显示净资产图表和近期交易
100%
开源 —— 两个项目都是
2003
Ledger 首次证明了纯文本会计是可行的
严格
Beancount 在解析时强制平衡
随时随地
beancount.io 提供托管、同步和 AI 功能

相同理念,不同生态

Ledger 和 Beancount 是一家人:纯文本的复式记账簿,用 Git 进行版本控制。区别在于契合度 —— Beancount 的严格模型和 Web 生态,或者 Ledger 原始快速、灵活的命令行。

Beancount

严格的继任者

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

Ledger CLI

灵活的原创者

Ledger 的紧凑日记账隐式创建账户,并能推断平衡金额。启动时仪式感最少,纪律性取决于你的约定。

Beancount

Fava,一个完整的 Web UI

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

Ledger CLI

原始命令行

`ledger` 命令通过富有表现力的标志和值表达式塑造余额、登记簿和自定义格式报告 —— 加上以 Emacs ledger-mode 为首的编辑器支持。

Beancount

Python、插件和 BQL

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

Ledger CLI

Unix 可组合性

自动交易、定期分录和报告时表达式与 Shell 脚本和管道自然配合 —— 输出设计为可组合的。

Beancount

严格的批次和成本基础

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

Ledger CLI

紧凑的批次语法

Ledger 用简洁的注释和强大的估值表达式跟踪成本和价格 —— 灵活,每个报告由其评估规则塑造。

Beancount

随时随地访问你的账簿

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

Ledger CLI

完全本地化,命令行优先

一个编译好的 C++ 二进制文件在你的机器上就是整个堆栈。社区界面存在,但无需依赖云账户。

Beancount

核心免费,可选托管

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

Ledger CLI

自 2003 年起免费

Ledger 的所有功能 —— 解析、报告、表达式、检查 —— 都免费提供,就像过去二十多年一样。没有付费层级;也不需要。

Ledger CLI 仍然胜出的地方

同一家族,诚实对比:当你想要纯文本会计中最快速、最富有表现力的终端报告时,Ledger 仍然是更好的选择。

极快的 CLI

Ledger 编译好的 C++ 引擎以较低的开销解析和报告非常大的账簿 —— 是生态系统中原始速度的基准。

传奇般的报告灵活性

值表达式、谓词和自定义格式让有经验的用户无需离开命令行就能回答复杂的问题。

二十年的传承

原始的纯文本会计工具,拥有数十年的稳定习惯、广泛的编辑器支持 —— 以 Emacs ledger-mode 为首 —— 以及大量的示例。

最小的必要结构

无需账户声明,无需必需的指令 —— 账户在第一次过账时出现,平衡金额可以推断。从一个空文件开始。

完整对比

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

数据模型

Beancount
严格且显式 —— 声明的账户、强制平衡、批次和成本基础
Ledger CLI
灵活的日记账 —— 隐式账户、报告时表达式

主要界面

Beancount
Fava Web UI、CLI 验证、编辑器工具
Ledger CLI
`ledger` CLI;编辑器集成和社区前端

性能

Beancount
基于 Python;对于大多数个人和小型企业文件来说足够快
Ledger CLI
编译好的 C++ —— 原始速度的基准,即使在非常大的账簿上也是如此

报告

Beancount
交互式 Fava 图表加类似 SQL 的 BQL 查询
Ledger CLI
功能极其强大的报告表达式、过滤器和格式

导入

Beancount
Python 导入器框架;beancount.io 上的托管银行同步
Ledger CLI
外部脚本、转换器和命令管道

投资

Beancount
显式的批次、成本基础和多币种
Ledger CLI
紧凑的批次语法,带有强大的估值表达式

设置

Beancount
需要 Python;显式的账户声明
Ledger CLI
单一编译好的二进制文件;最少的语法即可开始

移动端

Beancount
原生 beancount.io 应用;Fava 的响应式 Web UI
Ledger CLI
社区前端和导出的报告

查看你的完整财务状况

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

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

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

Ledger 和 Beancount 都免费,并且让你的账簿以纯文本形式存在。选择的是工作流程,而不是钱包。

Beancount

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

Ledger CLI

免费
自 2003 年起开源
  • 完整的 C++ 工具包 —— 解析器、报告、检查:$0
  • 传奇般的报告灵活性内建,无需额外添加
  • 一个二进制文件加一个文本文件 —— 没有账户,没有服务器

两者都试试 —— 或仔细迁移

两个账本都是纯文本,因此你的数据永远不会被锁定。用相同的交易样本测试每个账本;如果你要迁移,ledger2beancount 加上余额检查会完成繁重的工作。

  1. 1

    从一个真实月份开始

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

  2. 2

    用 ledger2beancount 转换

    社区转换器能处理大部分 Ledger 日记账。添加 Beancount 的 `open` 指令,并手动审查成本、价格、虚拟分录和自动交易。

  3. 3

    切换前验证

    比较两个系统之间按账户、商品和日期的余额,添加对账日余额断言,并运行 bean-check。将源日记账和转换脚本置于版本控制之下。

你应该选择哪一个?

选择 Beancount,如果……

……你优先考虑显式验证、结构化的投资和商品跟踪、Python 可扩展性、导入器工作流程以及 Fava 的 Web 界面 —— 并在 beancount.io 上提供可选的托管银行同步、移动应用和 AI。

选择 Ledger CLI,如果……

……你优先考虑原始速度、紧凑语法和成熟的终端报告,并希望会计工作保留在 Unix 工作流程中 —— 特别是如果你已经熟悉它的表达式语言。

Ledger 证明了纯文本会计是可行的;Beancount 收紧了模型并围绕它发展了一个生态。两者都是免费的,都让你的数据保持可移植 —— 用你自己的交易在每个工具中做一个小样本,保留那个能让日常工作和故障恢复都更清晰的那个。

常见问题

Ledger 和 Beancount 的主要区别是什么?

Ledger 强调紧凑灵活的日记账和强大的命令行报告。Beancount 使用更正式的指令模型,具有明确的账户和商品生命周期、更强的验证原语,以及围绕解析和扩展账本设计的 Python 生态系统。

我可以将 Ledger 日记账转换为 Beancount 吗?

可以。ledger2beancount 项目可以转换大部分 Ledger 日记账,但复杂的自动交易、表达式、虚拟分录、批次语法和自定义约定需要人工审核。在将转换结果视为权威数据前,请核对余额和投资。

Ledger 和 Beancount 哪个更快?

对于非常大的日记账,Ledger 的编译型 C++ 引擎通常在原始命令行速度上更具优势。对于许多个人和小型企业文件来说,Beancount 的速度足够快,其权衡之处在于提供了更丰富的验证和 Python 集成模型,而非追求最大化的报告吞吐量。

Ledger 和 Beancount 使用相同的语法吗?

不。它们共享复式记账理念和可读的日记账,但日期、交易标记、账户声明、成本、价格、元数据和自动化功能都不同。简单的条目易于翻译;完整的账本并不总是可以直接兼容。

哪个工具拥有更好的图形界面?

Beancount 通过 Fava 提供了更强大且广泛使用的 Web 界面,包括日记账、报表、图表、持仓和查询。Ledger 主要是一个命令行程序,通常依赖社区界面或导出的报告进行可视化。

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

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