跳转到主要内容

Beancount 社区配置、插件与工作流

浏览社区中真实的 Beancount 记账配置与工作流实践:插件、Fava 仪表盘、GitHub 项目,以及面向不同场景定制的完整账本示例。

真实的 Beancount 配置

引言

Beancount 是一个多功能的纯文本记账系统,用户们已经将其塑造以适应各种现实需求。在这个社区案例展示中,我们呈现了不同人群如何构建和使用他们的 Beancount 记账工作流的匿名示例——从自由职业者和小企业主到个人理财爱好者。这些示例突出了创新实践,例如用元数据标记交易、用自定义脚本自动化账本更新、处理多币种、预算与预测,以及通过插件或集成(如 Fava 网页界面

For living overviews of the same tooling cluster, see Beancount v3: What's New?, Essential Beancount Native Plugins You Should Know, The Beancount Ecosystem, and Beancount's Technical Edge. 扩展 Beancount。其目标是激励并告知会计师、开发者和精通财务的用户,了解使用 Beancount 灵活体系可以实现什么。

Apple 在 beancount.io 上公开 Beancount 账本的损益表,包含净利润图表以及收入和支出明细

示例界面: 许多 Beancount 用户依赖 Fava——一个开源网页仪表盘——或 beancount.io 上托管的等效服务来可视化他们的财务。这些工具将 Beancount 账本转化为交互式报告和图表。例如,这个损益表视图按类别和时间维度细分了收入和支出,让用户可以快速了解资金的来源和去向。用户可以按时间、账户或标签筛选此视图,以深入查看特定项目或时期。这样的可视化帮助让纯文本数据更易于理解,使用户能一眼发现趋势和异常。

每个 Beancount 配置都是独特的,但共同的主题也会浮现。下面,我们深入探讨三个场景——一个自由职业者、一个小企业主和一个个人理财高级用户——看看他们如何组织账户并利用 Beancount 的功能。所有个人细节都被删除或概括,仅关注技术和配置。

自由职业者:项目标记和发票追踪

我们的第一个示例是一位自由职业顾问,他把 Beancount 作为其业务财务的支柱。这位自由职业者的账本被组织起来,用于按项目追踪收入和支出,并管理多个客户的发票。他们为“应收帐款”在资产下设定了专用账户,每个客户一个,这有助于区分谁欠了什么。当他们完成一个项目并向客户开具发票时,他们记录一笔交易,借记客户的应收帐款账户,贷记收入账户。例如,一张新发票可能记录为:

2025-08-01 * "Project X Completed" ^INV-0001
    Assets:AccountsReceivable:ClientA   5,000 USD
    Income:Consulting                   -5,000 USD

这里的 ^INV-0001 符号是一个 链接(Beancount 内置的元数据功能),用于将此交易标记为发票号。当客户支付该发票的部分或全部金额时,付款交易会包含相同的 ^INV-0001 链接,这会把两笔记录关联在一起。这种关联使得分配付款到特定发票以及查看未结余额变得容易。正如一位社区成员所解释的,你可以使用此类标签或链接来标记部分付款——例如,对一张 30 美元的发票支付 20 美元——这种方法同时适用于发票条目和付款条目。通过查询账本中该发票链接,自由职业者可以立即看到发票已被支付了多少,以及还剩下多少未结清。

除了链接之外,这位自由职业者大量使用标签进行分类。在 Beancount 中,标签是以 # 开头的前缀,可以标记交易以便后续筛选。该用户将每一笔可向客户收费的费用用项目代码标记,例如 #ProjectX,并将可报销费用标记为 #Reimbursable。例如,如果他们为客户项目购买机票,费用条目可能包含 #ProjectX #Reimbursable。这种做法允许通过筛选标签来生成按项目或客户统计的报告。项目结束后,自由职业者可以运行查询列出该项目所有 #Reimbursable 费用,并确保每笔费用都已向客户开具发票。一位 Beancount 用户指出,标记出差费用有助于发现任何未被报销的项目——理想情况下,当所有客户退款都收到后,一次出差费用净额应为 0 美元。这凸显了标签与 Beancount 的查询能力相结合,为管理可报销费用的自由职业者提供了额外的监督层。

为了管理未付款项的支付状态,我们的自由职业者使用了一种特殊的约定来处理待收款项。他们对任何尚未完全支付的发票交易应用 #UNRESOLVED 标签。Beancount(以及 Fava)并不会强制执行这个标签,但这是社区建立的一种模式,用于标记等待结算的交易。例如,在客户 A 支付全部 5,000 美元之前,上面提到的发票交易需要包含 #UNRESOLVED。通过筛选该标签,自由职业者可以随时列出所有未结清的发票。一旦收到付款并应用(录入相应的应收帐款交易),他们就会移除或忽略 #UNRESOLVED 标签,该客户的应收帐款账户将达到零余额。这个系统可以确保没有发票“被遗漏”。这本质上是一个用纯文本实现的账龄报告——如果应收帐款仍不为零且标记为未解决,就需要关注它。

由于自由职业者经常处理多种支付方式,有时还涉及多种货币,Beancount 的配置可以无缝地适应这种情况。在我们的示例中,这位顾问可能向一些客户收取美元,向其他客户收取欧元。多币种处理在 Beancount 中非常直接:任何账户都可以持有多种商品(货币被视为商品)。自由职业者可以为每种货币保留单独的子账户(例如 Assets:AccountsReceivable:ClientA:EUR 对比 ...:USD),或者简单地在同一账户下以适当的货币记录交易。Beancount 会自动按货币跟踪余额。一位用户强调了这一点非常棒——“Beancount 可以以任何货币跟踪数量,无论是美元还是股票代码,” 都在一个账本中。我们的自由职业者利用这一点,在需要转换货币用于报告时,使用 price 指令记录汇率。一旦他们录入了周期性汇率或市场价格,他们就可以生成转换为其本币的收入报告。

最后,这位自由职业者将他们的 Beancount 账本与实际工具集成,以简化工作流程。例如,他们使用文档元数据将每张发票的 PDF 副本附加到账本中。一个典型的发票付款条目可能看起来像这样:

2025-08-30 * "ClientA" "Payment for INV-0001" ^INV-0001
    Assets:Bank:Checking       5,000 USD
    Assets:AccountsReceivable:ClientA  -5,000 USD
    document: "Invoices/ClientA/INV-0001.pdf"

Beancount 的 document 指令或元数据允许将文件关联到条目,而 Fava 会为这些附件显示一个超链接。这意味着自由职业者(或他们的会计师)可以直接从账本报告中点击查看原始发票 PDF,确保轻松访问备份文档。这位自由职业者还使用 Fava 的报告来监控她的业务:通过按客户筛选损益表或资产负债表,她可以看到每个客户的盈利能力,并检查所有项目是否都已结清。总之,这位自由职业者的 Beancount 系统展示了大量使用标签和链接来管理基于项目的会计。它将一个纯文本账本变成一个强大的自由职业会计工具,能够清晰可见项目支出、多币种收入和发票状态。

自由职业者配置中的关键实践: 使用标签按项目或用途对交易进行分组,使用唯一 ID 关联发票和付款,使用 #UNRESOLVED 标签标记未结清的应收款项,将发票文档附加到账本条目以供参考,以及利用 Beancount 的多币种支持来无缝地向国际客户开具账单。所有这些都通过纯文本条目加几个辅助工具实现,展示了元数据在 Beancount 中的威力。

小企业:自动化与多币种会计

接下来,我们看看一个小企业主——具体来说是一位初创公司创始人——他采用 Beancount 来管理公司账目。小企业的需求与自由职业者相似(发票、费用、多币种),但通常规模更大,并且更注重自动化、一致性和协作。在这种情况下,创始人技术娴熟,构建了一个高度自动化的 Beancount 工作流程,以尽量减少手动簿记。在评估了像 QuickBooks 这样的传统会计软件后,他们选择了 Beancount 的纯文本方法,以保留对数据的完全控制。在几年时间里,他们迭代开发了自定义工具,最终实现了 95% 自动化的簿记流程。

自动化导入和对账 最初的挑战之一是将来自各种来源(银行账户、信用卡、支付处理商)的交易导入账本。这位用户没有手动输入每笔交易,而是设置了导入脚本来获取数据并将其转换为 Beancount 格式。他们为每个金融机构的 CSV 或 API 格式编写了自定义 Python 导入器,这样只需一条命令即可拉取新交易并将其追加到账本中。例如,使用 beangulp 导入器,创始人可以运行一个脚本,扫描下载文件夹以查找新的对账单,并将其输出为 Beancount 条目。另一位用户 Rhyd Lewis 描述了一个类似的设置,他为每家银行都有单独的导入脚本,并且可以通过一个简单的命令(使用 Justfile)调用它们来更新账本。我们的小企业主也是这样做的——所有银行交易、信用卡消费,甚至 PayPal 或 Stripe 交易都会自动获取并添加到账本中,并归类到适当的账户。

为了确保即使在自动添加这些条目时数据的完整性,他们在每次提交前验证账本,并使用 Beancount 的插件。例如,启用了 beancount.plugins.noduplicates 插件以防止意外导入同一笔交易两次,而 beancount.plugins.nounused 会标记任何没有条目的账户(有助于清理过时账户)。我们推荐使用 bea check 进行该验证步骤。创始人还使用社区格式化工具(例如 beancount-black)来保持账本文件风格一致。这很重要,因为有很多自动编辑,统一的风格可以使差异比较和审计更容易。事实上,创始人将账本保存在 Git 仓库中,像处理代码更改一样处理账本更新。每批新导入的交易都会成为一个 Git 提交,并且他们可以查看差异以了解更改了什么。在一个截图中,他们展示了 Git 历史记录,其中一笔“Costco”的信用卡交易从待处理状态变为已清算状态,全程无需人工干预。版本控制提供了一个审计跟踪:他们可以确切地看到交易何时被添加或修改,如果某些内容导入错误,甚至可以还原更改。这是将软件开发最佳实践(如源代码控制)带入会计记录的一个很好的例子。

多币种和国际交易: 小企业经常以多种货币进行交易——例如,一家初创公司可能有美元支出,但也可能收到欧元付款或持有英镑银行账户。我们展示的公司使用 Beancount 的多币种功能将所有这些整合在一个账本中。他们为每种货币开设了单独的账户(例如 Assets:Bank:Checking:USDAssets:Bank:Checking:EUR),这是一种常见的方法。然而,即使不同的货币共享一个账户,Beancount 也会分别跟踪每种货币的余额,并要求交易在每种货币下保持平衡。创始人经常运行估值报告,以查看公司总余额转换为基础货币后的数额。由于 Beancount 支持价格查找,他设置了一个定时报价获取脚本,用于每日获取货币汇率(以及任何投资组合的股票价格)。结果是,他任何时候都可以生成一份以美元计价的资产负债表,其中包含按最新汇率换算的欧元账户。社区成员指出,在复式记账中处理多种货币很简单——只需以给定货币添加交易,并根据需要记录汇率即可。例如,一位用户分享了一个通过中间账户将美元转换为欧元再转换为加元的示例,作为在 Beancount 中管理货币转换的一种方法。在我们的案例中,小企业不一定在交易中转换货币(他们保持原始货币),而是使用报告进行整合。随着初创公司向全球扩张,这种灵活性至关重要。

自定义脚本和扩展: 创始人需要的并非开箱即用,因此他们使用自定义插件扩展了 Beancount。随着时间的推移,他们最终编写了一个解析器库、一个格式化工具和一个基于规则的交易导入器,并将其中许多发布为开源软件包。例如,他们构建了一个基于规则的导入引擎,使用 YAML 配置自动对交易进行分类。配置片段显示了特定收款人或描述(如“Comcast”或“PG&E”)如何映射到某些费用账户和摘要,这样当这些出现在银行数据流中时,就会生成正确的 Beancount 条目,无需手动编辑。这本质上是一种自定义自动化,用于实时应用簿记规则(适用于公用事业、订阅等)。另一个插件确保账本始终保持平衡和格式正确。所有这些工具都在输入新数据时作为创始人工作流程的一部分运行。结果是,一个账本“自我更新”,几乎无需干预,创始人表示,这作为一个痴迷于自动化的开发者,给他带来了“纯粹的快乐”。

安全性和可访问性也是需要考虑的问题。创始人希望他的财务团队(甚至他的配偶,作为监督者)都能轻松查看账簿。为此,他在云中部署了一个私有 Fava 实例。每次他将新的账本提交推送到私有 Git 仓库时,一个 CI 流水线(使用 GitHub Actions 和 AWS Elastic Beanstalk)就会部署一个更新后的 Fava 实例。该网页界面受密码保护(使用带有基本认证的 Nginx 代理),因此只有授权人员可以看到。这样,最新的财务报表总是可以通过浏览器仪表盘访问,而无需在本地安装任何东西。下面的架构图说明了这个设置:Beancount 文件和必要的配置与 Fava 一起打包成一个 Docker 镜像,并在 AWS 上提供服务,前面用 Cloudflare 保障安全。

flowchart LR
    A[Edit ledger locally] --> B[Push to private Git repo]
    B --> C[CI builds Docker image<br/>Fava + Nginx basic auth]
    C --> D[Deploy to AWS<br/>Elastic Beanstalk]
    D --> E[Cloudflare proxy]
    E --> F[Owner & team view<br/>reports in browser]

在云端自动化 Beancount: 用户本地更新账本文件并推送到 Git;一个 Docker 容器(包括 Fava 和用于认证的 Nginx)被构建并部署到 AWS Beanstalk 服务器,而 Cloudflare 充当代理。结果是一个安全的网页门户,小企业的财务数据可以从任何地方(由所有者或团队)实时访问。这个高级设置展示了小企业如何将 Beancount 与现代云工具集成,以在不放弃数据所有权的情况下实现便利。

在日常使用中,小企业主的重点是异常处理,而不是数据录入。每个月,他都会简要审查自动导入的交易(使用 Git 差异或 Fava 的日记视图),以发现有问题的或错误的条目。他还使用 Beancount 的余额断言核对账户。例如,在录入所有六月交易后,他可能会添加一个余额检查,以确认银行账户的期末余额与对账单相符;如果不符,Beancount 会报错,表明有遗漏或输入错误。这确保了账簿保持准确。

小企业配置中的关键实践: 通过自定义导入器和脚本实现高度自动化(使账本“95% 自动”),使用版本控制进行审计跟踪和协作,通过价格数据源进行多币种会计和估值,以及部署 Fava 以便轻松共享财务报告。小企业的场景展示了通过工程努力可以将 Beancount 推到多远——将会计转变为一种高度自动化的流水线,同时保持透明和灵活。即使你不是程序员,也可以通过使用社区插件(用于格式化、重复检测等)以及采用鼓励频繁审查和备份的纯文本工作流程来实现其中的许多好处。

个人理财爱好者:预算与自定义分析

我们最后的示例是一位个人理财爱好者——一个使用 Beancount 以高度细致的方式管理家庭财务和投资的人。这位用户以会计师的严谨和数据分析师的好奇心来对待个人财务。结果是,Beancount 账本不仅跟踪每一分钱,而且还作为预算、预测和分析实验的基础。

组织个人账本: 许多人开始时用单个 Beancount 文件来管理所有账户,这位爱好者也不例外。他们维护着一个主账本(例如 main.beancount),其中包含所有账户(银行账户、信用卡、贷款、投资组合等)和交易。随着时间的推移,他们通过拆分部分来引入一些结构——例如,他们有一个用于开立/关闭账户的文件,以及用于年度交易的单独文件——这些文件被包含在主文件中。这种模块化组织使得导航多年的数据变得更容易(可以将旧年份归档在单独的文件中),同时在逻辑上仍然是一个账本。社区论坛上的另一位个人用户描述了一种类似的布局:一个主文件按类别包含其他文件(例如 Income.beancountExpenses.beancountInvestments.beancount)。我们的爱好者目前保持简单:一个在设备间同步的文件。

说到同步,由于是个人财务,这位用户希望随时随地捕捉交易。他们使用一款名为 Beancount Mobile 的移动应用,以便在外出时快速添加条目(例如,在商店里直接记录现金支出)。账本文件通过云同步(在这个案例中使用的是 Syncthing)共享,这样他们的手机、笔记本电脑和一台 VPS(服务器)都能拥有最新副本。在电脑上,他们更喜欢使用带 beancount-mode 的 Emacs 进行舒适的编辑,并带有语法高亮。这个设置确保了无论他们是在办公桌前还是外出,都能立即记录交易并避免遗忘。这是一个很好的例子,展示了如何调整技术工具以适应个人便利——实际上是构建了一种自托管的商业预算应用替代方案。

用于精细跟踪的标签和元数据: 这位用户利用标签在科目表之外为数据增添了一个维度。对于常规预算类别,账户就足够了(他们有类似 Expenses:GroceriesExpenses:Rent 等账户),但对于像 事件目标 这样的跨领域主题,他们使用标签。例如,他们将所有与其房屋翻新项目相关的交易都标记为 #HomeReno,无论是在五金店购买木材(支出)还是从制造商处收到返利(收入)。这样,他们就可以轻松生成项目总成本报告,而无需将这些支出隔离在不同的账户下。一位 Reddit 用户通过将家庭项目的支出标记为 #garage-improvement#lighting-improvement 来演示这种方法,这使得通过 Beancount 查询筛选和汇总变得非常简单。我们的爱好者对假期(#ItalyTrip2025)、大额采购和一次性事件也这样做。

元数据(交易上的键值对)也用于某些特定目的。例如,他们为大额支出添加 location: ... 元数据来追踪花钱的地点,或添加 note: ... 以提供超出收款人和摘要的额外背景信息。在一些情况下,他们甚至创建了自定义元数据字段来帮助预测。一个例子是向某些周期性支出添加 budget: Xfrequency: monthly——这个想法源于 Beancount 邮件列表上的一次讨论,当时一位用户将预算预测存储在每笔支出的元数据中。这些元数据字段不会影响 Beancount 的核心功能,但这位爱好者编写了一个小的 Python 脚本,读取这些字段并将实际支出与预测预算进行比较。这是使用 Fava 内置预算(下文描述)的一种替代方案,展示了元数据如何被灵活运用。正如 Beancount 的创建者所指出的,元数据“只是为你[在自定义脚本中使用] 而存在的——Beancount 会解析它但本身会忽略它”。简而言之,这位用户不怕用额外信息扩展账本,以辅助个人分析。

使用 Beancount 做预算: 这位用户的主要目标之一是遵守月度预算。他们以前使用过一个预算应用(YNAB),并希望复制其部分信封预算的概念。在 Beancount 中做预算有几种方法,但最简单的是使用 Fava 的 预算指令。我们的爱好者会在账本中添加如下 budget 条目:

2025-01-01 custom "budget" Expenses:Groceries   "monthly" 500 USD
2025-01-01 custom "budget" Expenses:DiningOut   "monthly" 200 USD
2025-01-01 custom "budget" Expenses:Travel      "yearly" 3000 USD

每行设置一个账户(类别)在一段时期内的预算。Fava 随后会在网页界面中显示预算与实际对比的条形图,让用户看到,例如,这个月在 Groceries 上花了 480 美元,而预算是 500 美元,可能还花了 220 美元在 DiningOut 上(超出预算)。这位爱好者会定期查看 Fava 的损益表支出报告,这些报告同时显示月度总额和预算目标。Fava 会方便地将每日/每周预算汇总到适当的时间范围内。通过使用 Fava 界面,用户不需要单独的电子表格来做预算;它已全部集成。(他们也尝试过一种更自动化的“信封”系统,按照论坛建议在每个月初将资金转入虚拟账户,但发现自定义预算指令更易于维护。)

对于预测,除了预算之外,他们还关注即将到来的账单。一些社区成员构建了 插件来生成未来交易,用于订阅或贷款摊销计划,但这位用户选择了一种更简单的方法:他们在账本中维护一个单独的部分,其中包含已知项目的未来日期交易(如下个月的租金,或即将到来的年度保险付款)。这些保留在账本中,但不会影响当前的余额,一旦日期到来且交易变为当前状态,它就会起到提醒作用(如果需要,他们会调整金额以匹配实际收费)。这有点像一种土办法,但对于在没有复杂工具的情况下预测现金流来说很有效。

投资追踪和多商品会计: 作为理财爱好者,这位用户还使用 Beancount 来整合投资账户——股票、共同基金和加密货币——与现金账户一起。他们拥有的经纪账户中的持仓(例如 AAPL、GOOG 等的股份)在 Beancount 中作为商品记录。例如,买入 10 股苹果股票将是一笔贷记经纪现金并借记资产账户的条目,商品数量为 10 AAPL。Beancount 处理任何商品的能力在这里非常有用;可以自由地混合货币和股票。“Beancount 可以以任何货币跟踪数量,无论是美元还是股票代码,” 正如一位用户指出的,这对个人理财应用来说是一个重大改进,因为这类应用通常对股票头寸支持不佳。我们的爱好者使用一个每晚的 cron 作业来获取所有证券和外汇的最新市场价格。每晚凌晨 4 点,一个脚本会获取价格(从雅虎财经或其他来源),并将当天的价格记录追加到账本中。这样,下次他们打开 Fava 或运行报告时,就能看到最新的投资组合价值,甚至是一段时间内的投资表现。整个净资产,包括银行账户、退休基金和加密货币钱包,都可以在一个统一视图中查看。这对一个数据驱动的投资者来说是一个梦想:无需登录多个平台就能看到全貌。他们实际上已经构建了一个由 Beancount 驱动的个人财务仪表盘。

分析与整合: 真正让这位个人理财高级用户与众不同的是他们如何 分析 账本中的数据。由于所有交易都在一个 SQLite 数据库中(Beancount 可以通过其内置的类似 SQL 的查询语言查询数据),用户可以进行自定义分析。他们编写了 Python 脚本来回答诸如“我购买食品杂货的 3 个月移动平均线是多少?”或“今年在公用事业上的支出与去年相比如何?”这样的问题。其中一个脚本查询账本中的特定标签,并将结果输出到 Pandas 数据帧以进行进一步的数据处理。由于账本是纯文本,他们还使用 Jupyter 笔记本尝试不同的可视化(超出 Fava 提供的功能)。例如,他们通过用 Python 聚合 Beancount 数据,使用 Matplotlib 制作了一个自定义的月度储蓄率条形图。这种临时分析之所以可能,仅仅是因为 Beancount 保持数据可访问且机器可读。正如一位用户所说,提取数据是微不足道的——“我有一个 Python 脚本使用查询语言从 Beancount 中提取数据,然后用 pandas 数据帧来准备数据以生成报告”。我们的爱好者有一个包含这类小脚本的代码库,用于年度财务审查。

当然,并非所有事情都需要编码——很多时候,他们依赖 Fava 的内置图表。Fava 提供了净资产折线图、收入与支出趋势图,甚至还有树状图细分(如前所示),这些都只需点击一下即可获得。用户欣赏自 2018 年以来他们财务的完整历史都是可查询和可审计的。例如,如果他们想知道“过去 5 年我在汽车维修上花了多少钱”,他们可以在 Fava 中写一个快速查询或筛选以获得答案,而不是翻找收据。这种能力正是吸引他们使用 Beancount 的原因:完全拥有数据,以及分析上的无限灵活性。作为额外好处,纯文本账本具有未来保障——它可以通过版本控制管理、迁移,甚至在需要时被其他工具解析。与闭源应用不同,没有失去访问财务历史的风险。

个人设置中的关键实践: 利用移动和桌面工具便捷录入数据,使用标签和自定义元数据跟踪生活事件和跨类别分组,通过 Fava 的 budget 指令实施预算以实现持续的支出目标,在同一账本中跟踪投资和多种货币(并自动更新价格),以及通过直接查询账本数据进行自定义分析。这个案例表明,只要稍加设置,即使是个人理财爱好者也能获得通常只有企业才能拥有的洞察力和控制力——同时让技术爱好者保持趣味性和参与感。

结论

在这些社区示例中,一个清晰的共同主题是 Beancount 的灵活性带来了高度个性化的会计系统。 社区中的高级用户利用简单的文本文件构建了在能力上可与商业软件相媲美的解决方案,但又是为他们工作流量身定制的。自由职业者通过标签和链接轻松管理客户项目和发票。小企业主通过脚本处理繁琐的簿记任务,并将 Beancount 与现代基础设施集成,以实现始终更新的财务数据。个人理财爱好者将账本作为预算、投资和决策的单一事实来源,并通过标签和工具增强它,以回答关于他们金钱的任何问题。所有这一切都是在保持纯文本会计的核心优势的同时实现的:透明度、可审计性和对数据的控制。

Beancount 的社区还产生了丰富的插件和集成生态系统。从用于输入的编辑器模式和移动应用,到用于可视化的 Fava 网页界面,再到 GitHub 上无数的导入器和工具,有资源可以满足几乎每一种需求。用户经常在论坛和博客上分享他们的账本设置,以便其他人可以学习并采用最佳实践。重要的是,敏感信息可以保持私密(或为了分享而轻松编辑),因为格式是人类可读的——正如我们在本展示中所做的那样。上面的示例表明,无论你是自由开发者、初创公司创始人还是个人理财爱好者,都可以让 Beancount 随心所用。通过创造性地使用标签和元数据、在可能的地方自动化、处理多币种交易、使用预算进行规划,并通过插件进行扩展,社区不断推动纯文本可能性的边界。结果是专业级别的会计账本,同时也让人乐于维护,给用户带来了对财务的清晰度控制力

来源:https://beancount.io/zh/docs/community-showcase