人情往来账本(renqing-ledger)
这个 skill 解决什么痛点
中国式人情社会里,份子钱是绕不开的账,但几乎没人认真记——
- 回礼时想不起对方随过多少:三年前他结婚我随了 600 还是 800?现在他孩子满月我该包多少?包少了失礼,包多了肉疼。
- 谁欠谁人情一笔糊涂账:常来常往的亲戚朋友十几个,送出收到几十笔,到底和谁"持平"、欠谁的还没还,全凭模糊印象。
- 金额不会定:要不要比对方当年多一点(通胀+情面)?尾数怎么讨吉利、怎么避开 4?没历史记录的同事结婚又该随多少?
目标用户:所有会遇到婚礼/满月/乔迁/葬礼/升学宴随礼的人,尤其是往来对象多、逢年过节人情频繁的家庭。
核心能力
- 随手记账:送出(out)/ 收到(in)双向记录,支持事件、关系、非现金礼物、备注;事件口语自动归一("喜酒/婚宴"→婚礼,"白事/帛金"→葬礼)。
- 净差额一目了然:
person看单人往来明细与"谁欠谁";balance全员净差额榜,我欠得最多的排最前,提醒找机会还上。 - 回礼建议(核心):
suggest基于对方历史随礼——优先取同类事件最近一笔,按每年 +5% 时间加码(上限 10 年),吉利取整(整百/整五十、金额避开数字 4),输出「持平 / 加码 / 加深情谊」三档;无历史则按内置「9 类事件 × 5 档关系」常见区间给参考。 - 年度统计与总览:
stats看某年送出/收到总额与分事件明细;report生成按人分组的 markdown 总览,可导出打印。 - 纯本地零依赖:仅用 Python 标准库,数据存
~/.renqing/ledger.json,不联网、不上传,隐私安全。
使用方法
脚本位置:本 skill 目录下的 renqing.py,用 python3 renqing.py <子命令> 运行。
1. 记一笔
# 送出:同事小李结婚,随了 500
python3 renqing.py add --dir out --person 小李 --event 婚礼 --amount 500 --relation 同事
# 收到:表哥给孩子的满月红包 800(补记历史日期)
python3 renqing.py add --dir in --person 表哥 --event 满月 --amount 800 --date 2024-05-20 --relation 亲戚
# 非现金礼物也能记
python3 renqing.py add --dir in --person 王姐 --event 乔迁 --amount 300 --gift "空气炸锅一台(折价)"
2. 查往来 / 净差额
python3 renqing.py person 表哥 # 和表哥的全部往来 + 谁欠谁
python3 renqing.py balance # 全员净差额榜(负数 = 我欠对方)
python3 renqing.py list --year 2026 --dir out # 今年送出的流水
3. 回礼建议(最常用)
# 表哥要办乔迁宴,我该包多少?
python3 renqing.py suggest 表哥 --event 乔迁
# → 依据他 2024 年满月随的 800,按年份加码后给出 持平/加码/加深情谊 三档吉利金额
# 没有往来历史的新同事结婚
python3 renqing.py suggest 小张 --event 婚礼 --relation 同事
# → 按「婚礼 × 同事」常见区间 ¥200~¥600 给参考 + 稳妥值
4. 统计与导出
python3 renqing.py stats --year 2026 # 年度人情收支
python3 renqing.py report --output 人情总览.md # 按人分组的 markdown 报表
python3 renqing.py edit 3 --amount 600 # 改一笔
python3 renqing.py remove 5 # 删一笔
Agent 工作流建议
当用户说「XX 结婚我该随多少 / 记一下我给谁随了多少 / 我和 XX 谁欠谁人情」时:
- 涉及"该包多少" → 先
person <姓名>查有无历史,再suggest <姓名> --event <事件>(无历史时向用户确认关系档位后加--relation)。 - 涉及"记一笔" → 从用户口语中提取 方向/姓名/事件/金额/日期,调
add;事件写口语原词即可,脚本会自动归一。 - 用户问"今年随了多少钱" →
stats --year <年>。 - 年底或用户要盘点 →
report --output导出给用户。
回礼建议算法(透明可解释)
有历史:base = 对方同类事件最近一笔(无同类则取最近一笔收到)
adjusted = base × 1.05^min(距今年数, 10)
三档 = lucky_round(adjusted × {1.0, 1.2, 1.5})
无历史:查「事件 × 关系」内置区间表,给区间 + 中位数吉利取整
lucky_round:<200 向上取 50 整倍,≥200 取 100 整倍;金额任意一位含 4 则继续上调
数据与隐私
- 数据只存本机:
~/.renqing/ledger.json(目录可用环境变量RENQING_HOME覆盖,便于测试或多账本)。 - 写入采用临时文件 + 原子替换,不怕中途断电损坏。
边界声明
- 金额建议基于常见习俗与你的历史记录,仅供参考——各地区、各家庭习俗差异很大,请以当地惯例和自身经济状况为准,量力而行、心意为重。
- 本工具不涉及任何支付功能,只做记录与建议。