{
  "markdown": "# zhiji-bazi\n\n输入出生时间，输出四柱、身强弱、格局、用神。\n\n[![npm](https://img.shields.io/npm/v/zhiji-bazi)](https://www.npmjs.com/package/zhiji-bazi)\n[![license](https://img.shields.io/npm/l/zhiji-bazi)](LICENSE)\n[![types](https://img.shields.io/npm/types/zhiji-bazi)](src/index.ts)\n\n[English](README.en.md)\n\n这是[知己排盘](https://zhijipaipan.com)的计算引擎，从生产环境拆出来开源的部分。它只做计算，不生成解读文案，也不做任何预测。\n\n## 特性\n\n- **历法与四柱** — 公历、农历、节气、干支互转。立春换年、节气分月，晚子时的日柱归哪天给了三种规则\n- **真太阳时** — 经度校正加时差方程。时差方程全年在 -14 到 +16 分钟之间波动，足以让时柱错一位，很多排盘实现恰好漏掉它\n- **身强弱** — 按得令、得地、得势三要素打分\n- **格局与用神** — 定格、判成败、取用神，含调候\n- **MCP server** — stdio 和 HTTP 双入口，AI agent 一行配置连上排盘\n- **TypeScript** — 带类型声明和源码，Node / Bun 直接用，唯一运行时依赖是 lunar-javascript\n\n## 快速开始\n\n```bash\nnpm install zhiji-bazi     # 或者 bun add zhiji-bazi\n```\n\n```ts\nimport { computeChart, displayString } from \"zhiji-bazi\";\n\nconst r = computeChart({\n  birthDate: new Date(\"2000-01-01T04:00:00Z\"), // 北京时间 2000-01-01 12:00\n  timeZone: \"Asia/Shanghai\",\n  isMale: true,\n});\n\nconsole.log(displayString(r.bazi));   // 己卯 丙子 戊午 戊午\nconsole.log(r.strength.level);        // strong\nconsole.log(r.pattern.pattern);       // zhengCai\nconsole.log(r.yongShen.yongShen);     // metal\n```\n\n## API 一览\n\n| 函数 | 干什么 |\n| --- | --- |\n| `computeChart` | 一次算完：四柱 + 身强弱 + 格局 + 用神 |\n| `buildBaZiFromDate` / `buildBaZiFromPillars` | 只排四柱 / 从已知四柱建盘 |\n| `correctToTrueSolarTime` / `equationOfTime` | 真太阳时校正 / 时差方程 |\n| `determineStrength` | 身强弱三要素打分 |\n| `analyzePattern` | 定格与成败 |\n| `analyzeYongShen` | 用神与调候 |\n| `lunarComponents` | 公历转农历 |\n| `displayString` / `dayMaster` | 四柱文本 / 取日主 |\n\n类型声明齐全，其余导出看 [src/index.ts](src/index.ts)。\n\n## 四层，可信度不一样\n\n**第一层，历法与四柱。** 有唯一正确答案，可以拿天文数据核对。\n\n**第二层，真太阳时。** 也有唯一正确答案。\n\n很多排盘实现只做了经度校正，漏掉时差方程，而时柱以两小时为一界，时差方程那十几分钟足以让时柱错一位。\n\n```ts\nimport { correctToTrueSolarTime, equationOfTime } from \"zhiji-bazi\";\n\n// 乌鲁木齐用北京时间，真太阳时比钟表早两小时以上\nconst corrected = correctToTrueSolarTime({\n  date: new Date(\"2000-01-01T04:00:00Z\"),\n  longitude: 87.6,\n  tzOffsetMinutesStandard: 480,  // 必须是剥离夏令时之后的标准偏移\n});\n// 校正前时柱戊午，校正后丁巳，差一柱\n```\n\n`tzOffsetMinutesStandard` 必须先剥离夏令时。夏令时只是把钟拨快了，不改变太阳的位置，用带夏令时的偏移会让标准子午线整体算错一个时区。\n\n**第三层，身强弱。** 这一层开始有立场了。\n\n**第四层，格局与用神。** 各流派口径差别很大，这里给的是一种算法口径。\n\n## MCP server\n\n包里带一个 MCP server，AI agent 可以直接连上算盘。\n\nClaude Desktop、Cursor 这类启动子进程、走标准输入输出的客户端，配置里这样写：\n\n```json\n{\n  \"mcpServers\": {\n    \"zhiji-bazi\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"zhiji-bazi-mcp\"]\n    }\n  }\n}\n```\n\n想要 HTTP 而不是标准输入输出，跑 `bun run mcp/server.ts`，默认监听 8787，每个 IP 每分钟限 60 次，用 `MCP_CALLS_PER_MIN` 改。\n\n两个入口都只有一个工具 `bazi_compute`，输入支持公历、农历、直接给四柱三种方式，给了 `longitude` 就按真太阳时校正。`initialize` 返回的 `instructions` 字段里写了转述结果时该守的边界，客户端会把它放进模型的上下文。\n\n不想自己跑的话，知己排盘有托管的端点，后面是完整引擎：\n\n```\nhttps://zhijipaipan.com/bazi-api/mcp\nhttps://api.szxishe.cn/mcp\n```\n\n## 已知局限\n\n**格局判定有已知的假阳性。** 内部审计发现从格判得偏松，会把一些本该按正格论的盘判成从格。那轮审计找到六个根因，代码里 `R1`、`R2严`、`R5` 几处注释就是修正留下的。现在比审计前收紧了，但不能说已经解决。\n\n**身强弱、格局、用神是有争议的判定。** 同一张盘，格局派、旺衰派、盲派会给出不同甚至相反的结论。这个仓库实现的是一种口径，不是标准答案。拿它的输出对用户说话时，建议说明这一点。\n\n**阈值是调出来的，不是推导出来的。** 强弱分档、成格败格的边界都来自实践校准，换一批盘重调，结果会变。\n\n**没有跨实现的一致性保证。** 跟其他排盘软件对不上是常态，尤其在晚子时、闰月、节气交界这几个地方。这里的选择在代码注释里都写了理由。\n\n## 不在这个仓库里的\n\n神煞、大运流年、关系合盘、纳音、地理五行、AI 解读文案，这些都不在。想要完整结果去 [zhijipaipan.com](https://zhijipaipan.com)，或者连上面那个托管的 MCP 端点。\n\n## 免责\n\n八字属于传统文化范畴，不构成任何形式的决策依据。这个仓库提供的是符号系统的计算，不预测事件，不给投资、医疗、法律建议。\n\n出生时间是个人数据。仓库里的测试和示例一律用合成盘或者历法边界日期，不含任何真实个人信息，建议你也这么做。\n\n## 开发\n\n```bash\nbun install\nbun test          # 覆盖历法、立春换年、晚子时、时差方程、端到端\nbun run typecheck\nbun run build\n```\n\n## License\n\nApache-2.0。见 [LICENSE](LICENSE) 和 [NOTICE](NOTICE)。\n",
  "bytes": 3468,
  "sha": "13bb0b2d8a498afa6b40d502467f718c85035958b37c2db3bfb1b7eb7e355d16",
  "repo_slug": "amsonntagchow/zhiji-bazi",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_com_zhijipaipan_zhiji_bazi_92a58fc3/readme"
}