← 返回 Skill 列表
extension
分类: 效率与办公API Key 暂未确认

bazitiaoshi

# 出生时辰推断 skill(bazi-shichen-infer) ## 一句话介绍 用户只知道自己的出生年月日、却不知道具体出生时间时,用这个 skill 通过**多轮针对性问答**,结合流年运势数据反推出最可能的出生时间点。 ## 它能做什么 - 把"我不知道几点生的"变成一个**可反复追问、逐步收敛**的过程。 - 接口对 **13 个时间点(0、1、3、5、7、9、11、13、15、17、19、21、23 点)** 逐一编码,得到每个时间点的流年字母码(感情/财/印/官/比/食)。 - 不同时间点 → 不同字母码。把你的**历年真实经历**翻译成字母档位,逐个时间点比对淘汰,直到收敛到唯一时间点,或穷尽手段后如实告知"无法区分"。 ## 你需要提供 1. **出生年月日**(公历)+ **性别** —— 必填,缺了没法跑。 2. **2~4 个记忆清晰的年份**,每个年份说一件具体的事(哪年感情如何、哪年工作变动、哪年破财/升职/考试……)。年份越具体、事件差异越大,收敛越快。 3. (可选)**已知的出生时间范围**,比如"长辈说是上午生的"——有范围直接砍掉一半候选。 4. (可选)**年份的农历/虚岁换算**,避免把年份搞错。

person作者: otor1234hubModelScope

出生时辰推断 — 通过流年事件反推时辰

触发条件

用户知道自己出生年月日,但不知道具体出生时间(时辰),希望推断出来。

核心原则(两条铁律)

  1. 问到能确认为止,不设问题数量上限。 不是问三四个就收尾——只要候选还剩 ≥2 个时间点,就继续问(追问新维度、换年份查码),直到收敛到唯一时间点,或穷尽手段后明确告知"无法区分"及原因。
  2. 不确定就问,绝不自己猜。 任何无法唯一确定的信息都必须向用户提问澄清,包括但不限于:
    • 用户说"那大概一年""差不多"→ 问具体公历年份(农历/虚岁也要先换算确认)
    • 用户描述的事件能对应多个字母档位(如"还行吧"→ b?a?c?)→ 用具体的追问逼出明确档位:"是顺利得到好处(e~g),还是客观没得到但你心态不错(i),还是平淡无波(a/c)?"
    • 用户说"那年挺顺利的"但没说是哪方面 → 问具体维度(感情?工作?收入?社交?)
    • 用户只说"出了件事"但说不清方向 → 问清是得到还是失去、主观开不开心
    • 用户给出的年份/日期/性别与之前说的矛盾 → 指出矛盾并让用户确认 判断标准:这条信息如果不能 100% 确定地翻译成字母档位或年份,就必须再问一轮。

核心原理

  • 出生时间只取 13 个时间点:0, 1, 3, 5, ..., 23(0 点=早子时,1 点=丑时,3 点=寅时,...,23 点=夜子时)。
  • 接口 POST https://online.miaoxingjundd.com/api/oa/aiwords 返回该出生时间在某年的运势字母码。
  • 不同时辰 → 不同字母码。把 13 个时辰的码列出来,同一字母组合的时辰无法区分,不同的就能区分。
  • 向用户问"某年发生了什么",翻译成字母含义后,与 13 列比对,逐步淘汰,最终收敛到少数时辰或唯一时辰。

接口(已实测)

请求

POST JSON:

{"birth":"1988-8-6-9","sex":"男","select":"流年","start":2025,"end":2027,"flag":0}
  • birth 格式 YYYY-M-D-H,用户只给年月日,HH 用 13 个时间点拼接(0,1,3,5,...,23)。日期补零与否均可(1988-8-6-9 和 1988-08-06-9 实测都有效);2 位年(88-8-6-9)会 502,必须 4 位年。
  • sex:男/女(用户输入)。
  • select 固定 流年,flag 固定 0。

关键陷阱(实测,务必遵守)

  1. 端点是 aiwords(带 s),aiword(不带 s)返回 404。
  2. start/end 的实际行为:只返回 start 那一年(key 为 "{start}年")。且 end - start < 2 时稳定返回"服务器异常"(实测 end=Y+1 必失败,Y+2 起可用)。所以查第 Y 年:固定传 start=Y, end=Y+2,若仍报异常则 end=Y+3、Y+4、Y+5 轮换重试。
  3. birth 必须带小时:1988-8-6(不带小时)稳定返回"服务器异常",1988-8-6-9(带小时)正常。
  4. 返回结构:{"code":200,"data":null,"msg":"..."}。真正数据在 msg 里,是一段中文说明夹着一个 Python 字典字面量: 感情运势:{'2025年': {'感情':'g','事业/考试':{'财':'g','印':'g','官':'g','比':'g','食':'g'}}}。字典的key是... 解析方法:取 : 与 。 之间的文本 eval 成 dict(仅接口返回的字面量,安全)。
  5. 偶发 502/服务器异常 → 重试(脚本内置 8 次轮换重试 + 本地缓存)。

字母含义(解读用户事件 ↔ 码 的翻译表)

| 字母 | 含义 | |---|---| | a | 平稳延续:前一年有→今年保持;前一年没有→今年出现 | | b | 客观差强人意/平稳无挫折,但主观不开心、累心 | | c | 客观上没有,或客观不顺 | | d | 不顺,失去或没有 | | e | 顺利,有/获得好处 | | f | 顺利,有/获得好处 | | g | 顺利,有/获得好处 | | h | 客观顺利(得到了),但主观不开心、心情不愉悦 | | i | 客观不顺(没有),但主观比较开心 |

e/f/g 都是"顺利/有/好处",互相无法区分(都是好事),区分度来自 a~d、h、i。解读时重点问"好/坏 + 主观感受"。

维度含义

| 维度 | 含义 | |---|---| | 感情 | 感情走势(顶层 key) | | 财 | 做事执行力、收入、自我成就感 | | 印 | 工作/学业(按年龄判断)、稳定感安全感 | | 官 | 考试、领导关系、客户关系、名气尊重感 | | 比 | 同事朋友关系、社交圈子大小 | | 食 | 物质能力、生活快乐度、是否得到想要的东西 |

工作流

第 1 步:收集信息

问用户:

  1. 出生年月日(公历)和性别
  2. 已知出生时间的范围("上午/下午/晚上?家人提过吗?"——有范围直接砍掉一半)
  3. 让用户回忆 2~4 个记忆清晰的年份 的事(越具体越好:那年感情/工作/考试/收入/社交/开心程度怎样)。优先选事件差异大的年份(如"最好的一年"和"最惨的一年")。
  4. 若用户说"那年平稳/跟上年一样"→ 字母 a 的判定需要上一年的码,--prev 会多查前一年。

第 2 步:跑脚本拿 13 时间点对照表

python3 {skill_dir}/scripts/aiword_hours.py --birth 1988-8-6 --sex 男 --years 2020,2023,2025
# 需要解读字母a时加 --prev
# 需要原始数据做精确推理时加 --json
  • 脚本对 13 个时间点 × 每个年份逐一调用(结果缓存 ~/.cache/aiword-hours/,重复查询/换年份组只需增量调用;3 年全量约 5 秒)。
  • 输出:①13 时间点 × N 年的字母表 ②按字母组合分组(同组无法区分)③组间差异字段提示。

第 3 步:多轮问答筛选(循环,直到收敛到唯一时间点)

每轮流程:

  1. 看脚本的"组间差异提示"——差异落在哪个维度(如 2020 年的"比/食"、2023 年的"感情"),就针对那个维度提问。例:
    • 差异在 比 → "2020 年你跟同事朋友关系怎样?社交圈子变大还是变小?"
    • 差异在 感情 且码是 h vs g → "2023 年感情有进展吗?得到的过程你开心吗?"(h=得到但不开心 vs g/e/f=得到且开心)
    • 差异在 d vs e → "2020 年有没有失去/破财/不顺的事?"
  2. 把用户回答翻译成字母档位(好/坏/平稳/主观感受),对照 13 列淘汰不符的时间点。
  3. 回答模糊/不确定 → 当场追问澄清(见核心原则2),不要用"我觉得应该是x档"这种猜测继续。
  4. 若当前年份组区分不完(同组还剩 ≥2 个时间点),换年份再查(--years 追加新年份,缓存复用),然后继续问。
  5. 若 13 列在某年份组全相同 → 这组年份没用,换年份。
  6. 候选还没剩到 1 个就继续——这就是"问到确认为止"。每轮只问 1~2 个最有力的问题(节奏问题,不是终止条件)。

第 4 步:给出结论(只在能确认时才下结论)

  • 收敛到唯一时间点 → 报:"最可能的出生时间是 XX 点(X 时)",并说明依据(哪些年份哪些维度支持、被淘汰的时间点各被哪条证据排除)。
  • 还剩 2~3 个 → 不下最终结论:告诉用户目前缩小到哪几个,再追问 1 个能区分它们的针对性问题(或换年份查码),然后继续第 3 步。
  • 穷尽手段仍无法区分(用户对该差异维度的经历描述无法区分、或所有年份都查完了还同组)→ 如实说明:"只能确定出生时间在 X 和 Y(之间),按现有信息无法进一步区分",列出还差什么信息能定(例如"如果告诉我 2018 年你的工作变动情况,就能区分这两个")。
  • 诚实说明置信度,不要为了让用户满意而把"大概率是"说成"就是"。
  • 时间点 → 时辰对照:0/23 点=子时(23-1 点,分早子/夜子)、1 点=丑时(1-3)、3 点=寅时(3-5)、5 点=卯(5-7)、7 点=辰(7-9)、9 点=巳(9-11)、11 点=午(11-13)、13 点=未(13-15)、15 点=申(15-17)、17 点=酉(17-19)、19 点=戌(19-21)、21 点=亥(21-23)。

注意事项

  • 用户口述年份可能是虚岁/农历,先确认"公历 2020 年还是 2021 年?"再查。
  • 不要一次问太多问题;每轮基于上轮回答决定下一问(针对性提问是本 skill 的核心价值)。
  • 脚本只读接口,无副作用;缓存文件可安全删除。
  • data 字段永远是 null,别看它;数据只在 msg 里。
  • 接口可能不稳定(502/服务器异常),脚本已内置 end 递增重试;仍失败就过几分钟再试或告知用户。