HM

horace-maxwell/horosa-skill

开发工具
481 stars 90 forks 质量 90 趋势 42AGPL-3.0

让你的 AI 本地挂载一个玄学家:92 个术数/占星技法全部离线本地算(MCP + CLI)。西占本命·转盘·中点·调波·巴比伦·印占·20+ 推运·主限·卜卦·择日·占星地图·合盘|八字·紫微·大六壬·奇门遁甲·法奇门·奇门择日·太乙·金口诀·三式合一|六爻·河洛理数·邵子参评数·一掌经·小六壬·飞宫小奇门·小成图·皇极轨策·统摄法·宿占·灵棋经|14...

概览

克隆仓库、安装一次离线 runtime,Claude Code / Claude Desktop / Codex / Open WebUI / OpenClaw 等客户端即可通过 或 直接调用真实的星阙方法:西洋本命 / 推运 / 卜卦 / 择日,八字 / 紫微 / 大六壬 / 奇门 / 太乙 / 金口诀 / 三式合一,六爻 / 塔罗 / 天文地占 / 灵棋经 / 小六壬 / 飞宫小奇门 / 小成图 / 皇极轨策 / 神数正传,以及全 14 路神数。 算法在本机运行,断网可用;每个技法返回统一 envelope 与星阙式导出结构,;每次调用自动落成可检索的本地记录。(导出契约 v14 镜像桌面端 aiExport v56)。 它不是又造一个简化占算器,而是把星阙已有的本地算法、星历与导出协议,整理成一层**的接口。桌面端算出来是什么,这里就是什么——而且每个结论都能回答「这盘怎么来的」。 - 🌌 覆盖西洋占星全链路、中文术数主干、数算与卜法、全 14 路神数;算法在本机运行,不联网、不上传。 - 🧠 每次调用返回统一 envelope,接入导出协议的技法附带 export_snapshot(段结构化正文)。同一技法连续调用得到同一套字段,落库后结构不丢。 - 🛡️ 只要技法受时间 / 地点 / 时区 / 性别 / 事项 / 宫制 / 历法 / 起局方式影响,agent 在用户确认前会被结构化拦截,并收到可直接转发给用户的追问文本。 - 🧾 响应自带技法依据卡(技法 / 流派口径 / 谁算的 / 段落全不全 / 版本链),horosa_technique_report 一键出方法报告,会话级自动检出跨技法口径冲突。 - 📚 星阙 app 内 hover 知识三域 + 27 份技法操作手册 + 八字断语库(21 类口诀)共 408 条,逐条带上游文件与版本出处;没有出处的解读必须明说是通则推理。 - 🧪 确定性校验器把 AI 解读逐句对盘面机读真值,判 supported / invented / contradicted;喂错盘与诱导复述判红;106 条基准用例与工具注册表锁步。 - 🔀 horosa_hecan 并行起盘 + 合参模板:每条结论必须绑定真实段落,收敛与分歧分开填,。

README


✨ ✨ ✨
🌌 110 技法一次装齐 ⚡ 算法本机跑 · 断网可用 🛡️ AI 不许乱补参数
🧾 结论可溯源 · 技法依据卡 📚 31 域知识库 · 引必带出处 🧪 忠实性评测 · 幻觉判红
🔀 多技法合参 · 分歧必披露 🗄️ 调用自动落库 · 一键出报告 🔓 免费 · 开源 · AGPL

克隆仓库、安装一次离线 runtime,Claude Code / Claude Desktop / Codex / Open WebUI / OpenClaw 等客户端即可通过 MCP 或 JSON-first CLI 直接调用真实的星阙方法:西洋本命 / 推运 / 卜卦 / 择日,八字 / 紫微 / 大六壬 / 奇门 / 太乙 / 金口诀 / 三式合一,六爻 / 塔罗 / 天文地占 / 灵棋经 / 小六壬 / 飞宫小奇门 / 小成图 / 皇极轨策 / 神数正传,以及全 14 路神数。

算法在本机运行,断网可用;每个技法返回统一 envelope 与星阙式导出结构,并附一张确定性的技法依据卡;每次调用自动落成可检索的本地记录。与星阙桌面端共用同一套后端、逐值同源(导出契约 v15 镜像桌面端 aiExport v58,星阙 v3.11.3)。

   🖥️  AI 客户端   Claude Code · Claude Desktop · Codex · Open WebUI · OpenClaw
        │
        │  MCP  /  JSON-first CLI
        ▼
   ┌──────────────────────────────────────────────────────────────┐
   │  🔮 Horosa Skill   本地进程 · 110 工具 · 澄清闸 · 统一 envelope │
   │  自然语言调度 · 多技法合参 · 技法依据卡 · 报告渲染 · 记忆检索   │
   └──────────────────────────────────────────────────────────────┘
        │  全部在本机 · 断网可用
        ▼
   ⚙️ 离线 runtime         🧩 headless JS 引擎     💾 本地存储
   Java+Python 星历        horosa-core-js          SQLite 全文索引
   ken / kentang 引擎      aiExport 结构化          + JSON artifact 归档

[!NOTE] 它不是又造一个简化占算器,而是把星阙已有的本地算法、星历与导出协议,整理成一层适合 GitHub 分发、适合 AI 调用、适合长期本地管理的接口。桌面端算出来是什么,这里就是什么——而且每个结论都能回答「这盘怎么来的」。

📑 目录

✨ 核心特性

  • 🌌 110 个真实技法,一次安装,全程离线。 覆盖西洋占星全链路、中文术数主干、数算与卜法、全 14 路神数;算法在本机运行,不联网、不上传。
  • 🧠 为 AI 消费而设计的稳定契约。 每次调用返回统一 envelope,接入导出协议的技法附带 export_snapshot(段结构化正文)。同一技法连续调用得到同一套字段,落库后结构不丢。
  • 🛡️ 调用前的硬性澄清闸。 只要技法受时间 / 地点 / 时区 / 性别 / 事项 / 宫制 / 历法 / 起局方式影响,agent 在用户确认前会被结构化拦截,并收到可直接转发给用户的追问文本。
  • 🧾 每个结论可溯源。 响应自带技法依据卡(技法 / 流派口径 / 谁算的 / 段落全不全 / 版本链),horosa_technique_report 一键出方法报告,会话级自动检出跨技法口径冲突。
  • 📚 31 域方法论知识库,引必带出处。 星阙 app 内 hover 知识三域 + 27 份技法操作手册 + 八字断语库(21 类口诀)共 409 条,逐条带上游文件与版本出处;没有出处的解读必须明说是通则推理。
  • 🧪 盘面事实忠实性评测。 确定性校验器把 AI 解读逐句对盘面机读真值,判 supported / invented / contradicted;喂错盘与诱导复述判红;106 条基准用例与工具注册表锁步。
  • 🔀 一问多技法合参。 horosa_hecan 并行起盘 + 合参模板:每条结论必须绑定真实段落,收敛与分歧分开填,分歧必须披露、不许平均。
  • 🪙 精简的响应体量。 导出契约单份化,同一份快照不再重复;大盘单次响应体量较早期显著下降。可用 response_view=titles|sections 仅取段标题或指定段,完整快照始终已归档。
  • ⏳ 主限法可推至 3000 年。 逐位核验的核5方位法 + 22 项时间钥匙 + In Zodiaco / In Mundo + 宿命点(Vertex)应星 + 映点 / 界作迫星,多圈复发行。
  • 🗄️ 完整的本地记录系统。 SQLite 全文检索(trigram,中文子串可命中)+ JSON artifact 归档;按人名 / 技法 / 日期区间 / 全文组合检索,跨会话找回历史。
  • 📄 结构化报告导出。 一条命令生成 DOCX / PDF / JSON;Markdown 表格渲染为真 Word 表格,含导航大纲、目录、页码与中文字体;style=chart 不经 AI 直接出完整排盘报告。
  • 📚 自备知识库。 自己的笔记放进知识库文件夹,计算时按名 / 标签 / auto 点选,随结果附进 AI 上下文。
  • 🔁 成熟的安装与升级链。 断点续传、多镜像回退、实时进度;版本短路(已最新则跳过下载);upgrade / uninstall / selfcheck / doctor 环境体检齐备。
  • 🔗 同源后端。 奇门 / 太乙 / 金口诀走星阙 ken 后端;14 路神数走 chart 服务上挂载的 kentang 引擎;结果由 headless JS 层重排为 aiExport.js 段结构。

🚀 快速开始

[!TIP] 前置只需 uv:macOS / Linux curl -LsSf https://astral.sh/uv/install.sh | sh;Windows(PowerShell)powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"。装完 重开终端(或 source $HOME/.local/bin/env)让 uv 进 PATH;Python ≥ 3.12 由 uv 自动准备;磁盘预留约 5 GB(runtime 下载约 730 MB、解压后约 2 GB)。

git clone https://github.com/Horace-Maxwell/horosa-skill.git
cd horosa-skill/horosa-skill
uv sync
uv run horosa-skill install      # 📦 安装离线 runtime(带进度 / 断点续传;已最新则跳过下载)
uv run horosa-skill doctor       # 🩺 环境体检(磁盘 / 端口 / node 实跑探针,期望 issues: [])
uv run horosa-skill selfcheck    # ✅ 活体验证:起一张盘 → 存 → 读回
uv run horosa-skill serve        # 🚀 启动本地 MCP(默认 http://127.0.0.1:8765/mcp)

不想 clone 源码?零安装(无需 git、无需 PyPI)——每个发布页都附带纯 Python wheel,uvx 直接从 URL 起, HOROSA_RUNTIME_MIRROR 对 wheel 与 runtime 一并生效:

WHL="https://github.com/Horace-Maxwell/horosa-skill/releases/download/v0.45.1/horosa_skill-0.45.1-py3-none-any.whl"
uvx --from "$WHL" horosa-skill install                    # 📦 装离线 runtime(同上)
uvx --from "$WHL" horosa-skill doctor                     # 🩺 体检
uvx --from "$WHL" horosa-skill setup --client cursor       # 🪄 零安装一条命令接入(自动选 `--launcher uvx-wheel`,配置里写 wheel URL)
uvx --from "$WHL" horosa-skill serve --transport stdio    # 🚀 给客户端直连;`client config --launcher uvx-wheel` 生成对应配置

github.com 直连不通(镜像 / API 直链 / U 盘离线搬运 / 代理与企业证书)见 docs/INSTALL_RESTRICTED_NETWORK.md。 PyPI 通道(uvx horosa-skill …)已就绪但暂未开通(等维护者完成一次性 Trusted Publisher 配置),开通后命令更短、行为不变。

[!NOTE] 🐳 Docker / Linux(实验):离线 runtime 只发布 macOS(arm64) / Windows(x64) 两个 payload,没有 Linux payload; 容器里能跑的是 MCP 网关(Python 包 + 知识库 + 记忆),把 HOROSA_SERVER_ROOT / HOROSA_CHART_SERVER_ROOT 指向宿主机或另一台装了 runtime 的机器即可。仓库附带实验性的 horosa-skill/Dockerfile + docker-compose.yml (网关镜像:容器内没有离线 runtime,必须设上面两个变量;绑 0.0.0.0 必须给 HOROSA_MCP_TOKEN); 手工起也行:pip install "https://github.com/Horace-Maxwell/horosa-skill/releases/download/v0.45.1/horosa_skill-0.45.1-py3-none-any.whl" 后 horosa-skill serve --transport streamable-http 即为网关(PyPI 尚未开通,装的是发布页的 wheel)。

🔌 接入 AI 客户端

setup --client 一条命令走完接入(v0.38.0):探网(5 s)→ 装 / 校验离线 runtime → 写配置(自动定位、 只动 horosa 条目、写前备份 .horosa-bak、原子替换)→ 把 horosa-agent skill 装进该客户端读的 skills 目录(v0.45.1; 多数客户端读共享的 ~/.agents/skills;--no-skill 跳过、--skill-dir 指定)→ doctor → 回读磁盘体检 → 用客户端将要执行的那条命令真起一次 stdio server 并数工具 → 打印下一步。失败时 stderr 给出结构化失败包(step / code / config_untouched / backup_path / retry_command),退出码 2;写配置之前失败保证 config_untouched: true。只想看配置不落盘用 client config:

uv run horosa-skill setup --client cursor                # 🪄 一条命令接入(25 个客户端,见下方 Works with 表)
uv run horosa-skill setup --client cursor --dry-run      # 只看计划:零副作用
uv run horosa-skill client config --format claude-code   # 只生成不落盘:输出 claude mcp add … 命令
uv run horosa-skill client config --format codex         # config.toml 片段(含超时设置)
uv run horosa-skill client check                         # 体检本机各客户端**实际写着什么**(含 skill 装没装、是不是本版)
uv run horosa-skill client skill --client codex          # 只装 skill 规则(手动配过 MCP 的用户;不带 --client = 共享目录)

skill 是 agent 读的规则(先问后调 / 只读返回的快照 / 禁手算),此前只有打开本仓的 agent 读得到;wheel 里现在带一份,setup 顺手装好。 已有同名目录时:由 npx skills 等工具以软链接管理的、或不是本工具装的,一律不动;你改过的旧版先备份成 horosa-agent.horosa-bak 再更新。

仓根另带 6 份薄镜像——GEMINI.md(Gemini CLI)、.github/copilot-instructions.md(Copilot)、.windsurf/rules/、 .clinerules/、.cursor/rules/(Cursor)、.agents/skills/horosa-agent/(Codex / agentskills.io)——让这些 agent 打开仓库就知道闸门、读盘规则与精简面下的 horosa_tool_run 直呼;策略唯一源仍是 SKILL.md, 其中「Shell-only agents」一节给没有 MCP 的 agent 一套纯 CLI 契约(tool run --input/--output、退出码、闸门流程)。

Works with

客户端 传输 一行接入 默认工具面 注意
🟣 Claude Code stdio setup --client claude-code(CWD 有 .mcp.json 写项目级,否则自动 claude mcp add --scope user) 全量 121 项目内直接用仓根 .mcp.json;说明
🧩 Claude Code Plugin stdio /plugin marketplace add Horace-Maxwell/horosa-skill → /plugin install horosa@horosa-skill 全量 121 skill + MCP 一步到位;插件装在 ~/.claude/plugins/cache/horosa-skill/horosa//horosa-skill,首次运行 uv run --directory "" horosa-skill install 装离线 runtime(工具报 runtime.not_installed 时会给出带真实路径的这条命令)
🧷 Agent Plugins v1(VS Code · Copilot CLI · Codex · Kiro · OpenHands · Qwen Code) stdio copilot plugin install Horace-Maxwell/horosa-skill;VS Code「Chat: Install Plugin From Source」填仓库地址;qwen extensions install Horace-Maxwell/horosa-skill;Kiro「Import power from GitHub」 精简 11 仓根 plugin.json + mcp.json(规范 1.0.0):命令是 uvx + 钉当前版本的 wheel,需先装 uv;首次调用前 uvx --from horosa-skill install 装离线 runtime。Codex 经 codex plugin marketplace add Horace-Maxwell/horosa-skill 读同一份清单(未实测);OpenClaw / Claude Code 仍走 .claude-plugin/
📇 MCP 官方注册中心 stdio(.mcpb) 在支持注册中心的客户端里搜 horosa(Goose、Junie、Copilot /mcp search、PulseMCP、Glama 都从这里取) 全量 121 条目 io.github.Horace-Maxwell/horosa-skill,只登记每个 release 的 .mcpb(带 sha256,客户端装前校验);v0.41.0 起每次发版翻公开后自动登记
🟠 Claude Desktop stdio setup --client claude-desktop,或安装 .mcpb 一键包 全量 121 .mcpb 在每个 release 的资产里
🟡 Cursor stdio setup --client cursor(或 client config --format cursor 拿官方 deep link 点击即装) 精简 11 Cursor 全局约 40 工具上限,超出静默丢弃
🔷 VS Code (Copilot) stdio setup --client vscode(写用户级 mcp.json;或 client config --format vscode 拿 vscode:mcp/install 链接) 精简 11 跨所有 server 共 128 工具上限;仓内已带 .vscode/mcp.json
🔵 Codex stdio setup --client codex(原位合并 ~/.codex/config.toml,含超时) 精简 11 必须调高 startup_timeout_sec(默认 10 s)与 tool_timeout_sec(默认 60 s);每工具 inputSchema ≤ 5000 B(0.158 缺省预算,本仓守卫)
🟤 Gemini CLI stdio setup --client gemini 精简 11 工具名 ≤63 字符 + 严格 JSON Schema 2020-12(广告层已按它收敛)
🌊 Windsurf → Devin Desktop stdio setup --client windsurf(CLI 键不变;写 Devin 的 MCP 文件:macOS/Linux ~/.config/devin/mcp_config.json、Windows %APPDATA%\devin\mcp_config.json、项目级 .devin/mcp_config.json;已有旧 ~/.codeium/windsurf Cascade 配置则原位合并) 精简 11 2026-09 起 Cascade 已移除,Devin Local 读 Devin CLI 的 MCP 文件;旧 Cascade 100 工具上限
🧱 Cline stdio setup --client cline 精简 11 无工具搜索,全量面偏重
⚡ Zed stdio setup --client zed 精简 11 配置根键是 context_servers
OpenCode stdio setup --client opencode(写 ~/.config/opencode/opencode.json(mcp 键,命令写成一个数组)) 精简 11 缺省连接 / 调用超时撑不过冷启动与择日扫描,已写 timeout: 600000
Goose stdio setup --client goose(写 ~/.config/goose/config.yaml 的 extensions(Windows %APPDATA%\Block\goose\config\;只动 horosa 一段)) 精简 11 超时单位是秒,已写 600
Kiro stdio setup --client kiro(写 ~/.kiro/settings/mcp.json;skill 装到 ~/.kiro/skills) 精简 11 Kiro CLI 启动缺省只等 5 s:先 kiro-cli settings mcp.initTimeout 120000
GitHub Copilot CLI stdio setup --client copilot-cli(写 ~/.copilot/mcp-config.json(含 tools: ["*"]、timeout)) 精简 11 只转发 PATH:env 表写入 HOME 与两个 runtime 根,探针按同样形状验证
JetBrains Junie stdio setup --client junie(写 ~/.junie/mcp/mcp.json) 精简 11 无超时字段:首次用前 horosa-skill runtime start 预热
Qwen Code stdio setup --client qwen(写 ~/.qwen/settings.json(保留注释)) 精简 11 discoveryTimeoutMs 缺省 30 s,已写 120000
Kimi Code CLI stdio setup --client kimi(写 ~/.kimi-code/mcp.json) 精简 11 严格 JSON、一条坏整份拒;已写 startupTimeoutMs / toolTimeoutMs
Qoder stdio setup --client qoder(写 ~/.qoder/settings.json;skill 装到 ~/.qoder/skills) 精简 11 旧版 Qoder IDE 只能在界面里配 MCP
CodeBuddy stdio setup --client codebuddy(写它实际读的那一个文件(~/.codebuddy/.mcp.json → mcp.json → ~/.codebuddy.json 中第一个存在的);skill 装到 ~/.codebuddy/skills) 精简 11 超时只能用环境变量 MCP_TIMEOUT / MCP_TOOL_TIMEOUT
TRAE stdio setup --client trae(不写文件:打印一键导入链接 trae://…(国内版 trae-cn://)与可粘贴 JSON;skill 装到 ~/.trae/skills) 精简 11 所有 MCP 合计 40 个工具上限;command 不能含空格
Amp stdio setup --client amp(写 ~/.config/amp/settings.json 的字面量键 amp.mcpServers) 精简 11 条目不许多余字段(无超时):首次用前先预热
Warp stdio setup --client warp(写 ~/.warp/.mcp.json(保存即生效)) 精简 11 若同时让 Warp 自动拉起 Claude Code / Codex 的 server,可能出现两份
Factory Droid stdio setup --client droid(写 ~/.factory/mcp.json(含 connectTimeout / timeout)) 精简 11 改完自动重载
Augment Auggie CLI stdio setup --client augment(写 ~/.augment/settings.json(保留注释)) 精简 11 IDE 扩展用自己的设置面板,不读这个文件
Deep Code stdio setup --client deepcode(写 ~/.deepcode/settings.json(严格 JSON;文件有注释则拒写——它会把整份连 API key 一起丢掉)) 精简 11 单次工具调用固定 60 s 上限,长任务会超时;启动超时用 DEEPCODE_MCP_TIMEOUT
DeepSeek Harness(dsh) stdio setup --client dsh(生成独立补丁 ~/.horosa/clients/dsh/horosa.cordis.yml,dsh web --patch 启用;不改你的 cordis.patch.yml) 精简 11 开发者预览版,格式可能变
⚪ OpenClaw / mcporter stdio client openclaw-setup --workspace ~/.openclaw/workspace 全量 121 —
🟢 Open WebUI · n8n · Dify streamable-http horosa-skill serve --host 0.0.0.0 --token 全量 121 接入说明;跨机必须带令牌,且没有 TLS,请放反代后面
🔶 ChatGPT / claude.ai 远程连接器 streamable-http 同上,再套一层终结 OAuth 的 HTTPS 网关(Cloudflare Access / oauth2-proxy)——两家连接器只接 OAuth,本 server 只提供静态 Bearer,网关负责把 OAuth 换成注入 Authorization: Bearer 全量 121 没有托管端点;配方见 说明

--surface full / --surface compact 可覆盖默认;--launcher uvx-git 生成免 checkout 的 零安装命令(uvx --from "git+…#subdirectory=horosa-skill",PyPI 通道尚未开通)。

平台

平台 离线 runtime 说明
macOS arm64 ✅ 官方载荷 主力平台
Windows x64 ✅ 官方载荷 见 Windows 说明
Windows ARM(骁龙本 / Surface 等) ✅ 自动装 x64 载荷走仿真(自 0.38.0) Windows 11 的 x64 仿真下 Java / Python / Node 都能起(GitHub windows-11-arm 真机 lane 验证);install 报 runtime.platform_emulated、doctor 报 emulated: true(payload_platform: win32-x64)
Linux ⚠️ 无载荷(实验) 走网关模式:把 HOROSA_SERVER_ROOT / HOROSA_CHART_SERVER_ROOT 指向一台受支持的机器
Intel Mac ❌ 不支持 arm64 载荷不能在 Rosetta 下跑(内含 JDK/Python 是原生 arm64);本轮明确不做 x86_64 载荷,走网关模式

[!TIP] 上下文预算受限的客户端可设 HOROSA_MCP_COMPACT=1,只暴露 12 个门面工具(含按名直调的 horosa_tool_run,110 个技法仍可按名到达),澄清闸照常生效。或用 HOROSA_TOOLSETS=astro,cn 按域裁剪平铺面(合法域 astro/predict/chart/cn/shenshu/other/export/knowledge,别名 western/chinese/reference/all/none;拼错的 token 会告警并忽略、全空回落全量;只要裁剪生效就注册 horosa_tool_run 直呼通道;门面工具恒在)。根目录 server.json 为 MCP Registry 元数据,普通用户无需手改。

[!TIP] 繁体输出:在 Claude Desktop 扩展设置 / Claude Code 插件设置里勾「繁體中文輸出」,或设 HOROSA_OUTPUT_SCRIPT=zh-Hant(香港字形用 zh-Hant-HK;setup --client --output-script zh-Hant 直接写进客户端配置)。排盘正文、段名、提示与报告转成繁体;回显的入参、设置值、选项、错误码保持原样(AI 原样送回也对得上),不设就是简体、与原来逐字相同。术数用字按 沖 / 剋 / 曆 而非 衝 / 克 / 歷。

[!TIP] 配好了却在客户端里看不到 horosa?跑 uv run horosa-skill client check —— 它读的是各客户端实际写着什么,能指出未展开的占位符、缺失的 --transport stdio、搬走的目录、以及 Codex 的默认超时。

🎯 一次调用的完整流程

以「查今年事业,1995-06-03 05:30 上海出生」为例,agent 端的实际序列:

1️⃣  澄清闸兜底 —— 缺时区 / 宫制等结果敏感设置时,工具返回追问文本,
    agent 先向用户确认,而非自行补参
2️⃣  起盘       —— 确认后传 agent_confirmed_settings: true 调用技法工具,
    返回统一 envelope,含 memory_ref.run_id 与 data.export_snapshot
3️⃣  读盘       —— 读 export_snapshot.export_text / sections 撰写解读
    (想省 token 可传 response_view: "titles" 只取段标题,完整快照已归档)
4️⃣  溯源尾注   —— 把 data.technique_card 转述成尾注:用了什么技法 /
    什么口径 / 谁算的 / 段落全不全 / 版本链
5️⃣  出报告     —— report_render 生成解读终稿 DOCX(自动写回记忆);
    horosa_technique_report 另出「技法依据报告」
6️⃣  跨会话找回 —— memory_query 按人名 / 技法 / 日期检索,memory_show 取完整记录

[!NOTE] 最短路径为 2 次工具调用 + 1 次本地分析:起盘拿到 run_id,本地撰写 ai_report,再 report_render 出 Word 并自动归档。一问需要多技法互证时,改用一次 horosa_hecan 并行起盘(见可信度体系)。全程算法在本机、AI 只负责解读、结构永不丢。

🧭 技法总览

所有业务技法都返回统一 envelope 并附星阙式 export_snapshot。带 ⓟ 的工具受设置影响,调用前必须先确认参数。

[!NOTE] 明确排除项:fengshui(风水尚未完成 headless 化,不作为可发布能力)。

📐 输出契约

每个工具调用返回统一 envelope:

{
  "ok": true, "tool": "qimen", "version": "0.45.1",
  "input_normalized": {}, "data": {}, "summary": [],
  "warnings": [], "memory_ref": {}, "error": null
}

接入导出协议的技法额外带 data.export_snapshot,含 export_text(段结构化正文)、sections(逐段标题 + 正文 + 结构化数据)、selected_sections、provenance 等;另附 data.technique_card(技法依据卡,见可信度体系)。因此 ——

  • 🧷 AI 无需从自由文本猜结构;
  • 🔁 同一技法连续调用得到同一套契约;
  • 🧮 horosa_dispatch 汇总层显式带每个子结果的导出契约;
  • 💾 落库到 JSON artifact 后结构不丢。

[!NOTE] 自 v0.21.0 起契约单份化,同一份快照不再重复存放;可传 response_view=titles|sections 仅返回段标题或段标题 + 正文,完整快照始终已归档,可用 memory_show(run_id) 取回。字段全表见 docs/DATA_CONTRACTS.md 与 docs/INPUT_CONTRACTS.md。

🚦 调用前的澄清闸

[!IMPORTANT] 只要技法受时间 / 地点 / 时区 / 性别 / 事项 / 宫制 / 历法 / 起局方式影响,agent 在用户确认前会被拦截,返回 agent_guidance.required 与可直接转发给用户的追问文本。杜绝「AI 自己脑补一个生辰就开算」。

// ❌ 被拦截:缺确认、地点、时区、事项
{ "date": "2026-05-18", "time": "13:14:00" }

// ✅ 通过:含用户确认 + 完整上下文
{
  "agent_confirmed_settings": true,
  "clarification_notes": "用户确认:2026-05-18 13:14:00,America/Los_Angeles,旧金山,事项为工作决策。",
  "date": "2026-05-18", "time": "13:14:00", "zone": "-07:00",
  "lat": "37n46", "lon": "122w25"
}

标准流程:用户说出需求 → 参数不足则查 horosa_agent_guidance 或直接询问 → 用户明确回答 → agent 传 agent_confirmed_settings: true + clarification_notes 调真实工具 → 用 export_snapshot 解释,不自行手算。时区可用 +08:00 固定偏移,也可用 Asia/Shanghai IANA 名(按起盘日期归一化)。

🧾 可信度体系

[!IMPORTANT] 玄学输出最大的风险不是算错,而是 AI 在盘面之外自由发挥。这里把「结论怎么来的」做成机器契约:每个答案可溯源、每条教义有出处、每句断言可对盘校验、多技法互证有纪律——四件都由确定性代码守着,不靠模型自觉。

1. 每个结论带技法依据卡

每个技法响应附 data.technique_card:技法名与流派口径(含 排盘规则 晚子时开关)、算源声明 vs 运行实测(compute.matches_declaration=false 时必须提示「结果请谨慎采信」)、段落完整性、版本链。horosa_technique_report 把单次调用(run_id)或整场问答(group_id)渲染成 markdown / json / docx / pdf 方法报告,会话级还会检出跨技法口径冲突(两个技法晚子时开关不同 = 结论不可互证)。不需要时 HOROSA_TECHNIQUE_CARD=0 关闭。

uv run horosa-skill report technique --group-id  --format markdown

2. 31 域方法论知识库 · 引必带出处

knowledge_registry / knowledge_read 覆盖 31 域 = 星阙 app 内 hover 知识三域 + 27 份技法操作手册 + 八字断语库 21 类(共 409 条:各设置项取值与差别、流派分歧、算法与口径、八字口诀),逐条带「星阙操作手册 · 域 · 条目(源文件 @ 上游版本)」出处。配套策略写进 SKILL.md:引教义必带出处;没有出处的解读必须明说是通则推理——反 Barnum 效应的第一机制。

3. 盘面事实忠实性评测

horosa-skill benchmark faithfulness 用确定性校验器(非 LLM 打分)把 AI 解读中的事实断言逐条对盘面机读真值:四柱干支 / 行星落座 / 紫微主星落宫与身宫 / 大六壬三传 / 六爻卦名与动爻 / 塔罗牌名正逆……三通道判 supported / invented / contradicted。喂错盘的答案、诱导复述(「我月亮在天蝎对吧」「我抽到的月亮是逆位吧」而实际不是)都会判红。HorosaBench 105 条基准用例由工具注册表生成、与工具集锁步——新增技法没有用例直接红。

4. 一问多技法合参

horosa_hecan(CLI:horosa-skill hecan):一问并行起多路技法(同 group_id 落库;默认 5 路、上限 8 路,可显式指定 tools),返回合参模板而非终稿——逐技法结论槽必须绑定该技法真实段落(响应里只有证据指针,全文用 memory_show(run_id) 取);convergence 只在多技法独立同判时填;divergence 逐条披露,不许平均、不许只挑一边;口径冲突(consistency.setting_conflicts)必须先声明。

5. 可选云端决策层(TypeSafe Jev · 默认关闭)

上面所有承诺(不联网、不上传)在默认状态下原样成立。v0.39.0 起可以显式开启一个云端「决策层」—— TypeSafe 的 Jev(System One 决策模型,只回类型化的选择/概率,不生成文本)——只做三件窄事:确定性关键词 路由无匹配时兜底选技法;把用户原话里明说的设置(如「我老婆的八字」→ 性别女)变成「已提供」 (词表证据 + 模型判定 + 置信阈值三钥齐才填,永不替用户选默认);六壬问题的占断门类分类。它不算盘、不解盘。

项 说明
开关 HOROSA_JEV=off(默认)/ shadow(只记录它会怎么判,行为不变)/ enforce;密钥 HOROSA_JEV_API_KEY(Claude Desktop / 插件在设置里填,永不写进 Horosa 文件)
离机的数据 一档 HOROSA_JEV_SCOPE=meta(默认):本地脱敏后的问题文本(日期 / 时刻 / 坐标 / 地名 / 号码 → 占位符)+ 技法名 + 设置键名;二档 snapshot:额外允许导出快照文本,仅供未来的忠实性/合参判定面
不离机的数据 出生日期、时刻、坐标、地名原值;盘面与导出全文(一档);密钥;本地记忆
服务商事实 托管闭源模型,美国机房;「不用于训练」是合同承诺(非架构保证);数据留存无公开数字,零留存仅企业版
每次自陈 data.technique_card.decisions[] / horosa_dispatch 的 decision_layer(模型 id、选项、置信、是否采纳);horosa-skill jev status / jev events(本地账本)
权限边界 代码持有权限:确定性路径永远是权威;enforce 需在自家中文标注集上晋升过的阈值锁;任何失败关闭式回落并写进 warnings

📂 本地记忆与报告

本地数据默认写入 ~/.horosa-skill/(Windows:%APPDATA%/HorosaSkill/)。每次 run 沉淀:run 元信息、tool call 记录、entity 索引、JSON artifact、run manifest、原始 query_text、用户问题、AI 最终回答与可选结构化回答。

  • 🔎 SQLite 全文检索(trigram,中文子串可命中)+ 热路径索引 + WAL 并发;按人名 / 技法 / 日期区间 / 全文组合检索,支持分页。
  • 📄 report_render 生成 DOCX / PDF / JSON:Markdown 表格渲染为真 Word 表格(跨页重复表头)、导航大纲、目录、页码、中文字体,异常自动降级保全文。
  • 🧾 report technique 生成技法依据报告(机器元数据),与咨询报告(AI 终稿)分轨,互不混入。
  • 🗂️ 完整排盘报告:report render --style chart(或 report_render {style:"chart"})不经 AI 解读,直接把该技法的全部盘面段落排成 PDF / DOCX——封面、基本信息、盘图(星盘轮 / 合盘双圈 / 紫微十二宫 / 奇门九宫 / 六壬天地盘 / 六爻卦图 / 太乙十六宫 / 七政四余方盘 / 南印方盘 / 量化盘 90° 度盘;择日结果画选中时刻的盘;全部取自引擎数据)、可点击目录与书签、「第 N 页 / 共 M 页」、技法依据附录。
  • 📚 自备知识库:把自己的笔记(.md / .txt)放进 horosa-skill knowledge mine 列出的文件夹(或 knowledge add --file …),计算时传 knowledge:["条目名", "#标签", "auto"],选中的正文随结果挂在 data.knowledge_context 供 AI 参考(不进引擎、不改盘面;总字数受 HOROSA_USER_KNOWLEDGE_MAX_CHARS 限)。GBK / UTF-16 文件也能读,读不了的在 knowledge mine 的 problems 里写明原因;删除与覆盖先进回收站(knowledge trash / knowledge restore);运行存档只记引用、不存笔记正文;runtime uninstall --purge-data 默认保留知识库。检索:horosa_knowledge_search / horosa-skill knowledge search "词"(两字词即可、繁简互通,标出处行号);长笔记计算时只带与本盘相关的段落。可选向量检索(换了说法也能找到):装 horosa-skill[vectors] 后运行 horosa-skill knowledge index --vectors(下载并校验 24 MB 的 bge-small-zh 模型)。
uv run horosa-skill knowledge add 八字/滴天髓笔记 --file ./notes.md --techniques bazi_birth --tags 古籍
uv run horosa-skill knowledge mine
uv run horosa-skill knowledge trash                   # 删除 / 覆盖下来的旧版,可 restore
uv run horosa-skill memory query                 # 按 tool / entity / run_id / 全文 检索
uv run horosa-skill memory show          # 精确回看某次完整调用

📦 安装与 runtime 策略

仓库分为三层,兼顾「代码仓库轻量、Release 资产完整、本地运行离线」:

层 位置 作用
📂 公开仓库层 GitHub repo 代码、文档、CLI、MCP、测试、示例、打包脚本
📦 打包输入层 vendor/runtime-source/ 构建离线 runtime 的大体积输入(不进 Git 历史)
💻 用户运行层 ~/.horosa/runtime/current 用户安装后本地执行算法的 runtime

奇门 / 太乙 / 金口诀(及三式合一中的奇门 + 太乙)走星阙 ken 后端;14 路神数走 chart 服务上挂载的 kentang 引擎;结果由 headless JS 层重排为 aiExport.js 段结构,与星阙桌面端逐值同源。配套阅读:Offline Runtime Releases · Runtime Manifest Spec · Repo Layout。

✅ 质量与验证

检查项 结果
🧰 可调用工具 110 / 110 ok=true
🧪 工程测试 2184 / 2184 pass(离线 CI 形状:契约 + 导出 fixture + node JS golden;另 116 项 live 集成测试需本地 runtime,服务未起时自动 skip)
🛡️ 未确认参数时强制追问 100 个技法工具触发 must_ask_user=true
🔓 免闸直读 10 个注册表 / 知识 / 解析类工具不经澄清闸
📐 星阙式导出结构 每个业务技法均带 export_snapshot(已建模 107 个导出 technique;契约 v15 镜像桌面端 aiExport v58)
🧾 技法依据卡 每个技法响应附 data.technique_card;算源声明与运行实测不符时显式亮警
📚 知识库 31 域;技法操作手册 236 条逐条带出处(生成器幂等,随上游版本重收割)
🎯 HorosaBench 106 条基准用例与工具注册表锁步 + 盘面事实忠实性评测(喂错盘 / 诱导复述判红的对抗用例全过)
🗄️ 本地 memory / report 每次技法调用写 1 条本地 run 记录 + 1 份 JSON artifact
🔄 GitHub CI Linux 单测 + JS golden 自检 + Windows OpenClaw smoke(不覆盖跨树上游校验——那两闸需要上游 checkout,只能在维护机跑 preflight_release.py)
📦 Release runtime macOS (arm64) + Windows (x64) 随每个 release 打包并校验(本仓版本 v0.45.1;公开 latest 以 Releases 页为准)——Windows 半从 darwin 种子在托管流水线派生、清单只在两半齐了才上线、三台真机(macOS / Windows x64 / Windows ARM)装起跑过;Windows ARM 自动走 x64 仿真;Intel Mac / Linux 安装时明确报不支持并指向网关模式

第一次 clone 后确认非空壳的最小验证:

cd horosa-skill && uv sync && uv run horosa-skill install
uv run horosa-skill doctor                              # 期望 issues: []
uv run pytest -q                                        # 2184 passed(live 集成测试在服务未起时 skip)
uv run python scripts/run_full_self_check.py --rounds 1 # 全工具调用 / 导出 / 落库 / 检索 / dispatch 汇总

[!WARNING] 审计推运 / 神数类工具时不要只看短预览——其正文通常先写本命盘再写返照 / 推运 / 流年 / 主限表格,只截前若干字符可能只看到本命盘。应打开完整 artifact,按 export_snapshot.sections 逐段检查。详见 docs/EXPORT_AUDIT_GUIDE.md。

📚 文档

文档 内容
docs/ARCHITECTURE.md 架构设计
docs/INPUT_CONTRACTS.md 每个工具的输入契约(必填字段)
docs/DATA_CONTRACTS.md 输出 / envelope / export 数据契约
docs/EXPORT_AUDIT_GUIDE.md 推运类导出的逐段审计方法
docs/OPERATIONS.md · docs/EVALUATION.md 运维 · 评测体系(HorosaBench / 忠实性)
docs/OFFLINE_RUNTIME_RELEASES.md 离线 runtime 打包与发布
docs/LESSONS.md · docs/GLOSSARY.md 逐版本经验台账 · 领域名词表
skills/horosa-agent/SKILL.md · AGENTS.md AI 客户端行为策略源 · Agent 总规则与路由

🙏 致谢与许可证

奇门遁甲 / 太乙神数 / 金口诀(及三式合一中的奇门 + 太乙)的盘面,由 kentang2017 开源的三个 Python 引擎计算,随离线 runtime 一起分发:

  • ✳️ kinqimen(奇门遁甲)— MIT —
  • ✳️ kintaiyi(太乙神数)— MIT —
  • ✳️ kinjinkou(金口诀)— MIT —

上述三个 ken 引擎为第三方 MIT 组件。本仓库其余术数实现——统摄法、十年大运,以及奇门 / 太乙 / 金口 / 大六壬 / 星盘 / 推运 / 卜卦 / 择日 / 神数等的 aiExport.js 格式化与 headless 适配——均为星阙自有算法,按根目录 GNU AGPL-3.0-only 授权。传统术数体系本身(京房八宫、希腊十年星限等)属公共知识,不构成第三方版权。

在 GitHub 查看完整 README

安装

uvx --from "$WHL" horosa-skill install # 📦 装离线 runtime(同上)
新手?先看 mcpskill.org 教程 →