| name | family-ledger |
| version | 1.3.0 |
| description | 家庭账本管理技能 - 日常记账、人情往来、借款报销。
触发词:「记账」「记一笔」「查账」「统计」「人情」「压岁钱」「随礼」「借款」「报销」「账本」。
当用户提到金额、收支、转账、借钱、还钱、礼金、压岁钱时使用。
|
| metadata | {"emoji":"📒","keywords":["账本","记账","家庭账本","收支","人情","借款"]} |
Family Ledger - 家庭账本
⚠️ 飞书兼容性:输出禁止使用 Markdown 表格(飞书不支持)。请使用纯文本+emoji 格式,或使用列表。
记账技能,全家人可以通过不同渠道使用。
参考资源
本技能配套以下参考文件(位于 references/ 目录):
| 文件 | 用途 |
|---|
references/user-mapping-template.json | 用户映射模板 |
references/daily-record-template.json | 日常账记录模板 |
references/social-record-template.json | 人情账记录模板 |
references/borrow-record-template.json | 借款账记录模板 |
references/checklist.md | 记账前检查清单 |
记账前建议参考 references/checklist.md 确认字段完整性。
用户识别
用户映射
- 映射文件:
/opt/data/hermes/family-ledger/user-mapping.json
- 格式:
{"ou_xxx": "显示名", ...}
- 从当前会话的 openid 查找对应显示名,用于
recorded_by 字段
未知 openid 处理流程
当 openid 不在 user-mapping.json 中时:
- 先确认是否 openid 变化:询问"你之前用过这个账号吗?还是第一次使用?"
- 排除旧用户换号的情况:如果用户说"我是 XXX",检查 user-mapping.json 中是否有同名用户,如有则说明可能是 openid 变了,直接更新映射
- 确认是新用户后:询问"你希望怎么称呼?",得到名字后经用户同意写入 user-mapping.json
记账人规则
- 禁止硬编码 payer/recorded_by 名字:必须从 user-mapping.json 查当前会话 openid,匹配到谁就是谁
- 新建记录时自动填入
recorded_by(显示名)
账本文件位置
/opt/data/hermes/family-ledger/
├── daily.json # 日常账本
├── social.json # 人情账本
├── borrow.json # 借款报销账本
└── user-mapping.json # 用户映射
日常账本 (daily.json)
字段
| 字段 | 类型 | 说明 |
|---|
| date | string | 日期,格式 YYYY-MM-DD |
| type | string | 类型:收入 / 支出 |
| amount | number | 金额,单位 元 |
| category | string | 类别 |
| house | string | 房屋(可选) |
| child | string | 孩子(教育类别可选) |
| note | string | 备注 |
| recorded_by | string | 记账人(必填,自动从消息发送者判断) |
支出类别
餐饮、交通、购物、工资、房租、水电、通讯、医疗、教育、娱乐、房屋维护、其他
收入类别
工资、奖金、投资、兼职、礼金、其他
房屋名称
军龙苑、保利大都会、东方文创园、洛铜嘉苑、龙锦嘉园
当备注中出现上述房屋名称时,自动归类为"房屋维护",并在 house 字段记录。
人情账本 (social.json)
字段
| 字段 | 类型 | 说明 |
|---|
| date | string | 日期,格式 YYYY-MM-DD |
| type | string | 类型:压岁钱 / 随礼 / 其他 |
| target | string | 收款方(给谁) |
| giver | string | 给付方(谁给的) |
| giver_child | string | 给付方的孩子名字 |
| amount | number | 金额,单位 元 |
| note | string | 备注 |
借款报销账本 (borrow.json)
字段
| 字段 | 类型 | 说明 |
|---|
| date | string | 日期,格式 YYYY-MM-DD |
| type | string | 类型:借款 / 报销 |
| direction | string | 方向:借出 / 借入 / 报销给我 / 我报销 |
| person | string | 相关人 |
| amount | number | 金额,单位 元 |
| due_date | string | 应还/应报销日期(可选) |
| status | string | 状态:未还 / 已还 / 待报销 / 已报销 |
| note | string | 备注 |
指令格式
记一笔账
自动判断账本类型:
- 日常类关键词(餐饮/交通/购物/工资/房租/水电/通讯/医疗/教育/娱乐/房屋维护)→ 日常账
- 人情类关键词(压岁钱/随礼/人情)→ 人情账
- 借款类关键词(借/还/报销)→ 借款账
时间处理:
- 用户没说时间 → 默认当天
- 用户说了时间 → 按用户说的
示例:
记一笔账:50元 餐饮 午餐(自动使用当天日期)
记一笔账:2026-03-20 500 压岁钱 给儿子 张三 张小明
记一笔账:借出 李四 1000 借钱看病
房屋名称确认:当备注中出现房屋名称时,先确认再记录。确认后可询问:"还有其他房产需要录入吗?"
教育类别孩子确认:
- 首次记录教育费用时,询问家里孩子数量和昵称
- 已有孩子信息时,直接归类到对应孩子名下
查询记录
查日常账 [时间]
例如:查日常账 2026年3月
查人情账 [时间]
例如:查人情账 今年
查借款账 [状态]
例如:查借款账 未还
统计汇总
统计日常账 [时间] [类别]
例如:统计日常账 2026年3月 餐饮
统计人情账 [时间]
例如:统计人情账 今年
注意事项
- 日期格式统一为 YYYY-MM-DD
- 金额为数字,单位 元
- 状态更新需要明确说明
- 查询时支持模糊匹配(如"彤彤家"会匹配包含"彤彤"的记录)
- 时间默认值:用户未指定日期时,自动使用当前日期(Asia/Shanghai 时区)
- 账本类型自动判断:根据关键词自动路由到对应账本
- 房屋名称确认:首次提到房屋名称时需确认,后续自动识别
- 孩子信息:教育类费用需要关联到具体孩子
- 时区:所有日期计算统一使用 Asia/Shanghai(UTC+8)
每日汇总格式
⚠️ 禁止使用 Markdown 表格(飞书不支持)。所有数据用纯文本+emoji 或列表展示。
汇总部分:
📊 【XX 月账本汇总】
💰 收入:X.XX 元
💸 支出:X.XX 元
📊 结余:X.XX 元
━━━ 支出构成 ━━━
分类:金额 元
━━━ 收入构成 ━━━
分类:金额 元
━━━ 今日明细 ━━━
YY-MM-DD 支出/收入 分类 金额 备注 记账:记账人
每条明细格式:YY-MM-DD 类型 分类 金额 备注 记账:记账人