# Core 算法口径与验证范围（2026-10）

本文对应 SDK 的 15 个公开领域、规范 text/json 与 MCP 契约。算法正确性指所声明规则下的计算、边界与输出一致性；传统术数的判断语句是规则推演，不构成预测效果的验证。不同流派的规则须用显式选项区分。

## 时间和历法

公历日期严格校验，支持公元 1–9999 的输入表示，不依靠 JavaScript 对 0–99 年的默认重映射。输入范围并不等于天文/历史历法全范围精度承诺。紫微与奇门明确限制为 1900–2100 年；四柱反推范围上限为 9998，单次最多 1200 年。

命理工具默认 `Asia/Shanghai`；占星省略时区时按坐标推导，无坐标默认 `Etc/GMT`。IANA 时区按运行环境时区数据库解析，服务器自身 `TZ` 不决定输入含义。夏令时重复与跳过时刻默认拒绝，支持 `earlier`、`later`、`compatible` 的工具在输出保存选择。反推默认排除无法唯一解析的分钟，并记录数量。

八字、六爻、奇门、六壬与传统太乙的交节通过输入时区解析实际时刻，再转换到历法库的固定 UTC+8 基准（`Etc/GMT-8`）；此基准不采用 `Asia/Shanghai` 的历史夏令时。明确带偏移的 ISO 时间戳保留原瞬间，不在重复时段重新消歧。大运 `startSolarTimezone` 同样标明固定 UTC+8，并独立保存出生时区和真太阳时来源。八字日/时柱取本地或真太阳时；`dayBoundary: midnight` 默认午夜换日，`zi` 为 23 点换日，时干仍采用历法库的子时规则。各领域的日界口径没有强行合并。

八字与大运可以省略出生时辰（`birthHour`）：只排年、月、日三柱，不排时柱，也不给命宫、时柱神煞与小运，不拿任何时辰代替。历法按出生当天本地 00:00 与 23:59 两端取（夏令时跳过或重复的端点按 `compatible` 解析）；当天有交节、年柱或月柱随出生时刻而变时拒绝并要求提供时辰。省略时辰时不接受 `birthMinute`，经度（真太阳时）不生效；`dayBoundary: zi` 下日柱按出生日期取，并在输出中注明 23 点后出生则为次日。起运按当天最早与最晚出生给出时刻范围，两端的起运年份不同时注明各步大运可能晚一年交运。

真太阳时采用经度相对于实际民用时区偏移的修正和 Astronomy Engine 均时差，按分钟四舍五入用于排盘，保留原钟表时间、均时差和偏移。夏令时解析发生在太阳时校正之前；跨日按完整日期处理。

## 领域支持矩阵

| 领域 | 实现与可选规则 | 完整输出与边界 |
|---|---|---|
| 八字 | 公历/农历、闰月、两种日界、真太阳时、出生时辰未知（只排三柱）；复用 lunar-javascript 的节气与干支 | 四柱、十神、藏干、纳音、长生、关系和神煞；流月包含实际交节时刻与半开区间，流日拒绝倒序或超过 3660 日 |
| 大运 | 与八字共享历法上下文；`yunSect` 1/2，两种日界、性别和年干顺逆 | 起运时刻（明确为北京时间；出生时辰未知时为最早至最晚的范围，不排小运）、起运年月日时、大运/小运/流年；年龄字段采用虚岁，农历日期不再被当作公历计算年龄 |
| 四柱反推 | 默认 1900–2100，可指定范围、经度、时区、DST、日界 | 搜索到分钟并合并连续分钟为 `[start,end)`；下一步调用保留规则且不重复太阳时修正；不承诺秒级交节搜索 |
| 紫微 | `default/zhongzhou`、`normal/exact` 年/运限界、`normal/birthday` 年龄、`current/forward` 日界、闰月十五日策略、自定义十干四化 | 配置逐次安装并精确恢复，延迟宫位/星曜方法绑定创建时规则；SDK 快照为普通数据对象 |
| 紫微运限 | 复用本命配置，目标日和 0–12 时段序号 | 大限、小限、流年/月/日/时，各层星曜完整保留；显式 0 不被依赖库的 truthy 回退覆盖 |
| 紫微飞星 | 自化、飞向、四化落点、三方四正 | 省略和空四化过滤均表示四化全部；四化名称、星曜及实际落宫使用相同配置 |
| 六爻 | 自动三硬币、手工六爻值、时间、数字、选卦；蓍草 1/5/7/3 概率模型 | 初爻到上爻、纳甲、世应、六神、伏神、动变、互错综、用神与分析证据；蓍草分支不模拟逐次揲蓍操作 |
| 梅花 | 时间、计数加时、文本拆分、尺度、类别、选卦、双数/三数 | 体用、互错综、动爻、阶段推演（变卦论用卦变出的经卦）、按体用诸诀次序判定的吉凶、来源快照与警告；象意、断应时间为现有规则启发式，非历法事实 |
| 奇门 | 转盘/飞盘；拆补、茅山五日、节气实际区间三等分；手工局数/阴阳遁；转盘寄宫、飞星顺逆配置 | 飞盘独立九宫算法；地/天盘干、星门神、寄星/寄干（中五地盘干同列于寄宫）、值符值使真实落宫、格局、门迫、击刑；星与门分论伏吟反吟，五不遇时、时干入墓为全盘格局；置闰法等未实现分支拒绝 |
| 太乙 | 默认九星观测；传统七十二局，金镜/统宗积数现代适配，手工积数/遁 | 主客算与大小将、太乙/文昌/始击/计神/合神/太岁、十六方位加中宫；传统分支没有伪造九星主诀或分钟古法 |
| 大六壬 | 中气时刻定月将或手工月将；卯至申为昼、强制昼/夜、太阳高度昼夜 | 月将重建天地盘、贵人天将、四课、三传、遁干、建除、神煞；阴干长生修正；行年按立春换年的岁年推算（男一岁丙寅顺行、女一岁壬申逆行）；三传复杂课体仍基于 liuren-ts-lib 的 720 课表 |
| 小六壬 | 农历计数或公历转农历；`clock/shichen/legacy`，闰月重复/推进 | 月日起时均为包含起点的六宫递推；手工默认 legacy 兼容旧混合小时规则，公历输入默认 clock，建议新调用总显式 hourType |
| 黄历 | 严格日期、时区今日、日主或完整出生日期个性化 | 13 个日内时段及明确时间范围；缓存返回独立副本；无效/部分个性化出生字段拒绝 |
| 占星 | Astronomy Engine 的十行星视黄经；宫制 Placidus、Equal、Whole Sign、Koch、Campanus、Regiomontanus、Topocentric | 本命/行运、逆行、交点/莉莉丝、宫位及相位；固定恒星偏移和自定义容许度；完整盘要求经纬度，高纬无法定义的宫制明确报错 |
| 塔罗 | 全 78 / 大 22 / 小 56、自定义 1–78 位置牌阵、逆位概率、固定参考年 | 无放回抽牌；牌序 RNG 与正逆 RNG 独立；保存 seed/选项，返回关键词为副本；未知牌阵不回退成另一牌阵 |

## 必须保留的精度与流派限制

紫微 `exact` 沿用 iztro 2.5.4 / lunar-lite 0.2.7 的语义：本命年界采用立春日，而月界以代表时辰计算，不是出生分钟对应的物理交节时刻。这与八字的实际交节规则不同。自定义四化需要为每个覆盖天干提供按禄权科忌排序的四颗不同星曜。

紫微 `birthday` 按农历生日比较所有目标年份，沿用依赖的“生日次日递增”边界；闰生日在目标年存在同一闰月时取闰月，否则取同号普通月，小月按当月最后一天。年龄变化同步小限、大限／童限及其宫位和四化，不只改年龄数字。流时 Date 输入采用创建命盘时的时区，显式目标时区可覆盖；语言、配置与延迟方法隔离，数组排序回调和独立大限列表也纳入快照测试。

四柱反推窗口表示原始民用输入分钟，而非校正后的太阳时。非 `reject` 策略核验完整钟面，覆盖整小时和半小时 DST 缺口；1582 年历法缺日不使整次搜索中断。农历参数越出公元 1–9999 时，下一步调用回退为公历参数。扫描定期通过定时器让出执行权，仍逐分钟精确核验，不用近似均时差或候选截断换取速度。

奇门转盘的日时干支与展示四柱统一采用晚子换日。由于 taobi 的历史时区处理和午夜换日不可靠，旋转层仅接收同日时干支的现代参考日期与已确定的局数；真实交节、年月柱和定局仍用原始瞬间，且运行时核对后台日时干支。参考日期按运行环境的本地钟面构造，再按 taobi 实得日干支与目标之差整日平移一次（其纪日起点按运行时区的历史地方时换算），浏览器等无法改写 `process.env.TZ` 的环境与服务端排出同一转盘。飞盘中宫显示自身门迫／击刑；大格按天盘庚加地盘癸识别。格局逐对比对同宫天盘干与地盘干，寄干一并参断：转盘中五默认固定寄坤二（`zhiFuJiGong: ji_wugong`；`ji_liuyi` 为阳遁寄艮八、阴遁寄坤二）：中宫只留地盘干，不标星门神；中五地盘干作副干列于寄宫，天禽与所随之星（寄坤二时即天芮）同列于其落宫，天盘寄干随天禽落宫，入墓、击刑同样计入寄干。取《烟波钓叟歌》与《遁甲演义》两书皆载的格：三奇得使（乙加己辛、丙加戊庚、丁加壬癸）、刑格（庚加己）、上格（庚加壬，《遁甲演义》称小格）、伏宫/飞宫格（庚加值符六仪/值符六仪加庚）、伏干/飞干格（庚加日干/日干加庚，日格即伏干格）、岁/月/时格（庚加年/月/时干）；甲干一律取其所遁六仪。伏吟、反吟按“八门返伏皆如此”星门分论，八宫同时成立时只在全局格局列一条“全盘: 星伏吟”等；五不遇时按时干克日干且阴阳相同判定（己日乙亥、庚日丙戌同例），时干入墓取《遁甲演义》所列丙戌、壬辰、丁丑、癸未、戊戌、己丑。入墓按十二长生阳顺阴逆取墓：乙木长生午、墓戌，落乾六为正墓；另依五行同墓之说（木墓在未，《遁甲演义》“六乙日奇下临二宫”）在坤二标“乙(五行墓)”，两宫皆记入墓，`ruMuStems` 列出入墓之干。六仪击刑按全盘任一天盘六仪落刑宫判定（戊震三、己坤二、庚艮八、辛离九、壬癸巽四），不限值符。驿马按时支取（寅午戌马在申、申子辰马在寅、巳酉丑马在亥、亥卯未马在巳）；宫位空亡标记取日空（时空另列）。飞盘九星过中五按洛书顺逆飞布，星门伏吟、反吟逐宫各自判定，只有八宫同时成立才记为全盘格局。全局格局在默认详略档即输出。悖格、九遁中神遁以下诸遁、天网四张、九星旺衰等两书说法不一或需另立字段，暂未实现。

传统太乙使用《太乙金鏡式經》四库全书本卷三的阴阳七十二局表。该版本存在与现代软件不同的表项，不能用某一个程序作唯一真值。年积数取金镜 1936557 或统宗 10153917 加农历年；月计为现代农历适配且闰月重复，日/时积数参考固定版本 kintaiyi 的纪元（排除其后期日号修正和零值时局覆盖）。这不是原典古历月计/日计/时计的完整重建。完整太乙的八门、天禽、五福等星将体系和各派断法仍未实现；`accumulatedNumber` 可供调用者使用自己的纪元。公元前日期和传统分钟计不支持。

占星十行星为地心视黄经、真黄道/春分点 of date，包含光行时与光行差。交点、莉莉丝和宫头仍来自 circular-natal-horoscope-js 1.1.0，精度不能按十行星外推。`ayanamsa` 为调用者提供的固定偏移，不是自动计算的 Lahiri 等随历元变化的岁差体系。太阳回归等同星行运相位包含在结果中。

六壬唯一贼克优先级可独立穷举核对，但涉害、遥克、昴星等全部课表并没有原典逐条金标准覆盖。神煞/格局/旺衰等规则受流派影响；本次保留既有体系并修正已证实的问题，不应表述为穷尽所有古籍和流派。

## 六爻判定口径（不计分）

六爻分析不使用加减分或分数排序：每项结论由按次序判定的条文得出，依据写入 JSON「判据」。口径取《增删卜易》与《卜筮正宗》原文及所附占例，两书有别时的取舍写在 `domains/liuyao/calculate.ts` 对应函数的注释中。

- **旺衰**：月建临爻、月扶、月生为助，休囚逢月合「衰而亦旺」亦为助，月克为伤（月将章）；日辰临爻、生、扶、合为助，克为伤，长生、帝旺、墓、绝须看本爻有根无根，月令当权逢绝不绝（日辰章、生旺墓绝章觉子注）。日月有助无伤为有气，一助一伤为相敌、以动爻生克定胜负，皆不助为无气。
- **暗动、日破、月破**：静爻逢日冲，得月令之助为暗动（冲而带克仍为伤），休囚为日破；动爻逢冲不散（动散章）。逢月建相冲为月破，动爻亦论；临日建者逢破不破，惟他爻动克或本爻化回头克时破亦为破。破爻月内无功，静而无日辰动爻生助者为真破，其余出月、逢合、实破之日可用（月破章）。
- **旬空**：发动或有根之爻逢日冲为冲空则实；临月建、发动、旺相或得日建动爻生扶者旬内仍空、出空有用；休囚安静者为真空（旬空章、《卜筮正宗·旬空论》）。
- **化变与他爻生克**：一变兼几种关系时依次取主名：伏吟/反吟 → 进退神 → 回头克 → 墓绝与回头生相兼看本爻有无日月帮比 → 化墓/化绝 → 回头生 → 化空，其余写入说明。只有明动、暗动之爻能生克他爻；化回头克者，以及无气又逢月破、日月伤克、化退、化墓、化绝、化破者无力（元神忌神衰旺章）。
- **用神取用**：明现 → 变出 → 月日 → 伏神。多现时逐条比较，先分高下者定主用：持世 → 临月日（《卜筮正宗》第十七问）→ 旺衰 → 动静 → 伤损（两现章古法），诸条皆同者并看。同类中旬空、月破之爻不夺主用而另主应期（两现章「应乎旬空月破」及两书所附三例）。
- **伏神**：按飞伏神章「有用者六」「终不得出者五」两列判定；两列相抵时依次看旺相飞神克伏、被日月冲克而日月无助、休囚无气、日月相敌，其余有气者有用。伏神逢日冲论被冲，不论暗动。
- **应期**：先看用神之病：旬空待出空填实或冲空，月破待填实逢合，入墓待冲开，合住待冲开，冲空、暗动待逢合，绝待生旺，伏藏待出露；无病再看动静旺衰：静逢值冲，动逢值合，太旺逢墓冲，衰绝遇生旺，化进逢值合，化退忌值冲；受克者看克神（各门类应期总注、《卜筮正宗·伏神正传》）。输出分应期、吉期、忌期，只给逢某支的相对条件，不推算具体历日。
- **反吟、伏吟**：内卦、外卦分别论，只在该卦有爻发动而卦体改变时成立，卦中静爻随卦变亦在其内（反伏章比之井例）。伏吟惟乾震互变；爻之反吟惟坤巽互变；卦之反吟为后天方位相对的乾巽、坎离、艮坤、震兑互变（《卜筮正宗》反吟、伏吟卦定例）。反伏只作告诫，吉凶仍以用神旺衰定。
- **三合**：三支俱全且至少两支发动（明动、暗动之爻或动爻化出之支，同一动爻的本支与化出之支各算一支，见第四问大畜之乾例）方成局，第三支可为静爻，或由月建、日辰补足；只一支发动不成局（第四问「不动不成局」），合化五行的旺衰不作成局条件。局中有空、破、墓、合之爻待去病之日成局，无病而两动一静者待静爻值日（三合章、第四问）。三支只见其二的「虚一待用」尚未实现；半合沿用原法只作辅助，同一局已断成局或不成局者不再另列半合。

## 梅花判定口径（不计分）

梅花体用只论经卦，整卦五行（所属八宫）不参与生克。吉凶不加减分，按下列次序取第一条成立者，依据写入「判断参考.依据」。口径取《梅花易数》卷二体用总诀、衰旺论、卦断遗论及卷一占例。

- **体用与变卦**：不含动爻的经卦为体，含动爻者为用；互卦取本卦二至四、三至五爻，乾坤无互则互其变卦，靠体一侧为体互。变卦一段论用卦经动爻变出的经卦，体卦一侧不变（观梅占「幸变为艮土，兑金得生」）。用生体、体克用、比和为利，体生用、用克体为不利（体用总诀）。
- **判定次序**：一、互卦有生体之卦而变卦也生体者吉，互卦有克体之卦而变卦也克体者凶（卦断遗论「用不生体，互变生之而吉」「用不克体，互变俱克之而凶」）；二、用、互、变中有克体之卦而无生体之卦者凶，比和与体克用都不算生气（牡丹占「卦中无生意」，老人占、牛哀鸣占「并无生气」）；三、其余看用卦与变卦，用吉变凶先吉后凶，用凶变吉先凶后吉，同利为吉，同不利为凶（体用总诀）。旧版计分规则的「平」不再给出。
- **衰旺与体党**：体卦当令为旺、体势盛，逢月令所克为死、体势衰；体衰逢克其凶更甚，有生体之卦则衰稍解（衰旺论）。互、变与体卦同五行为体党，与用卦同五行为用党（体用总诀）。二者只写入依据，论轻重而不改吉凶。
- **不拘体用者**：卦名、卦辞与外应有时另主吉凶，如卦断遗论所举西林寺额与「今日动静如何」，以及枯枝坠地占以睽、损卦名断凶。工具不据此判定，留待解读参看。卷一观梅、牡丹、西林寺添勾、老人、少年、牛哀鸣、鸡悲鸣诸占与卷二乾上坤下占病六问，按体用所断都与上述次序相合。
- **动爻爻辞**：直接引用《周易》本卦动爻的爻辞（`data/hexagrams.ts` 的 `YAO_CI`），只作文本引用，不参与体用吉凶判定。

## 详查工具口径（只陈述事实）

详查工具对一张已排好的盘做局部深查：输入是 base 工具的完整输入加查询参数（`derivesFrom`），先按 base 规则排盘，再从盘面取事实，不另立排盘口径，也不输出吉凶、喜忌、用神或应期。

查询参数分两类：筛选参数（`pillars`、`types`、`sections`、`focus` 等）同时决定结构化结果与文本列出哪些事实；`detailLevel` 只决定文本详略，不进入计算——`default` 只列所查事实，`full` 另附「口径」；结构化结果始终带「口径」与「计算规则」。计算规则（含 `ruleVersion`）供审计与复现，任何工具的文本都不写入。详查只给盘面之外的事实，不重复基础盘已经列出的内容。

- **干支关系（`bazi_relations`）**：判定原语统一在 `domains/shared/ganzhi-relations.ts`，原局的 `analyzePillarRelations`、大运流年的地支关系与之穷举等价（`ganzhi-relations-equivalence.test.mjs`）。原局四柱之间的关系（含六破）由 `bazi` 命盘的「干支关系」给出，本工具只查叠加层（大运／小运、流年、流月、流日），须给出 year、day 或 dayun；只列至少涉及一个叠加柱的关系，合局以叠加柱为起点。
  - 天干五合（甲己土、乙庚金、丙辛水、丁壬木、戊癸火）只报合，不判化与不化；天干相冲取甲庚、乙辛、丙壬、丁癸，不含戊己。
  - 三合须三支俱全；半合只收生旺、旺墓两支，生墓两支（如申辰）属拱合，不报；第三支出现在任一柱时已成三合，不再报半合。三会须三支俱全。不计拱合、暗合、半会。
  - 三刑：寅巳申无恩、丑戌未恃势、子卯无礼，二支同见即报；辰午酉亥自刑须两支同见。巳申同时为六合、相刑、相破，三者并列。六破取子酉、丑辰、寅亥、卯午、巳申、未戌。
  - 岁运提示：叠加柱与另一柱干支全同为伏吟，大运与流年全同为岁运并临；天干相冲且地支六冲为天克地冲（亦称反吟）。另有只以地支相冲论反吟的口径，此处不采用。
  - 流年按公历年份取干支，与 `bazi_dayun` 的流年同口径；流月按节气月（1=寅月，立春起）；流日按当日正午取立春换年、节气换月，立春前的日子属上一流年。流年落在起运前时叠加小运。太岁沿用值、冲、合、刑、害、破六项。
  - 筛选：`pillars` 只留同时涉及所列各柱的关系（「大运」在起运前指小运；叠加柱须有对应的 year、month、day 或 dayun，否则报错并写明缺哪个参数），`types` 只留所列类型。与入选关系共用同一字（同柱同部位）的其他关系列为「同字牵连」，只扩一层。岁运提示只按柱位筛；太岁只在所列柱位都属年柱、流年时保留；二者都不按类型筛。其余事实只计入「未列出」，按类型给出条数。
- **五行流通（`bazi_wuxing`）**：只列五行与生克事实，不判断身强身弱、格局或喜用神。
  - 缺失五行：天干、地支本气、藏干都没有出现的五行；只记出现与否，不设权重、不做合计。旺衰不是五行字数相加，身强身弱须另看月令得失、通根深浅、透干与生扶克泄的配置，本工具只给这些因子，不作此判断。
  - 月令旺相休囚死按月支五行推：同月令者旺，月令所生者相，生月令者休，克月令者囚，月令所克者死；辰戌丑未月以土论（土旺、金相、火休、木囚、水死）。不另立「土寄四季」的分段口径。实现留在八字领域内，未与奇门、梅花的季节旺衰表合并。
  - 月令藏干逐个列出透出与否：藏干原字见于年、月、时干即透，日主本身不算透，不以同五行异字论透。
  - 通根逐一给日主与年、月、时干取四支藏干中同五行者，注明本气、中气、余气；没有同五行藏干的天干记为无根。
  - 干支自坐比较天干五行与地支本气五行；相邻天干只看年月、月日、日时三对。
  - `sections` 只取所列事实组（通根、干支自坐、相邻天干）；日主、缺失五行与月令始终给出。
- **流年扫描（`bazi_liunian_scan`）**：逐年复用 `bazi_relations` 的叠加判定，只列流年参与的关系，按是否有大运（或小运）参与分为原局关系与大运关系；大运与原局的固定关系不逐年重复。一次最多 30 年，起始年不早于出生年。`pillars`、`types` 与 `bazi_relations` 同口径：柱位只取原局四柱与大运（流年总在其中），同字牵连只在当年的流年关系内找。有入选关系的年份列出；未传 `types` 时，只有岁运提示或太岁的年份也列出。太岁只在所列柱位只有年柱时保留。未列出年份的事实连同已列年份筛掉的事实，一并计入「未列出」。
- **八字合盘（`bazi_hepan`）**：不是详查工具（输入是两人的 `bazi` 输入，各带可选称呼），但同样只陈述事实：不打分、不判吉凶与是否相配。两人各按 `bazi` 的规则排盘（时区、换日与真太阳时各自生效），再取两盘之间的事实。
  - 干支关系沿用 `bazi_relations` 的判定原语与口径（天干五合只报合不论化，半合只收生旺、旺墓两支，三刑二支同见即报，不计拱合、暗合、半会），两盘八柱按同层口径一起枚举：合局与三刑按八柱全体出现判断，列出参与的全部柱位，交换两人结果不变。只留同时涉及双方柱位的关系；各自盘内的关系见各自命盘。
  - 关系分三段且互不重复：同时涉及双方日柱的（日主与夫妻宫）、同时涉及双方年柱而不涉及双方日柱的（生肖），其余。
  - 日主互见取对方日干相对己方日主的十神，并列两日干五行的生克（同五行称比和）；生肖取年柱地支（立春换年）；年命纳音取年柱纳音，生克取纳音五行。
  - 每人另列月令与日主在月令中的旺相休囚死（与 `bazi_wuxing` 同口径）和缺失五行；一方缺失、另一方原局有的五行列为五行互补，只记有无，不论喜忌。
- **推算出生时辰（`bazi_hour_candidates`）**：不是详查工具（输入是不含出生时间的 `bazi` 输入），只列各候选时辰的事实，不排序、不判哪个更可能。
  - 按出生地时区逐分钟（以实际时刻为序，夏令时重复的钟表时间各算一次、跳过的不算）排出出生当天的四柱，四柱相同的连续时段合为一个候选，钟表时间开始含、结束不含。每个时刻的排法与 `bazi` 给出该钟表时间时相同：年柱、月柱按交节时刻，日柱、时柱按本地或真太阳时与 `dayBoundary`。因此子时分早晚子两段；出生当天交节时，交节前后同一时辰分作两段并注明；给了经度时，开头或末尾可能是属于前一日或次日的时辰。
  - 每个候选给时柱的十神、藏干、地势、纳音、空亡与神煞，时柱参与的原局干支关系（与 `bazi_relations` 同一判定原语、同层口径），命宫，日主在时支的根（同五行藏干，与 `bazi_wuxing` 同口径），透于时干的月令藏干，四柱的缺失五行，以及按排盘参数时刻推算的起运与首步大运。排盘参数取时段中点；中点的钟表时间重复时改取段内最近的不重复时刻，整段都重复时给出 `disambiguation`。
  - `fromHour`、`toHour` 只筛出与钟表时段 `[fromHour:00, toHour:00)` 相交的候选，不改变各段的起止。`eventYears`（至多 8 个，不早于出生年）按 `bazi_relations` 的叠加口径逐年给出流年与所在大运（起运前为小运），只留区分候选的关系与岁运提示：涉及时柱、或涉及所列候选之间不同的年、月、日柱；这一年各候选所在的大运不同时，也留涉及大运的。
- **紫微宫位（`ziwei_palace`）**：在 `ziwei` 命盘上聚焦一宫，宫名与命盘「十二宫位」一致，「仆役」作「交友」的别名。
  - 三方四正取本宫、本宫起顺数第五与第九宫（三合）及对宫，与命盘的 `sanFangSiZheng` 同源。
  - 本宫无主星为空宫，借对宫主星（连同亮度与生年四化）参看；辅星、杂曜不借。另有借全部星曜的口径，此处不采用。
  - 夹宫只列两邻宫成对出现的左右、昌曲、魁钺、日月、羊陀、火铃、空劫，不列单星，也不论化禄、化忌相夹。
  - 宫干四化按命盘实际使用的四化表（含 `calculationOptions.mutagens` 自定义）飞出；四化飞入列出十二宫宫干四化落入本宫者，来源为本宫即离心自化、为对宫即向心自化。星不在盘上时如实标明。
  - 运限层次（大限、流年、流月、流日、流时）与 `ziwei_horoscope` 同口径；`palace` 指该运限的宫名，叠加回所落的本命宫位，再按本命宫位列上述事实，并给出运限四化落入的本命宫位。非本命层次必须给出 `targetDate`，流时还须给出 `targetTimeIndex`，不默认取当前时刻。
- **奇门宫位（`qimen_palace`）**：取盘中一宫（`palace` 1–9），或按年/月/日/时干、星、门、神定位（`locate`）。柱干以天盘为准（甲不上盘，取本柱所遁六仪），天盘不见时取地盘；多宫同见时取宫位序号最小者，其余写入「同见宫位」。天地盘干、星门神、状态、旺衰、格局全部取自排盘结果，不另立判断，也不输出用神与吉凶。
  - 转盘中五只列地盘干与寄宫去向，不标星门神；飞盘中五照常列星、门、神与该宫自身的门迫。
  - 生克只申明五行方向，分门宫、星宫、天盘干与宫、地盘干与宫、天地盘干五组；门克宫与门迫是同一关系，状态与格局沿用排盘的「门迫」标记。
  - 状态沿用排盘的空亡（日空／时空）、驿马、入墓与六仪击刑；旺衰取十干月令旺衰与宫位五行的季节态，不引入新的旺衰体系。
  - 格局先列全盘格局再列本宫格局；值符值使给出星、门与其实落宫，并标明本宫是否为值符宫或值使宫。
- **大六壬课传（`daliuren_lessons`）**：在已起的课上逐课逐传列事实。`focus` 可只列四课（课）、只列三传（传），或只给类神的天盘落处与入课入传（类神，须给出 `leiShen`；给出 `leiShen` 而未传 `focus` 时默认取类神）；本命行年只在「全部」时列出，神将交战只随所列课传给出。不取用神、不判吉凶与应期。
  - 四课上下取「下贼上、上克下、比和、上生下、下生上」，课别标签与规范 JSON 一致（一课干上、二课干阴、三课支上、四课支阴）。
  - 天将五行按《六壬大全》以同类相属（青龙六合木、朱雀螣蛇火、贵人太常勾陈土、白虎太阴金、玄武天后水）；神克将为内战、将克神为外战，其余写作比和、神生将、将生神。此处的生克只陈述五行关系，不改动取传结果。
  - 六亲以日干为我（生我父母、我生子孙、克我官鬼、我克妻财、同我兄弟）；三传另列与日干关系、按月建论的旺衰与日旬空亡。
  - 日干寄宫取一课上神所临的地盘支；本命与行年沿用排盘结果（行年按立春换年、男顺女逆）；类神可为十二地支或十二天将，只报其天盘落处与入课入传。

- **占星单点（`astrology_point`）**：取本命盘的一颗星体（含南北交点、莉莉丝、上升与天顶）或一个宫位。只陈述盘面事实，不下吉凶结论。
  - 传统尊贵取托勒密体系的守护与擢升（入庙、擢升、失势、落陷），只对日月与五颗古典行星给出，不计三分性、界与面；现代行星记「无」。
  - 宫主星取宫头星座的传统守护星，不用现代守护；宫位查询需要出生地经纬度，行星查询缺坐标时不给出所落宫位与主管宫位。
  - 入相、出相按一小时后的容许度增减判断；交点、莉莉丝与轴点不计速度，相关相位不标相态；流运对本命时本命端视为不动。
  - `focus` 为「本命」时不列流运触发与流运过境；为「流运」时不列本命相位、传统尊贵、主管宫位、宫主星与宫内本命星体，但仍给出星体的本命位置或宫位的宫头与跨度作参照。
  - 流运触发取流运星体对本命该点的相位；流运过境取流运星体落在该本命宫内的情形。
- **六爻逐爻（`liuyao_line`）**：按爻位或角色（世、应、动、六亲）取爻，沿用排盘的纳甲、六亲、六神与日月论爻。
  - 月建作用、日辰作用取月支、日支对本爻纳甲的生克冲合扶破；旺衰与判据沿用排盘结果，不另立旺衰体系。
  - 按六亲取爻而卦中不现时，列其伏神所在的飞神爻；受动爻作用只列明动、暗动之爻的生克冲合，不判断作用有力无力。
  - 按 AI-safe 契约不输出用神取用、原神忌神仇神与应期。
- **黄历择日（`almanac_select`）**：区间上限 92 天，逐日结果与 `almanac` 同源，只陈列条文与统计，不评定吉凶等级。
  - 事项按宜忌条文逐条包含匹配（「开市」可命中「开市交易」）；落在「忌」的日子排除，宜忌都未提到的日子记入「无对应宜」。
  - 冲煞排除按六冲推算：输入一个或多个生肖或地支为目标（如新人双方），当日地支冲其中任何一个即排除；同一地支只算一次，查询中按地支顺序列出，不解析冲煞文本。

## 来源和证据

- [香港天文台 2023](https://www.hko.gov.hk/en/gts/time/calendar/pdf/files/2023e.pdf)、[2024](https://www.hko.gov.hk/en/gts/time/calendar/pdf/files/2024e.pdf)、[2026](https://www.hko.gov.hk/en/gts/time/calendar/pdf/files/2026e.pdf)：独立核对闰二月、春节、公历闰日的农历映射。
- [NASA/JPL Horizons API](https://ssd-api.jpl.nasa.gov/doc/horizons.html) 和 [坐标手册](https://ssd.jpl.nasa.gov/horizons/manual.html)：UT 2000-01-01 12:00 的太阳/月亮/水星/木星视黄经，以及 2024 春分前后太阳零度穿越。测试容差 0.02°，不以少数样例推断全时间范围精度。
- [Astronomy Engine](https://github.com/cosinekitty/astronomy) 2.1.19：十行星、均时差和太阳高度。[NOAA 太阳计算说明](https://gml.noaa.gov/grad/solcalc/solareqns.PDF)：经度、均时差、时区偏移关系的交叉检查。
- [《遁甲演義》](https://zh.wikisource.org/wiki/遁甲演義) 与 [《煙波釣叟歌》](https://zh.wikisource.org/wiki/煙波釣叟歌)：奇门季节局数、三遁、三奇得使、庚格、伏吟反吟、五不遇时与时干入墓条文；`packages/core/tests/qimen-rules.test.mjs` 以《遁甲演义》人遁、刑格、飞宫格、伏宫格、三奇得使等例盘作固定用例。参考实现 [qimen-go 4d3f58f](https://github.com/deminzhang/qimen-go/tree/4d3f58fa0f401b5b3a337f119138e99e90685dda)。
- [《太乙金鏡式經》四库卷一](https://zh.wikisource.org/wiki/太乙金鏡式經_(四庫全書本)/卷01)、[卷三](https://zh.wikisource.org/wiki/太乙金鏡式經_(四庫全書本)/卷03)：开元十二年甲子积数 1937281，余局为 49；主算 24、客算 25；另核对若干阴阳局表差异。参考实现 [kintaiyi 11f7855](https://github.com/kentang2017/kintaiyi/tree/11f78555d5e77c81ac8af69d243a981c22934733)。
- [《梅花易數》卷一](https://zh.wikisource.org/wiki/梅花易數/卷一) 与 [卷二](https://zh.wikisource.org/wiki/梅花易數/卷二)：梅花判定口径的体用诸诀与占例；`packages/core/tests/meihua-core.test.mjs` 以上述十三例作固定用例。
- [《增刪卜易》](https://zh.wikisource.org/wiki/增刪卜易) 与 [《卜筮正宗》](https://zh.wikisource.org/wiki/卜筮正宗)：六爻判定口径的条文与占例；`packages/core/tests/liuyao-classical-rules.test.mjs` 以书中占例（比之井、大畜之乾、升之观等）作固定用例。
- [iztro](https://github.com/SylarLong/iztro)、[lunar-javascript](https://github.com/6tail/lunar-javascript)、[liuren-ts-lib](https://www.npmjs.com/package/liuren-ts-lib)：固定依赖版本的现有算法与调用链核查，不视为独立原典证据。

## 验证入口

`pnpm test` 自动先构建 core、mcp 和 mcp-server 再跑全仓测试。仅运行 core 可用 `pnpm -C packages/core build` 后执行 `node --test packages/core/tests/*.test.mjs`。构建期间不能并行执行依赖同一 dist 的测试。

新增回归包括：跨服务器 TZ、DST 重复/缺失/半小时、低年份和年限两端跨年采样、闰月/日界、大运农历一致性、反推候选往返及两个太阳时/DST 日期逐分钟对照、紫微全局配置恢复与数组回调逃逸延迟调用、十行星选定天文样例、7 宫制完整 360°、两种飞盘配置全部阴阳局数和小时、太乙 144 阴阳局、六壬 720 盘态的唯一贼克规则、64×6 梅花变卦、4320 小六壬递推、78/22/56 张塔罗不重复及全部 15 工具三个详情级别的 JSON 契约。时间规则端到端链路（表单／URL／保存／读取／AI 重建／运势／提醒／合盘导入／Agent 命盘去重）与离线 Skill bundle 漂移测试同样纳入回归；非法旧出生时辰值在 AI 分析重建时显式 400 拒绝，不再被静默重解释。六爻按上述条文与书中占例逐条回归（旺衰、空破、化变、用神多现、伏神、应期、反伏、三合），断言判据文字而非分数。梅花按书中十三例回归变卦取法与吉凶次序。

传统太乙原始 SDK 结果仅返回 `traditionalBoard`，九星分支仅返回 `coreBoard`。新增流派选项首先由 SDK/MCP 提供；网页八字／紫微现可通过共用出生时辰弹窗选择时区及 DST 策略，URL、保存、读取、AI 重建和合盘导入保留相同规则。网页四柱反推复用 Core 异步入口，不再维护独立整点反推。其它新增流派控件不属于本轮算法改动。

输出新增规则元数据为可选字段，旧保存结果继续可渲染。数值修正可能使重新计算的结果不同于旧结果，应按当时保存的原始数据展示历史盘；需要重算时保留规则版本与完整输入。版本发布属于新增功能，应提高次版本并独立执行发布流程。
