An interactive tarot/lenormand/poker spread reader with drag-to-position card slots, reversal logic, session memory, and a generative AI interpretation engine — structured 5-section output, cross-session archive intelligence, anti-drift context control, and prompt cache strategy to keep costs sane at ~8K token context. 交互式塔罗/诺曼/扑克牌阵读牌工具,支持拖动定位、逆位逻辑、会话记忆,以及生成式 AI 解读引擎——5 段结构化输出、跨会话档案智能、反漂移上下文控制,以及 Prompt 缓存策略将约 8K token 的上下文成本控制在合理范围内。
Architecture snapshots and product demos. Click cards to flip them, then run the reading. All mocked — nothing is saved. 架构快照与产品演示。点击牌面翻牌,然后运行解读。全部为模拟——不保存任何内容。
Click each card slot to flip · then Run reading to stream the 5-section interpretation 点击每张牌槽翻牌 · 然后点击"运行解读"流式输出 5 段解读
The real engine streams each section via SSE at ~22ms/char. The 5-section structure is enforced in the system prompt — sections cannot be reordered or merged. The Shadow Card (section 4) is auto-revealed from a separate draw; Timing (section 5) is always the last section regardless of question type. 真实引擎通过 SSE 以约 22ms/字的速度流式输出每个段落。5 段结构在系统提示词中强制执行——段落无法重新排序或合并。影子牌(第 4 段)从单独抽牌自动揭示;时机(第 5 段)无论问题类型如何始终是最后一段。
HOT / WARM / COLD — click each tier to expand HOT / WARM / COLD — 点击展开各层
Total archive token budget: ~4,000 of the ~8,000 request budget. HOT tier is prompt-cached; WARM/COLD tiers are dynamically assembled per request. The tiers ensure the AI has meaningful cross-session memory without blowing the context window. 档案 Token 总预算:约 8,000 请求预算中的约 4,000。HOT 层由 Prompt 缓存;WARM/COLD 层每次请求动态组装。这三层确保 AI 拥有有意义的跨会话记忆,同时不超出上下文窗口。
Simulate a 20-question session · watch recenters at Q5, Q10, Q15 模拟 20 个问题的会话 · 观察第 5、10、15 问的自动重心
At Q5, Q10, Q15 the engine silently injects a "recenter" directive into the context window — the model re-reads its original question framing and the HOT archive tier. This prevents the conversation from gradually drifting away from the original question into tangentially related territory, a known failure mode in long LLM sessions. 在第 5、10、15 个问题时,引擎静默向上下文窗口注入"重心"指令——模型重新读取其原始问题框架和 HOT 档案层。这防止了对话逐渐偏离原始问题进入边缘相关领域,这是长 LLM 会话中已知的失败模式。
Toggle cache on/off — see token cost per request 切换缓存开关 — 查看每次请求的 Token 成本
The ~8K system prompt (tarot card definitions, interpretation guidelines, output format rules) is encoded once and cached. Subsequent requests within the session reuse the cached prefix — only the new user message and dynamic archive context are re-encoded. Without caching, each request re-encodes the full 8K, increasing cost ~6×. 约 8K 的系统提示词(塔罗牌定义、解读指南、输出格式规则)只编码一次并缓存。会话内的后续请求复用缓存前缀——只有新用户消息和动态档案上下文需要重新编码。不启用缓存时,每次请求都要重新编码完整的 8K,成本增加约 6 倍。
Ask a question · the AI proposes follow-ups · you can always go your own way 提问 · AI 提出后续问题 · 你随时可以走自己的路
You're never trapped in the AI's framing. The chips are suggestions, not a decision tree. 你永远不会被困在 AI 的框架里。这些选项是建议,而不是决策树。
After each section of interpretation, the engine generates 3 follow-up question chips based on the cards and user's original question. These are context-aware — not generic "tell me more" prompts. The user can pick one OR type anything freely. The design is guided-but-escapable: the AI leads without trapping. 每次解读段落后,引擎基于牌面和用户原始问题生成 3 个后续问题选项。这些是上下文感知的——不是通用的"告诉我更多"提示。用户可以选一个,也可以自由输入任何内容。设计理念是引导但可逃脱:AI 引导而不是困住用户。
Click each step to see what happens to your data 点击每个步骤查看你的数据经历了什么
Account deletion uses an anonymize-preserve pattern (migration 030_deletion_hardening.sql) — your readings are de-linked from your identity but not erased, preserving cross-session archive intelligence for the anonymized record.
账户删除使用匿名保留模式(迁移文件 030_deletion_hardening.sql)——你的解读与身份解除关联但不删除,为匿名记录保留跨会话档案智能。