OpenClaw Bazi
Workflow
-
识别用户输入中的出生信息。
- 提取历法类型(公历/农历)。
- 提取出生日期(年-月-日)。
- 提取出生时间(时:分,若无则标记为未知时辰)。
- 若计算需要额外字段(例如性别、时区)而用户未提供,先向用户补问。 -
优先使用同款算法库本地计算。
- 使用solarlunar,已内置于技能目录:~/.easyclaw/skills/openclaw-bazi/node_modules/solarlunar
- 调用方式(Node.js):
js const solarlunar = require('/Users/andrew/.easyclaw/skills/openclaw-bazi/node_modules/solarlunar').default; const result = solarlunar.solar2lunar(year, month, day); // result.gzYear / result.gzMonth / result.gzDay // 农历转公历:solarlunar.lunar2solar(lYear, lMonth, lDay, isLeap)
- 公历输入:直接参与干支计算。
- 农历输入:先用lunar2solar转为公历,再参与干支计算。
- 年柱、月柱、日柱:使用算法库返回的gzYear、gzMonth、gzDay。
- 时柱:按传统"日干起时"规则推导(甲己日起甲子、乙庚日起丙子、丙辛日起戊子、丁壬日起庚子、戊癸日起壬子)。
- 时干计算公式:hourGanIndex = (startGanIndex + hourZhiIndex) % 10
- 日干%5=0 → startGanIndex=0(甲)
- 日干%5=1 → startGanIndex=2(丙)
- 日干%5=2 → startGanIndex=4(戊)
- 日干%5=3 → startGanIndex=6(庚)
- 日干%5=4 → startGanIndex=8(壬) -
本地不可用时回退网页计算。
- 访问https://t.bugutell.com/。
- 按用户提供内容选择公历或农历并计算。
- 仅将网页结果作为回退,不覆盖本地已成功计算结果。 -
结构化提取结果。
- 至少提取:年柱、月柱、日柱、时柱(若时辰未知则显式标注)。
- 如果页面提供五行统计、十神、纳音、喜忌等,按"有则返回"的原则附带。
- 遇到内容不确定时,优先返回算法库或页面原字段名,避免自行改写术语。 -
返回给用户。
- 使用简洁格式返回,不输出无关解释。
- 标注你使用的是公历还是农历,以及是否使用了未知时辰。
- 标注计算来源:solarlunar算法库或t.bugutell.com网页计算。
- 若结果依赖缺失信息(如出生时间),明确告知误差来源。
Output Format
优先使用以下结构:
八字计算结果
- 历法: 公历/农历
- 出生: YYYY-MM-DD HH:mm(或"时辰未知")
- 年柱: XX
- 月柱: XX
- 日柱: XX
- 时柱: XX(若未知则写"未知时辰")
附加信息(如有)
- 五行: ...
- 十神: ...
- 纳音: ...
- 其他: ...
Accuracy Rules
- 优先基于同款算法库的实际计算结果回复,不在未计算时凭空推断八字。
- 农历输入必须先按同款算法库转换,不要手工估算或口算转换。
- 时柱推导必须基于"日干 + 时支"的标准映射,不要简化为固定表。
- 发现输入歧义(例如"凌晨 1 点"跨日争议)时先确认再计算。
Reference
- 结果字段模板:
references/result-template.md - 同款算法说明:
references/algorithm-source.md