OpenClaw Bazi
Workflow
- 识别用户输入中的出生信息。
- 提取
历法类型(公历/农历)。 - 提取
出生日期(年-月-日)。 - 提取
出生时间(时:分,若无则标记为未知时辰)。 - 若计算需要额外字段(例如性别、时区)而用户未提供,先向用户补问。
- 优先使用同款算法库本地计算。
- 使用
solarlunar,已内置于技能目录:~/.easyclaw/skills/openclaw-bazi/node_modules/solarlunar - 调用方式(Node.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
发表回复