OpenFate Bazi MCP 实战:TypeScript 确定性引擎如何避免大模型直接计算八字
为什么不能让大模型直接做八字排盘计算OpenFate 的确定性引擎与 MCP 架构实践为什么不能让大模型直接计算八字OpenFate 的计算优先架构为什么使用 MCP本地 stdio 架构结构化结果包含什么如何保证结果可复现1. 固定输入测试2. 边界时间测试3. Schema 验证4. 计算规则元数据5. AI 边界测试MCP 工具描述同样重要这种架构不只适用于八字总结大语言模型擅长理解问题、组织语言和生成解释但它并不适合直接执行需要严格一致性的历法与时间计算。在开发 OpenFate 的过程中我们遇到了一个典型问题如果直接让大模型根据出生日期“计算”四柱八字它往往能给出格式完整、语言流畅的结果但结果不一定可复现也未必遵循统一的历法、时区和换日规则。为了解决这个问题我们采用了“确定性计算在前AI 解释在后”的架构并通过 Model Context ProtocolMCP把八字计算能力提供给 Claude、Cursor、Codex、Cline 等 AI Agent。为什么不能让大模型直接计算八字大语言模型的核心任务是根据上下文预测下一个 Token。它可以解释算法却不应该被当作历法计算器。八字排盘涉及多项需要明确规则的计算公历与农历日期转换出生地时区和历史时间偏移日柱换日边界经度与真太阳时校正年柱、月柱、日柱和时柱计算十神、藏干、纳音、旬空与十二长生大运起运日期、年龄和周期地支之间的冲、合、刑、破、害等关系如果这些步骤交给语言模型自由生成即使输入完全相同也可能得到不同结果。更危险的是错误结果通常看起来非常合理。用户看到的是一份语言通顺的回答却无法判断底层计算是否正确。OpenFate 的计算优先架构OpenFate 将计算和解释拆分成两个独立层次用户输入 ↓ 输入验证与标准化 ↓ 确定性八字计算引擎 ↓ 结构化事实与计算元数据 ↓ MCP 工具调用 ↓ AI 根据已计算证据生成解释在这个流程中语言模型不负责猜测四柱。它只能读取计算引擎返回的结构化结果并围绕这些证据进行说明。概念代码可以简化为constnormalizedInputvalidateAndNormalize(userInput);constchartFactsawaitcallMcpTool(calculate_bazi_chart,normalizedInput,);constexplanationawaitexplainWithAI({evidence:chartFacts,instruction:[只解释已经提供的计算结果,不要重新计算或修改四柱,没有证据时明确说明资料不足,不要输出保证性预测,],});这样做的重点不是让 AI “更会算”而是从架构上取消 AI 自行计算的权限。为什么使用 MCPMCP 是连接 AI Agent 与外部工具的开放协议。它允许模型先识别用户需求再调用一个具有明确输入和输出 Schema 的工具。OpenFate Bazi MCP 目前提供六个确定性工具calculate_bazi_chart detect_bazi_interactions calculate_true_solar_time reverse_bazi_to_solar_times get_openfate_bazi_policy get_openfate_bazi_resources这些工具分别负责生成结构化四柱命盘检测地支冲、合、三合、三会、刑、破和害根据经度、时区与均时差计算真太阳时根据已知四柱反查可能的公历时间候选返回当前计算规则与边界返回可供 Agent 使用的八字计算资源反查工具返回的是候选时间而不是未经验证的唯一答案。这类边界必须同时写入工具描述、Schema 和 Agent 使用说明不能只依赖模型自行理解。本地 stdio 架构OpenFate Bazi MCP 通过 npm 发布并使用本地stdio传输。安装命令为npx-yopenfate/bazi-mcpMCP 客户端配置示例{mcpServers:{openfate-bazi:{command:npx,args:[-y,openfate/bazi-mcp]}}}这种设计有两个重要优势计算在本地 MCP 进程中完成不要求把出生资料发送到额外的 OpenFate HTTP 计算接口。Claude、Cursor、Codex 和其他兼容 MCP 的客户端可以使用同一套工具协议。公开 MCP 服务器只负责事实计算不包含私人报告逻辑、格局评分、用神策略或未来预测。计算层和产品解释层保持独立能够减少职责混乱。结构化结果包含什么calculate_bazi_chart返回的不只是四组干支还包括标准化后的公历、农历与实际计算时间时区、换日规则和计算策略元数据真太阳时是否启用及其校正结果年、月、日、时四柱十神与藏干纳音、旬和旬空十二长生大运起运日期和时间差每步大运对应的年份、年龄、干支与十神这些字段可以被测试、比较和审计。语言模型只能在这个事实集合上进行解释而不能静默替换底层数据。如何保证结果可复现确定性架构仍然需要严格测试。我们的验证重点包括1. 固定输入测试相同的出生时间、时区、经度和计算选项必须得到相同结果。2. 边界时间测试重点覆盖换日边界、跨时区、夏令时、午夜附近时间和真太阳时可能改变时柱的情况。3. Schema 验证MCP 工具的输入和输出都要通过结构验证。缺少必要字段时应明确失败不能让模型补造数据。4. 计算规则元数据结果需要携带计算版本和策略信息。发生规则升级时开发者才能知道差异来自哪里。5. AI 边界测试解释层不得修改四柱、创造不存在的计算事实或把候选结果描述成确定结论。MCP 工具描述同样重要Agent 是否正确调用工具不只取决于工具名称。一个高质量的 MCP 工具描述需要说明工具具体解决什么问题哪些情况下应该调用哪些情况下不应该调用每个参数的语义与限制返回结果是事实、候选还是解释是否存在外部副作用哪些结果不能被视为保证如果工具描述只写“计算八字”模型仍然可能错误选择参数或者误解返回结果。因此MCP 开发不只是把现有函数包一层协议还需要重新审视工具边界、输入语义和模型可理解性。这种架构不只适用于八字“确定性计算 AI 解释”是一种可以复用的 AI 产品架构。它同样适用于财务指标计算教育测评法律条款检索医疗信息整理工程模拟日历与时区工具数据分析报告凡是底层事实需要稳定、可复现和可审计的场景都不应该让语言模型同时负责计算事实和解释事实。更合理的职责划分是程序负责确定性事实 AI 负责语言、上下文与交互 验证层负责阻止越界输出总结在 OpenFate 的架构中AI 并不是八字计算器。确定性引擎负责历法、真太阳时、四柱、大运和地支关系MCP 负责把这些能力以结构化工具提供给 AI Agent语言模型只负责根据已经计算出的证据进行解释。这套设计不能保证所有文化解释都具有客观唯一答案但它可以保证一件更基础的事情底层计算不由语言模型临场猜测。OpenFate Bazi MCP 的安装方式、工具列表和开发者资料更多安装方式、MCP 配置和工具说明请参考 OpenFate Bazi MCP 开发者文档。本文讨论的是软件架构、历法计算与 AI 工具边界。相关输出用于技术研究、文化探索与个人反思不构成医疗、法律、投资或其他专业建议也不保证未来结果。

相关新闻

Unity毕业设计实战:从贪吃蛇到贪吃金币的完整开发与优化指南

Unity毕业设计实战:从贪吃蛇到贪吃金币的完整开发与优化指南

1. 项目概述:从“贪吃蛇”到“贪吃金币”的毕业设计突围又到了一年一度的毕业季,对于计算机、软件工程、数字媒体技术等相关专业的同学来说,毕业设计无疑是大学四年的“终极考验”。选题,往往是第一道难关。太简单了,显…

2026/10/4 4:17:52 阅读更多 →
Unity与VS2015协同调试全攻略:从环境配置到移动端实战

Unity与VS2015协同调试全攻略:从环境配置到移动端实战

1. 项目概述:为什么Unity与VS2015的协同调试如此重要?如果你是一名Unity开发者,尤其是从早期版本一路走过来的,那么Visual Studio 2015(VS2015)这个名字一定不陌生。虽然现在VS2022、Rider等工具功能更强大…

2026/10/1 20:15:54 阅读更多 →
微信小游戏联机开发:5分钟搭建Node.js UDP服务器实现实时对战

微信小游戏联机开发:5分钟搭建Node.js UDP服务器实现实时对战

1. 项目概述与核心价值最近在捣鼓一个微信小游戏,想实现一个简单的双人对战功能,比如你画我猜或者简单的实时位置同步。一开始想着用WebSocket,但发现对于这种高频、小数据包、允许少量丢包的游戏场景,有点“杀鸡用牛刀”了。后来…

2026/10/2 7:07:57 阅读更多 →

最新新闻

STM32L031+MRAM替代Flash和EEPROM:工业存储掉电零丢失方案

STM32L031+MRAM替代Flash和EEPROM:工业存储掉电零丢失方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 4:17:12 阅读更多 →
Apple Pass Designer开发者快速入门指南

Apple Pass Designer开发者快速入门指南

1.发布/宣布了什么 苹果刚刚开放了通行证设计者在苹果开发者门户上。只需几次点击,您就可以创建、编辑和预览PassKit通行证(登机牌、会员卡、活动门票等)。)直接在浏览器中,无需Xcode或Mac应用程序。该服务生成完整的。pkpass捆绑包——JSON有效负载、资…

2026/10/4 4:17:12 阅读更多 →
AI 编程智能体 04:一文看懂智能体的核心能力与概念辨析

AI 编程智能体 04:一文看懂智能体的核心能力与概念辨析

AI 编程智能体 04:一文看懂智能体的核心能力与概念辨析Bilibili 同步视频✨ 智能体的四大核心特性📚 AI / 模型 / 大模型 / 智能体,概念傻傻分不清?逐个拆解📌 一句话总结💡 写在最后很多同学刚接触 AI 领域…

2026/10/4 4:17:12 阅读更多 →
华为数字芯片笔试题背后的IC设计能力图谱

华为数字芯片笔试题背后的IC设计能力图谱

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 4:17:11 阅读更多 →
Erlang安装报错libcrypto.so.10缺失?OpenSSL兼容库与依赖解析全指南

Erlang安装报错libcrypto.so.10缺失?OpenSSL兼容库与依赖解析全指南

相信不少人在装 Erlang 或者 RabbitMQ 的时候,都被这么一行红字卡住过:libcrypto.so.10(OPENSSL_1.0.2)(64bit) is needed by erlang-22.0.7-1.el7.x86_64我第一次看到这行报错时,第一反应是去重装 Erlang,结果换了好几个版本&…

2026/10/4 4:17:11 阅读更多 →
插件系统原理与加载失败排查:从failed to load plugins到解决

插件系统原理与加载失败排查:从failed to load plugins到解决

1. 插件这东西,怎么会让这么多人在同一句报错上翻车先说个真实场景。你装了一款笔记软件,或者在公司 CI 平台上配了个构建流程,又或者在某个音乐播放器里加了个音源扩展,结果启动日志里冷不丁冒出来一行:failed to loa…

2026/10/4 4:16:11 阅读更多 →

日新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/2 10:36:31 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/3 9:42:35 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/3 9:42:36 阅读更多 →