小众玩法: OpenClaw + Beancount 优雅记账🧾

写在前面:由于日常消费都是通过信用卡完成支付,对金钱实在是“没得概念”,只有在每个月还款日才会一拍脑袋感到懊悔!也是正好在玩儿OpenClaw,有在想怎么通过这玩意儿进行记账呢,于是便有了OpenClaw + Beancount的玩法。 1. Beancount是什么? 官方文档的说法是 Beanc...
小众玩法: OpenClaw + Beancount 优雅记账🧾
小众玩法: OpenClaw + Beancount 优雅记账🧾

写在前面:由于日常消费都是通过信用卡完成支付,对金钱实在是“没得概念”,只有在每个月还款日才会一拍脑袋感到懊悔!也是正好在玩儿OpenClaw,有在想怎么通过这玩意儿进行记账呢,于是便有了OpenClaw + Beancount的玩法

1. Beancount是什么?

官方文档的说法是 Beancount 是一个强大的、基于 Python 的纯文本会计工具。

beancount.io

Beancount.io 纯文本记账。强大、精确、可审计。 - Beancount.io

像写代码一样记录你的财务——配合 AI 辅助洞察。Beancount 让会计变得透明、可脚本化,并为大模型时代做好准备。自动化报告、分析趋势,并构建能与你同步思考的财务工作流。

然而其实它就是一个纯文本文件,命名叫 main.beancount / main.bean 的文件,然后内容大概就长这样

beancount 文件模板 (点击了解更多详细信息)

它的核心概念一共是五个

  • Assets(资产): 你“拥有”的东西,比如 现金(Cash)、银行存款(Bank)、支付宝/微信余额、投资账户
  • Liabilities(负债): 你“欠别人的钱”,比如 信用卡欠款、花呗 / 借呗、贷款(房贷、车贷)
  • Income(收入): 钱“从哪里来”,比如 工资、奖金、利息、副业
  • Expenses(支出): 钱“花到哪里去”,比如 吃饭、房租、交通、旅游
  • Equity(权益): 用来“平账”的账户,本质是你的净资产来源,可以理解成用来对帐的,不太理解可以忽略,因为具体使用下来一般也不看它 :face_with_peeking_eye:

最核心的理念就是 整个账本中所有过账的总和等于零,也就是说
Assets(资产)+ Liabilities(负债)+ Income(收入)+ Expenses(支出)+ Equity(权益)= 0
(所以说 Equity 一般是用来平账的)

用一张AI画的图来看

image

到这里不理解 Equity 也没关系 后面会有具体的例子来解释展示它

但是这样记录只是纯文本,怎么做可视化呢? 通过Fava!

Fava 是一个出色的基于 Web 的界面,用于可视化你的账本。当你使用该平台时,你将直接与账本文件(例如,main.bean)的文本编辑器进行交互,并实时查看 Fava 生成的报告更新。Fava 将你编写的纯文本转换为交互式图表、财务报表和可过滤的交易列表,让你清楚地了解你的财务报告。

安装方式很简单,像安装Python的第三方库一样安装它,我习惯于用uv来管理Python的项目

uv add fava 

然后运行它

uv run fava main.bean 

然后你就可以得到一个Web页面

image
image
image

这里就先看个样子 后面会稍微解释一下每个字段

2. OpenClaw登场!

前面已经知道Beancount记账本质上就是在往一个纯文本文件里写内容,然后再通过Fava进行可视化展示。往一个文件里写内容 这不是正好是OpenClaw的基础能力吗!听懂自然语言 这不也是OpenClaw的基础能力吗!

那么 通过自然语言描述记账信息往main.bean里写内容可视化展示 一条龙!

我一般用它做两件事 一件事是记录日常开销 另一件事是更新每天的基金情况从而更新资产情况 对应两段简单的Prompt

Beancount 记账(自用的内容,需根据自身账户信息修改) (点击了解更多详细信息) 基金净值更新 (点击了解更多详细信息)

3. 简单案例解释

就拿前面的beancount 文件模板来对照解释。

2026-01-01 open Assets:Cash
2026-01-01 open Assets:Bank
2026-01-01 open Expenses:Food
2026-01-01 open Income:Salary
2026-01-01 open Equity:Opening-Balances

这里对应涉及到的元素就是Assets Expenses Income,Equity先不看,如果有像信用卡、花呗这种负债属性的,那就可以直接加

2026-01-01 open Liabilities:CreditCard:BOCOM:Amex CNY
2026-01-01 open Liabilities:HuaBei CNY

这相当于就是"账户"开户,以后所有的流水都是从这些"账户"里流转。

image

; ===== 初始余额 =====
2026-01-01 * "Opening Balances"
  Assets:Cash        100 USD
  Assets:Bank       1000 USD
  Equity:Opening-Balances

在最开始使用时肯定有一个初始金额吧 :face_with_peeking_eye:,这个的意思就是直接往"Assets:Cash""Assets:Bank"账户中分别加入100和1000,因为这两笔是凭空产生出来的,因此需要用Equity:Opening-Balances来平账!

; ===== 示例交易 =====
2026-01-05 * "Salary"
  Assets:Bank       2000 USD
  Income:Salary

这个写法等价于

; ===== 示例交易 =====
2026-01-05 * "Salary"
  Assets:Bank       2000 USD
  Income:Salary    -2000 USD

意思是你的工资是发到银行卡里,"Income:Salary"账户就是少了2000,"Assets:Bank"账户多了2000。相当于"Assets:Bank"才是你钱最终的归宿,"Income:Salary"只是记录了这2000是工资!

2026-01-06 * "Lunch"
  Expenses:Food       15 USD
  Assets:Cash

意思是你用了15现金吃了一顿午饭。"Assets:Cash"账户少了15,"Expenses:Food"账户多了15,代表这15是用来吃饭的!有没有有一点感觉,虽然是有点抽象,但是好像也有点道理 :thinking:

这个时候来汇总一下
初始"Assets:Bank"账户是1000,发了2000工资,所以"Assets:Bank"账户现在是3000,"Income:Salary"是-2000
初始"Assets:Cash"账户是100,吃了15,所以"Assets:Cash"账户现在是85,"Expenses:Food"账户是15
分别对应

image
image

现在在回头来看 Equity

image

Equity(权益): 用来“平账”的账户,本质是你的净资产来源。
初始金额时我们用"Equity:Opening-Balances"账户平了凭空出现的1100,"Equity:Earnings"账户正好是我们发的工资2000 - 吃了一顿饭15 = 1985。"Equity"账户的总额是3085 = 初始金额1100 + 工资2000 - 吃了一顿饭15。

大概就是这个样子了。

要是各位佬们有兴趣 还是可以去看看官方文档的。
实在懒得看 要AI帮忙看看也成 :star_struck:

1 个帖子 - 1 位参与者

阅读完整话题

来源: linux.do查看原文