塔罗小程序 · 解读引擎增强:从程式化到丰富化

举报
哦啦啦啦啦 发表于 2026/08/29 19:32:47 2026/08/29
【摘要】 背景塔罗占卜引擎的原版解读是纯模板拼接——每个位置类型只有一句固定模板,同一张牌在同一位置出来的文案几乎一模一样。用两三次就能摸出套路,新鲜感迅速消失。本次改造的目标:在不引入 LLM 的前提下,把解读从"程式化"提升到"有变化、有深度",保持项目"纯前端、零成本、可离线"的核心定位不变。改动概览文件变化说明interpret-engine.js334 → 692 行(+432)引擎核心,5...

背景

塔罗占卜引擎的原版解读是纯模板拼接——每个位置类型只有一句固定模板,同一张牌在同一位置出来的文案几乎一模一样。用两三次就能摸出套路,新鲜感迅速消失。

本次改造的目标:在不引入 LLM 的前提下,把解读从"程式化"提升到"有变化、有深度",保持项目"纯前端、零成本、可离线"的核心定位不变。

改动概览

文件 变化 说明
interpret-engine.js 334 → 692 行(+432) 引擎核心,5 项增强
app.js 250 → 267 行(+17) 渲染 3 个新板块
style.css 390 → 420 行(+30) 散文段落 + 标签样式
cards-data.js 不变 数据层不动
spreads-data.js 不变 数据层不动

五项增强

1. 多模板轮换(降低重复感)

问题:原版每个位置类型(过去/现在/未来/挑战/建议等 10 种)只有一句固定模板。

做法:每个位置类型准备 4 种不同句式,用 card.id % 4 做确定性选择。

  • 同一副牌每次解读文案一致(确定性,不是随机)
  • 不同牌在同一位置会用到不同句式
  • 句式结构有变化:主语前置、状语前置、倒装、设问等

效果:过去位现在有"回望…""…中埋下伏笔""之所以走到现在…""…坐落于…"四种开头,不再千篇一律。

2. 牌组合分析(新增板块 cardCombination)

问题:原版只逐张解读,完全忽略牌与牌之间的关系。

做法:

  • 定义 COMBINATION_MEANINGS 映射表,20 组大阿卡纳经典组合的专属含义(如"高塔+星星=崩塌之后紧接希望""战车+力量=刚柔并济""愚者+世界=终点即起点")
  • 遍历相邻两张牌,命中预定义组合直接输出;没命中按元素关系分析(同元素=协同、相克=张力、不同不克=互补)
  • 首尾跨位分析(第一张与最后一张的呼应)

3. 叙事合成(新增板块 narrative)

问题:原版解读是逐张罗列,缺乏整体叙事感。

做法:把关键牌串成一段连贯的话(150-250 字),不是列表。

  • 有时间线的牌阵(三张、五张、凯尔特等)走"过去→现在→未来"叙事线
  • 没有时间线的牌阵(关系、决策等)走"现状→挑战→建议"逻辑线
  • 用连接词(正因如此、然而、不过、与此同时)串成流畅段落

4. 主题/能量线检测(新增板块 themeAnalysis)

问题:原版只有基于逆位数量的笼统定调,缺乏整体性洞察。

做法:分析整副牌的主题倾向,输出 2-3 条洞察:

  • 元素分布:统计火/水/风/土,识别主导元素和缺失元素
  • 大小阿卡纳比例:判断"人生大事"还是"日常事务"
  • 正逆位能量:判断整体能量走向
  • 主题线:多张同花色聚拢成主题(多张权杖=行动主题,多张圣杯=情感主题)

5. 位置交叉引用(增强 cardInteraction)

问题:原版元素互动只看相邻牌同元素/相克,维度单一。

做法:在现有基础上增加:

  • 相邻位置同元素=延续性,相克=转折点
  • 过去位与未来位的牌是否形成呼应或对比
  • 逆位集中区域分析(前半=起因有问题,后半=结果有风险)

渲染顺序

牌阵总览
  → 主题洞察(新)
  → 深度解析
      ├ 抽牌过程
      ├ 因果分析
      ├ 牌面组合(新)
      ├ 整体叙事(新,散文段落)
      ├ 问题与阻碍
      └ 牌面互动(增强)
  → 神谕指引
  → 结语

验证结果

对全部 8 种牌阵运行测试,全部通过:

  • ✅ 语法检查通过
  • ✅ 所有新字段类型正确(cardCombination 数组、narrative 字符串、themeAnalysis 数组)
  • ✅ 叙事长度合理(三张 182 字、凯尔特 184 字、关系 175 字、决策 146 字)
  • ✅ 多模板轮换生效(8 张不同牌在同一位置得到 8 种不同首句)
  • ✅ 牌组合命中(愚者+魔术师等预定义组合被正确识别)
  • ✅ 确定性验证(同一输入两次解读结果完全一致)

效果对比

以三张牌阵(愚者正位 / 高塔逆位 / 星星正位)为例:

改造前 — 逐张罗列,模板固定:

过去过去的影响与成因,因为愚者正位的影响(新开始、天真),所以形成了现在的起因。…

改造后 — 多了主题洞察、牌面组合、整体叙事:

  • 主题洞察:牌面以风元素为主导,水、土缺位提示情感与务实欠缺;大阿卡纳 3/3 关乎人生大局;正位为主能量顺畅。
  • 牌面组合:高塔与星星相邻——崩塌之后紧接希望;愚者与星星同属风元素,首尾形成对话。
  • 整体叙事:回望过去,愚者正位带着天真无畏踏上旅程。正因如此,当下呈现高塔逆位,试图延缓必然的崩塌。然而未来并非定局——若顺此势延伸,星星正位所示的走向将大概率浮现。不过牌面只是能量的镜像,真正的走向仍取决于此刻如何选择。

设计原则(不变)

  • 纯前端,无后端依赖,无 LLM/API 调用
  • 因果句式风格("因为…所以…"),忠于牌面,不讨好
  • 确定性:同一副牌每次解读结果一致

天花板与后续

本次改造把"3 次就腻"推迟到"二三十次才腻",但终究是模板拼接,玩多了仍会察觉规律。如果未来要彻底消除程式化感,需要引入 LLM 做动态解读(路线 B),届时可保留程序引擎做结构化骨架,把自然语言生成交给 LLM。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。