python3 scripts/main.py statuspython3 scripts/main.py add <name> <年> <月> <日> <时> <性别>(分可省略)scripts/calc.py)→ 保存到 data/users.json → 显示摘要python3 scripts/main.py active <name> 激活is_active = true,此后每条回复注入八字摘要python3 scripts/main.py statuspython3 scripts/main.py active <name1,name2,...>is_active = true,注入对应八字摘要is_active = falsetext
data/
├── users.json # 所有用户的生日+八字(JSON格式)
└── active.json # 当前激活的用户列表
命令功能python3 scripts/main.py add <name> <year> <month> <day> <time> <gender>添加新用户(time格式: 16 / 16:30 / 下午4 / 晚8)python3 scripts/main.py update <name> <year> <month> <day> <time> <gender>更新已有用户python3 scripts/main.py list列出所有已保存用户python3 scripts/main.py view [name]查看某人八字详情(默认当前激活)python3 scripts/main.py remove <name>删除某人八字python3 scripts/main.py active [name1,name2,...]设置激活用户,多人用逗号分隔python3 scripts/main.py status检查激活状态python3 scripts/main.py joint [name1,name2]联合分析(默认当前激活用户)
text
━━━ 八字信息 ━━━
姓名:{name} | {gender} | 农历{lunar_str}
八字:{year_ganzhi} {month_ganzhi} {day_ganzhi} {hour_ganzhi}
生肖:{shengxiao} | 日主:{me}({yinyang})
五行:{wuxing} | {mingge} | 旺衰:{wangshuai}
喜用:{xiyong}
神煞:{shensha}
大运:{current_dayun}({start_age}-{end_age}岁)
━━━ 八字信息 ━━━
text
━━━ 联合分析 ━━━
【{name1}】{gender} | {bazi_str} | {mingge}
【{name2}】{gender} | {bazi_str} | {mingge}
━━━ 合冲刑害 ━━━
年支关系:{analysis}
日支关系:{analysis}(夫妻/伴侣位)
月支关系:{analysis}
━━━ 五行契合 ━━━
{analysis}
━━━ 婚配分析 ━━━
{analysis}(仅两人时)
━━━ 八字信息 ━━━
关键词动作开始算命、 算命、 看看八字、 我的八字激活算命流程停止算命、 不算了、 退出算命退出算命模式联合分析、 合盘、 双人八字触发联合分析添加八字、 加个人、 录入八字添加新用户查看用户、 都有谁、 八字体检列出所有已保存用户
地支关系分析:
五行契合分析:
婚配分析(仅两人时):
八字计算:完全本地,不依赖任何远程API
依赖库: scripts/lunar_core.py 自包含单文件,提供本地农历换算和四柱计算。
lunar_core.py 调试经验(2026-04-26 已修复):
jd_greg() 反算公历年时曾少减 4800,导致 Solar.toYmd() 出现 67870114 这类错误年份;现已修正 JD → Gregorian 转换。_from_solar() 现在按月首 JD 反推真实农历年,避免 11/12 月重复数据和立春年混用;立春年柱判断放在 _compute() 中按 solar year 查询 LICHUN_JD/ LICHUN_YMD。int(s.toYmd()) / int(LICHUN_YMD[year]),exact 年柱用含时分秒的 Julian Day 比较。农历计算:完全自包含的 lunar_core.py,基于 LY_DATA V6B 天文表,覆盖 1899-2060 年。
命格算法(已验证 12/12 测试全过):直接用 TEN_GOD[日干][月干] → 格局映射, 一行代码:
python
def calc_mingge(day_stem, month_stem):
return TEN_GOD_TO_GE[TEN_GOD[day_stem][month_stem]]
喜用神算法:
calc.py TEN_GOD table bug(2026-04-26 已修复):
代码位置:所有 Python 文件统一放在 scripts/ 下,数据文件放在 data/ 下。
代码架构(6个文件): text
scripts/
├── main.py # CLI 入口,命令路由,时间解析
├── calc.py # 八字计算核心(常量和计算逻辑)
├── report.py # 输出格式化(单人详情 / 联合分析)
├── store.py # 数据存储(users.json / active.json)
├── lunar_core.py # 自包含农历/八字底层换算
└── test_lunar_core.py # 单元测试(12 个固定样例 + 128 个随机日期)
测试命令: python3 -m unittest scripts/test_lunar_core.py
已实现功能:
python3 scripts/main.py joint 支持2-N人联合分析,默认用当前激活用户本 skill 的多人+联合分析架构可复用到其他领域:
users.json(key=alias)、 active.json(当前激活列表)scripts/main.py(入口)+ scripts/calc.py(计算)+ scripts/report.py(展示)+ scripts/store.py(存储)+ scripts/lunar_core.py(农历换算)