记账技能 (personal-accounting Skill)
功能概述
- 文字记账:解析自然语言,提取金额、分类、备注
- 图片记账:直接看图识别账单金额,由模型判断最终支付金额
- 按天存储:账单写入
bills/YYYY-MM-DD.md,同一天记录追加到同一文件
目录结构
personal-accounting/
├── SKILL.md
├── bills/ # 账单存储目录(自动创建)
│ └── YYYY-MM-DD.md
├── scripts/
│ └── record_bill.py # 账单写入/查询
└── references/
└── categories.md # 消费分类关键词参考
⚠️ 使用前提
图片记账依赖多模态模型(能看图的模型)。如果你只发图片但模型没有识别,请检查当前使用的模型是否支持图片输入。
推荐模型:Claude 3.5 Sonnet / Claude 3 Opus / GPT-4o 等支持视觉的模型。
使用流程
Step 1:判断输入类型
| 输入类型 | 处理方式 |
|---|---|
| 纯文字 | 直接解析金额、分类、备注 |
| 纯图片(无文字) | 直接看图记账,不询问用户意图 |
| 图片+文字 | 看图判断金额,用户文字作为备注或分类提示 |
Step 2:解析账单信息
提取字段:
| 字段 | 说明 |
|---|---|
amount | 金额(元,保留2位小数) |
type | expense(支出)/ income(收入) |
category | 分类,参考 references/categories.md |
note | 备注(可选) |
date | 日期(默认今天) |
文字解析关键词:
- "花了 / 付了 / 消费 / 支出" → expense
- "收到 / 收入 / 进账" → income
Step 3:图片识别(如有图片)
直接观察图片内容,按以下优先级判断金额:
- 🥇 「实付 / 实收 / 已支付 / 需付 / 支付金额」→ 用户最终付出的钱
- 🥈 「合计 / 总计 / 总额 / 应付」→ 订单总价
- ❌ 忽略:单品价格、优惠减免、配送费、税额、找零
- 若有多个候选,选语义最接近「最终实际支付」的数字
- 无法判断时,描述看到的内容并请用户确认金额
Step 4:写入账单文件
python scripts/record_bill.py \
--amount <金额> \
--type <expense|income> \
--category <分类> \
--note "<备注>" \
--date <YYYY-MM-DD> # 可选,默认今天
Step 5:回复用户
✅ 已记录
📅 2024-01-15 🏷️ 餐饮 💸 支出 ¥20.00
📝 备注:外卖黄焖鸡
📊 今日累计支出:¥68.00
账单文件格式
bills/YYYY-MM-DD.md:
# 账单 2024-01-15
| 时间 | 类型 | 分类 | 金额 | 备注 |
|------|------|------|------|------|
| 08:30 | 支出 | 餐饮 | ¥15.00 | 早餐 |
| 12:15 | 支出 | 餐饮 | ¥20.00 | 外卖黄焖鸡 |
| 18:00 | 收入 | 工资 | ¥500.00 | 兼职 |
---
**今日支出:¥35.00 | 今日收入:¥500.00 | 净额:+¥465.00**
查询功能
python scripts/record_bill.py --list # 今日账单
python scripts/record_bill.py --list --date 2024-01-15 # 指定日期
python scripts/record_bill.py --summary --month 2024-01 # 月度汇总
错误处理
| 场景 | 处理方式 |
|---|---|
| 图片模糊/看不清金额 | 描述看到的内容,请用户确认 |
| 图片非账单 | 告知用户并询问是否手动输入 |
| 未指定分类 | 根据内容推断,告知用户可纠正 |