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

beancount.io

Beancount.io 纯文本记账。强大、精确、可审计。 - Beancount.io
像写代码一样记录你的财务——配合 AI 辅助洞察。Beancount 让会计变得透明、可脚本化,并为大模型时代做好准备。自动化报告、分析趋势,并构建能与你同步思考的财务工作流。
然而其实它就是一个纯文本文件,命名叫
main.beancount/main.bean的文件,然后内容大概就长这样beancount 文件模板```
option "title" "My Ledger"
option "operating_currency" "USD"; ===== 账户 =====
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; ===== 初始余额 =====
2026-01-01 * "Opening Balances"
Assets:Cash 100 USD
Assets:Bank 1000 USD
Equity:Opening-Balances; ===== 示例交易 =====
2026-01-05 * "Salary"
Assets:Bank 2000 USD
Income:Salary2026-01-06 * "Lunch"
Expenses:Food 15 USD
Assets:Cash- **Assets(资产)**: 你“拥有”的东西,比如 现金(Cash)、银行存款(Bank)、支付宝/微信余额、投资账户 - **Liabilities(负债)**: 你“欠别人的钱”,比如 信用卡欠款、花呗 / 借呗、贷款(房贷、车贷) - **Income(收入)**: 钱“从哪里来”,比如 工资、奖金、利息、副业 - **Expenses(支出)**: 钱“花到哪里去”,比如 吃饭、房租、交通、旅游 - **Equity(权益)**: 用来“平账”的账户,本质是你的净资产来源,可以理解成用来对帐的,不太理解可以忽略,因为具体使用下来一般也不看它 ^-^ 最核心的理念就是 *整个账本中所有过账的总和等于零*,也就是说 **Assets(资产)+ Liabilities(负债)+ Income(收入)+ Expenses(支出)+ Equity(权益)= 0** (所以说 Equity 一般是用来平账的) 用一张AI画的图来看  到这里不理解 Equity 也没关系 后面会有具体的例子来解释展示它 但是这样记录只是纯文本,怎么做可视化呢? 通过Fava! > Fava 是一个出色的基于 Web 的界面,用于可视化你的账本。当你使用该平台时,你将直接与账本文件(例如,main.bean)的文本编辑器进行交互,并实时查看 Fava 生成的报告更新。Fava 将你编写的纯文本转换为交互式图表、财务报表和可过滤的交易列表,让你清楚地了解你的财务报告。 安装方式很简单,像安装Python的第三方库一样安装它,我习惯于用`uv`来管理Python的项目``` uv add fava ```然后运行它``` uv run fava main.bean


这里就先看个样子 后面会稍微解释一下每个字段
2. OpenClaw登场!
前面已经知道Beancount记账本质上就是在往一个纯文本文件里写内容,然后再通过Fava进行可视化展示。往一个文件里写内容 这不是正好是OpenClaw的基础能力吗!听懂自然语言 这不也是OpenClaw的基础能力吗!
那么 通过自然语言描述记账信息 → 往main.bean里写内容 → 可视化展示 一条龙!
我一般用它做两件事 一件事是记录日常开销 另一件事是更新每天的基金情况从而更新资产情况 对应两段简单的Prompt
Beancount 记账(自用的内容,需根据自身账户信息修改)```
Beancount 记账
老板使用 Beancount 记账,这是日常重要的任务之一。每次老板说「帮我记账」,立刻去操作,无需询问文件位置。
账本路径
- 主文件:
/beancountbill/main.bean - 操作货币:CNY
负债账户
账户 说明 Liabilities:CreditCard:CMB:UnionPay招商银行银联信用卡 Liabilities:CreditCard:BOCOM:Amex交通银行运通信用卡 支出分类体系
账户 用途 Expenses:Init初始状态(期初待还款) Expenses:Food餐饮食材 Expenses:Utilities自来水费、电费、通信费、燃气费 Expenses:Transport交通出行 Expenses:Shopping购物消费(网购、实体店等) Expenses:Healthcare医疗健康 Expenses:Entertainment娱乐休闲 Expenses:Travel旅游 Expenses:Uncategorized暂未分类 收入账户体系
Income:Investment:PnL— 投资盈亏Income:Interest:Deposit— 活期利息(支付宝/微信每月手动对账)Income:Salary— 工资账户
记账规则
- 老板说记账 → 直接操作,无需询问文件位置
- 根据描述自动匹配分类,无法判断时用
Expenses:Uncategorized并提示 - 记账后列汇总表方便核对
- 工资条:实发进银行账户
``
基金净值更新``基金净值更新
老板说「帮我更新今天的基金」或类似表达,立刻更新,无需询问。
- 功能:从东方财富抓取7只基金最新净值,计算市值,并更新 beancount 中的每日 balance 断言
- 关键规则:基金每次查出来只做更新,不插入一条新的交易记录
- 最终执行逻辑:从账本注释读取每只基金的份额,抓最新净值后,用 份额 × 净值 算出最新市值,直接覆盖 beancount 里基金账户当前金额;并把基金专属分录的日期同步改成最新净值日期
- 不要追加 balance 断言,不要生成“市值调整”分录,不要在文件末尾再新增基金更新区块;账本里基金金额只保留一处真值
- 基金名称:xxx
```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
```这相当于就是"账户"开户,以后所有的流水都是从这些"账户"里流转。
```
; ===== 初始余额 =====
2026-01-01 * "Opening Balances"
Assets:Cash 100 USD
Assets:Bank 1000 USD
Equity:Opening-Balances
``在最开始使用时肯定有一个初始金额吧 ^-^,这个的意思就是直接往"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是用来吃饭的!有没有有一点感觉,虽然是有点抽象,但是好像也有点道理 ^-^这个时候来汇总一下
初始"Assets:Bank"账户是1000,发了2000工资,所以"Assets:Bank"账户现在是3000,"Income:Salary"是-2000
初始"Assets:Cash"账户是100,吃了15,所以"Assets:Cash"账户现在是85,"Expenses:Food"账户是15
分别对应


现在在回头来看 Equity。

Equity(权益): 用来“平账”的账户,本质是你的净资产来源。
初始金额时我们用"Equity:Opening-Balances"账户平了凭空出现的1100,"Equity:Earnings"账户正好是我们发的工资2000 - 吃了一顿饭15 = 1985。"Equity"账户的总额是3085 = 初始金额1100 + 工资2000 - 吃了一顿饭15。
大概就是这个样子了。
要是各位佬们有兴趣 还是可以去看看官方文档的。
实在懒得看 要AI帮忙看看也成 ^-^
主楼 - 主文件:
- x-shuffle2026-04-2032772
佬倒是给我提供了一种新的思路,agent记账
- starlight3122026-09-1334256
还在坚持吗 佬
- starlight3122026-09-1334256
(帖子已被作者删除)
- starlight3122026-09-1334256
还在坚持吗 佬