个人记账

MCP Tools

A natural language personal finance tool for income/expense tracking, budget management, financial goals, and investment portfolio monitoring. Triggers on phrases like "I spent XX", "check balance", "monthly report", "bought XX stock", "set budget", and "savings goal".

Install

openclaw skills install simple-ledger

概述

面向普通人的自然语言记账工具。用户只需说"今天吃饭花了50块",即可自动生成 CSV 格式账本条目。

原创 CSV 格式。无需安装数据库,一个 CSV 文件搞定一切。

账本格式(CSV)

本 Skill 使用完全原创的 CSV 格式,简单直观。

# 日期,类型,金额,分类,描述,账户
余额,微信钱包,1000.00
余额,支付宝,2000.00
余额,银行卡,50000.00
余额,现金,500.00
2026-05-21,支出,50.00,餐饮,午餐,微信钱包
2026-05-22,收入,8000.00,工资,5月工资,银行卡
2026-05-23,支出,299.00,购物,外套,支付宝

格式规则:

  • 6 个字段:日期,类型,金额,分类,描述,账户
  • 类型只能是 收入支出
  • 金额填正数(系统通过类型字段判断方向)
  • 账户用扁平中文名,无需层级路径
  • 初始余额用 余额,账户,金额 格式

默认位置

~/.openclaw/workspace/data/ledger/default.csv

触发条件

当用户提到以下意图时激活本 Skill:

  • 记一笔账("花了XX"、"买了XX"、"收入XX"、"工资到账")
  • 查询消费("这个月花了多少"、"上个月餐饮多少钱"、"查账")
  • 账户管理("我的余额"、"银行卡还有多少")
  • 月度报告("月度报告"、"这个月花销总结"、"消费分析")
  • 投资操作("买入XX股"、"卖了XX"、"查持仓"、"投资收益")
  • 预算管理("设定预算"、"预算多少"、"超支了吗"、"生成预算模板")

核心能力

1. 📝 自然语言记账

输入示例:

  • "今天中午吃饭花了50块"
  • "昨天打车花了23.5"
  • "工资到账8000"
  • "充话费30"
  • "买了一件外套299,用支付宝付的"
  • "给小王转了200"

处理流程:

  1. 使用 LLM 从用户输入中提取:日期、金额、分类、描述、账户
  2. 调用 scripts/parse_entry.py 格式化为标准 CSV 行
  3. 追加写入账本 CSV 文件

AI 解析规则:

字段说明默认值
date日期("今天"、"昨天"、"上周三"等)当天
amount金额(支持小数)必填
category消费分类自动推断
description摘要描述提取关键信息
account支付账户默认微信钱包

分类自动映射规则:

关键词分类
吃饭、午餐、晚餐、外卖、火锅、奶茶、咖啡、零食、水果、饮料餐饮
打车、地铁、公交、加油、停车、高铁、机票交通
租房、水电、物业、网费、燃气居住
电影、游戏、会员、视频、音乐、KTV娱乐
衣服、鞋子、包包、化妆品、日用品购物
话费、充值、流量通讯
药、医院、体检医疗
课程、书、考试教育
红包、礼物、请客社交
工资、薪资、奖金工资
理财、利息、分红理财收益

账户自动映射规则:

关键词账户
微信、微信支付、零钱微信钱包
支付宝、花呗支付宝
银行卡、银行银行卡
现金现金
无关键词微信钱包(默认)

2. 📊 消费查询

支持查询方式:

  • 按时间:"这个月花了多少"、"上周支出"、"2025年3月"
  • 按分类:"餐饮花了多少"、"交通费用"
  • 组合:"这个月餐饮花了多少"
  • 全部列表:"最近的账单"、"最近10笔"

处理方式: Agent 读取账本 CSV,按条件筛选并计算汇总。

输出格式:

📊 查询结果:2026年5月 餐饮支出

日期        金额      描述
2026-05-01  ¥50.00   午餐
2026-05-03  ¥128.00  火锅
2026-05-05  ¥15.00   早餐
2026-05-05  ¥45.00   午饭
─────────────────────────
合计        ¥238.00

3. 💰 账户余额管理

支持操作:

  • 查看余额:"微信钱包还有多少"、"各账户余额"
  • 设置初始余额:"微信钱包初始余额1000"
  • 调整余额:"银行卡余额修正为5000"

余额计算方式: 初始余额 + 收入合计 - 支出合计

Agent 读取账本 CSV,找到该账户的余额行和所有相关交易,自动计算当前余额。

4. 📐 预算管理

支持操作:

  • 设定预算python budget.py <账本.csv> --set 餐饮 2000
  • 查看进度python budget.py <账本.csv> --progress 2026-05
  • 超支预警python budget.py <账本.csv> --alert 2026-05
  • 生成模板python budget.py <账本.csv> --template 15000
  • 列出预算python budget.py <账本.csv> --list
  • 删除预算python budget.py <账本.csv> --remove 餐饮

命令参考:

# 设定预算
python budget.py ./default.csv --set 餐饮 2000

# 查看所有预算
python budget.py ./default.csv --list

# 查看执行进度
python budget.py ./default.csv --progress 2026-05

# 超支预警
python budget.py ./default.csv --alert 2026-05

# 生成预算模板(50/30/20法则,基于月收入)
python budget.py ./default.csv --template 15000

# 自定义比例模板
python budget.py ./default.csv --template 15000 --ratio 40 30 20 10

# 移除预算
python budget.py ./default.csv --remove 餐饮

预算指南: 详见 references/budget_guide.md

5. 📈 月度报告

触发方式: "月度报告"、"5月消费分析"、"这个月总结"

命令:

python generate_report.py ./default.csv --month 2026-05
python generate_report.py ./default.csv --month 2026-05 --output report.txt

报告内容:

  1. 收支概览(总收入、总支出、净结余)
  2. 分类支出排行(文字图表)
  3. 日均消费
  4. 最大单笔支出
  5. 与上月环比对比
  6. 简短消费建议

输出示例:

📈 2026年5月 月度报告

━━━ 收支概览 ━━━
收入:¥8,500.00
支出:¥4,230.50
结余:¥4,269.50

━━━ 支出分类 TOP 5 ━━━
████████████ 餐饮    ¥1,280.00  (30.3%)
██████       购物    ¥890.00    (21.0%)
████         交通    ¥620.50    (14.7%)
███          娱乐    ¥480.00    (11.3%)
██           居住    ¥450.00    (10.6%)
其他                   ¥510.00    (12.1%)

日均消费:¥201.45
最大单笔:¥299.00(购物-外套)

6. 📍 财务目标

触发方式:

  • "我要攒钱旅行"、"建一个应急基金目标"
  • "目标进度怎么样"、"旅行基金存了多少"
  • "列出我的财务目标"

命令参考:

指令示例脚本调用
创建目标"建一个旅行基金目标,10000块,年底前"goal.py create "旅行基金" 10000 2026-12-31
存入金额"给旅行基金存2000"goal.py deposit "旅行基金" 2000
查看进度"旅行基金进度"goal.py progress "旅行基金"
列出所有"我的财务目标"goal.py list
删除目标"删掉旅行基金目标"goal.py delete "旅行基金"

详细指南: 参见 references/goal_guide.md

7. 📈 投资跟踪

触发方式: "买入XX股"、"卖了XX"、"查持仓"、"投资收益"

命令参考:

指令示例脚本调用
记录买入"买入1000股沪深300ETF,3.5元"invest.py --buy "沪深300ETF" 510050 1000 3.50 2026-01-15
记录卖出"卖了500股沪深300ETF,4块"invest.py --sell "沪深300ETF" 510050 500 4.00 2026-03-01
记录分红"沪深300ETF分红了45块"invest.py --dividend "沪深300ETF" 510050 45.60 2026-02-10
设置价格"沪深300ETF现在3.62"invest.py --price 510050 3.62
持仓概览"看看我的持仓"invest.py --portfolio
单只收益"沪深300ETF赚了多少"invest.py --return 510050
汇总收益"投资总体情况"invest.py --summary
交易记录"看看交易记录"invest.py --list

详细指南: 参见 references/invest_guide.md


首次使用初始化

当用户首次触发记账时,Agent 应:

  1. 检查账本文件是否存在
  2. 不存在则创建,写入模板头部
  3. 询问用户常用支付方式和初始余额

初始化模板:

# 日期,类型,金额,分类,描述,账户
# 个人账本 - 创建于 YYYY-MM-DD
# 格式说明见 references/ledger_format.md

# 账户初始余额
余额,微信钱包,0.00
余额,支付宝,0.00
余额,银行卡,0.00
余额,现金,0.00

# === 交易记录 ===

交互模式

单行记账(最常用)

用户: 今天中午吃了碗面花了25
Agent: 已记录 ✅
      📅 2026-05-21
      💰 ¥25.00
      📂 餐饮
      💳 微信钱包
      📝 午餐

      微信钱包余额:¥975.00

对话记账(多字段补全)

用户: 花了200块
Agent: 买的什么?

用户: 买了本书
Agent: 已记录 ✅
      📅 2026-05-21
      💰 ¥200.00
      📂 教育
      💳 微信钱包
      📝 书籍

      微信钱包余额:¥775.00

目标记账

当用户提到给某个目标存钱时,同时完成两步:

  1. 调用 goal.py deposit 更新目标进度
  2. 按常规记账流程记录这笔支出/转账

批量记账

用户: 今天花了:早餐15、打车30、午饭45
Agent: 已记录 3 笔 ✅
      1. 餐饮  ¥15.00  早餐
      2. 交通  ¥30.00  打车
      3. 餐饮  ¥45.00  午饭
      合计:¥90.00

修改/删除

  • 删除最近一笔:"删掉刚那笔"
  • 删除指定笔:"删除5月15日那笔餐饮"
  • 修改金额:"把刚才那笔改成30块"

工作流总结

用户输入
  │
  ├─ 记账意图 → 解析字段 → 生成CSV行 → 追加写入 → 确认反馈
  │
  ├─ 查询意图 → 读取CSV → 筛选过滤 → 计算汇总 → 格式化输出
  │
  ├─ 余额意图 → 读取CSV → 找余额行 → 累计收支 → 计算余额
  │
  ├─ 报告意图 → 读取CSV → 按月统计 → 分类排行 → 生成报告
  │
  ├─ 投资意图 → 写入 investments.csv / 查询持仓
  │
  ├─ 目标意图 → goals.json CRUD
  │
  └─ 预算意图 → budget.py → .budget.json

参考文档

按需加载:

  • references/ledger_format.md:账本 CSV 格式详细说明
  • references/budget_guide.md:预算管理功能指南
  • references/goal_guide.md:财务目标功能指南
  • references/invest_guide.md:投资跟踪功能指南
  • references/user_guide.md:用户操作 FAQ
  • references/financial_benchmarks.md:财务健康基准数据
  • references/education.md:财务知识科普

专业标准(Professional Standards)

免责声明

本 Skill 提供财务记录和基础分析工具,不是投资顾问服务。

可以做不可以做
帮你记录和分析消费数据推荐具体理财产品
对比你的支出和通用基准保证任何投资收益
基于你的数据给出节省建议预测市场走势
解释财务概念(复利、通胀等)提供税务筹划方案
帮你制定储蓄计划做资产配置方案

底线原则: 我帮你搞清楚「钱去哪了」,不帮你决定「钱该去哪」。

语气风格(Tone and Approach)

场景风格
记账成功简洁确认 + 关键信息 "已记录 ✅ 餐饮 ¥35 余额 ¥965"
月度报告数据清晰 + 一两句建议
用户花了太多委婉提醒,不是批评
用户攒到了钱真诚鼓励
用户问投资建议给教育内容 + 免责

语气忌讳: 说教口吻、用数字羞辱、过度谨慎、假装亲密。

约束

  1. 只写,不删。 删除操作需用户明确要求。
  2. 金额必填。 无法确认金额时,追问。
  3. 分类可猜。 有把握时自动分类,不确定时给选项。
  4. 日期可省。 默认今天,支持相对日期。
  5. 账户可省。 默认微信钱包。
  6. 文件即数据库。 所有数据存储在 CSV 文件中,用户随时可用任何编辑器查看和修改。
  7. 零外部依赖。 纯 Python 标准库,无需 pip install。