Product Teardown · Round 4

MetaSight(元见)产品全景架构图

产品:AI 命理 / 占卜网页产品 · metasight.cloud · 证据:截图 01–39(2026-08-20 / 2026-08-22)+ 2026-08-22 实机核对(含随缘路由 [38] 与倾听模式 [39] 两次行为取证)+ 官方博客/文档披露 + Round 1–3 交付物 · 本轮为最终架构逆向汇总,后端实现除官方博客披露外一律不标已确认

已确认 截图 / 实机 / 官方博客·文档直接证据 合理推断 由多条事实推导 建议设计 原产品未证实或没做好,建议新增 未知 证据不足,不猜测 [NN] 截图编号(01–39) 功能命名 非官方组件名
主图线型: 实线 = 已确认 虚线 = 合理推断 点线(蓝)= 建议设计 点线(红)= 当前没做好的机制标注

01执行摘要

一句话架构:MetaSight 是一个「统一人格(元见)+ 多模式聊天工作台」的薄 Agent 架构——前端以四个模式 tab(随缘/看运/倾听/问事)驱动,聊天链路中有三个有行为证据的对话 Agent(A1 问事·六爻 / A2 看运·命盘 / A4 倾听·零工具纯共情 [39]),另有路由行为已证实的随缘路由角色 A3([38],决策主体/准则仍为推断),背后由一组确定性系统服务(S1 排盘、S2 起卦、S3 额度计次、S4 星云图生成)产出结构化命理数据注入模型上下文,配合单一可见的通用 LLM(问事/看运英文思考摘要外露;倾听为中文摘要 [39],语言不一致)流式生成解读,全部状态沉淀在 Neon PostgreSQL(Serverless)之上官方博客

02证据来源与缺口

证据来源(按可信度)

来源内容等级
39 张操作截图 + 2026-08-22 实机核对全旅程页面事实:问事完整链路 [15]–[18]、看运历史对话回放 [36][37]、随缘路由→看运类工具链 [38]、倾听零工具共情回复 [39]、定价 [26]、订阅额度 [34]、档案 [32]、星云图锁定 [30][31]、设置 [35] 等已确认
官方博客《Serverless 数据库迁移实录》 [23]Turso(SQLite)→ Neon PostgreSQL 迁移;真太阳时需求:存地理坐标、经纬度查时区、时间格式与时区转换;Serverless 架构;独立开发者 side project已确认(官方披露,唯一后端硬证据)
官方文档(内嵌飞书 wiki 弹窗) [27]@符号调用命盘、自然语言多人合盘、生辰时间矫正 & 子时盘处理、喜用神自研算法已确认(官方声明);实际行为 未实测
Round 1–3 交付物用户旅程图、Agent 契约(A1/A2/A3/A4 + S1–S4 + 工具总表 + 全局上下文字段表)、A1/A2 功能等价 System Prompt继承各级标注

关键缺口(本轮仍然无法补齐)

缺口影响
LLM 型号、提供方、模型网关模型接入与路由层(§9)只能写「单一可见模型行为」,无法确认选型
起卦调用方(系统预执行 vs A1 工具调用)、问事链路为何不展示工具卡片编排层结构存在两种等价读法
额度计次规则(计次点、哪些动作计次、耗尽拦截话术)计费相关设计只能给建议,无法还原现状
A3 路由决策主体/准则与目的地边界([38] 仅天赋潜能类→看运一例,决策类/情绪类样本未取)、A4 倾听是否计次/多轮形态/危机倾诉兜底、每日运势、星云图生成过程、@命盘/合盘路由与倾听的「存在与形态」已闭环([38][39]),机制细节仍只有单一样本或入口级证据
看运实时提交链路([20][21] 无响应)截图时机 vs 真实失败无法区分「静默失败」标为缺陷实例存在、归因未知
任务队列、日志、链路追踪、评测、监控§10 只能写「需要的能力 / 不能确认的原因」

03核心功能域

从用户视角还原的功能域,按页面实际证据检查;每域标注对应层级与证据等级。

功能域包含内容证据等级
获客与内容官网 hero / features / ai-showcase / divination-methods / pricing / reviews / faq;博客(工程实践/产品更新等 6 分类);文档弹窗(飞书 wiki);语言切换[01][22]–[27]已确认
账号与权限注册(邮箱+邀请码可选+Cloudflare Turnstile)、登录(邮箱密码/验证码/Google/GitHub/忘记密码);个人资料(头像/姓名/邮箱不可改/语言/默认运势系统)[03][04][35]已确认
Onboarding5 步向导:欢迎 → 出生时间(阳历/阴历、时辰可留空)→ 个人信息(性别必填,感情/行业/职业/命理了解程度可选);步骤指示器错位缺陷[05]–[11]已确认
核心问答(聊天工作台)四模式 tab(随缘/看运/倾听/问事)+ 各模式副标题与推荐问题集;卦象卡片、命盘卡片、工具调用卡片、思考折叠条、流式输出、暂停、赞/踩、分享;历史对话侧栏(自动命名);随缘路由→看运类工具链 [38];倾听零工具纯共情回复 [39][12]–[21][28][29][36]–[39]已确认
命理资产命运档案(八字命盘 CRUD、主八字标记、可搜索、可新增他人);人生星云图(查看/重新绘制/历史报告;已生成但锁定);每日运势(八字可用、紫微斗数即将推出)[30]–[33]已确认;星云图生成过程 未知
订阅与计费四档定价(免费 5 次/月、微光 ¥19.9/周 30 次、烛照 ¥39.9/月 100 次+星云图、洞见 ¥99.9/月 200 次+真人 1v1);月度解读次数 2/5 + 重置日;兑换码;邀请 2 好友解锁星云图[26][31][34][35]已确认;计次规则 未知
增长裂变注册邀请码(可选)、设置-邀请好友、邀请 2 人解锁星云图[04][31][35]已确认(入口);计数联动 合理推断
错误反馈与任务状态「聊天服务正常」状态条;生成中暂停按钮;提交后 loading/报错/重试引导完全缺失;额度将尽无预警[14][16][20][21][28]已确认(缺失本身是事实)

04端到端功能流转(五条流)

选取证据最完整的任务:「看运模式问年度运势」(历史对话「年度运势分析」回放 [36][37],工具卡片文字以实机核对为准)。每步写清触发者/处理者/读取/判断/工具/结果/写回/确认/交接/失败分支,按五流展开。

步骤① 用户交互流② Agent 控制流③ 工具调用流④ 数据与全局上下文流⑤ 资产流失败分支 / 用户确认
P1 进入看运
[19]
用户切「看运」tab,看到副标题「根据生辰,解读过去、现在与未来」与运势类推荐问题 编排层将「当前模式=看运」写入会话上下文,决定后续 Agent 行为配置与工具集注入方式 读:模式 tab 状态(前端);写:会话模式字段推断 倾听 tab 副标题未随切换更新([29])——证明模式状态与文案上下文存在脱钩实例 缺陷
P2 提交问题
[20][21]
用户输入「今年我的运势如何」并提交(触发者=用户) A2 接管,进入 planning:解析时间语义(「今年」→2026)推断,判定需取数(命盘+时间流) 无(尚未调工具) 读:用户问题文本、当前日期(推断作为「今年」的解析基准) 现状:提交后无 loading/无报错/无重试引导([20][21] 静默无响应);无任何用户确认门 缺陷
建议:超时重试一次 + 显式报错 + 保留输入 建议设计
P3 额度检查
计次点未确认
用户无感知 无证据表明 A2 执行前校验额度 未知 额度检查与计次功能命名(S3):读订阅档位+已用次数 → 放行/拦截存在性推断,拦截行为未确认 读:BillingContext(档位、2/5、重置日 [34]) 额度耗尽时的拦截话术全产品无证据 未知;建议:提交前预估+拦截+告知重置时间与升级入口 建议设计
P4 查询命盘
[36] 工具卡片①
用户看到工具调用卡片「查询命盘-主命盘」+ 命盘卡片(巳/丑/辰/午、[性别称谓已脱敏]:庚(金)) A2 自主决策调用(卡片顺序与问题语义对齐支持此读法)推断;处理者=A2 查询命盘半官方:输入=档案定位符(默认=主命盘)→ 输出=四柱/日主/性别称谓 读:ProfileContext 主命盘档案(Onboarding 经 S1 写入 [08]→[32]);写:工具结果进入回复上下文(具体注入机制未知)(英文摘要开篇复述 "User's Bazi…" [36]) 命盘档案为只读引用,不产生新版本 无档案/时辰留空时的降级行为无证据 未知;建议:无档案→引导建档,缺时辰→显式声明时柱缺失 建议设计;调用不经用户确认 事实
P5 查询时间流
[36] 工具卡片②
用户看到工具卡片「查询时间流-2026年流年丙午·七杀·天河水」 A2 在拿到命盘(日主[日主已脱敏])后发起第二次调用——顺序固定为先命盘后时间流(十神推算依赖日主)顺序依赖归因 查询时间流半官方:输入=目标年份(2026,由问题语义解析推断)+命盘 → 输出=流年干支丙午/十神七杀/纳音天河水;是否含大运 未知(正文引用大运 [37]) 读:P4 的命盘结果、目标时段;写:时间流数据进入回复上下文(具体注入机制未知)(DivinationContext) 时间流为派生计算结果,是否落库复用(每日运势/星云图共享)未知 工具失败处理无证据;建议:重试一次→降级(仅命盘静态分析+声明缺时间流)建议设计
P6 流式生成解读
[36][37]
「思考了片刻」折叠英文推理 → 分节中文长文(…三、财运 / 四、健康与身心…,断语式标题,先断语后展开)→ 免责声明固定文案 A2 基于工具返回做命理推演(流年七杀→「有财可求但需主动出击」;火旺克金→「注意呼吸与情绪」),论断与工具数据逐字可互证 事实 流式文本生成功能命名:调用 LLM,输入=问题+命盘+时间流+分节模板 → 输出=分节长文 读:DivinationContext 全量取数结果 + 平台模板(E 类);写:思考摘要+正文随对话写入 无独立资产,产物依附对话记录 中断/暂停行为在实时链路未取证 未知;英文思考在中文语境出戏 缺陷观感;无结果质量自检证据,建议校验干支一致性 建议设计
P7 落库与计次
[34][36]
解读完整呈现,底部出现点赞/点踩/分享图标 A2 或编排层触发持久化与计次(写入方未确认) 对话记录持久化功能命名:完整对话(命盘卡片/思考/工具卡片/正文)→ 历史列表条目(自动命名「年度运势分析」);额度计次:月度解读次数计数(2/5) 写:ConversationContext(对话记录,2 天后可完整回看 [36])、BillingContext(计数 -1推断,计次点未确认 产生资产:一条可回看的对话记录;对话进入左侧栏历史列表 计次失败/落库失败的行为无证据;建议:失败不阻塞展示、记录补偿、中断不重复计次 建议设计
P8 反馈与交接
[37]
用户可点赞/点踩/分享,或继续追问、或转去看星云图/每日运势 无下游 Agent——任务终结于本条对话 事实 写:赞/踩反馈状态;去向(是否回流排序/训练/客服)未知,疑似只写不读 对话资产持续可访问;是否反哺星云图/档案 未知 无确认门、无完成校验证据;建议:完成条件显式化(落库+计次各一次且仅一次)建议设计

05产品分层架构(9 层)

不预设每层已确认;每层标注组件与其证据等级。全景图见 §13。

组件确认程度
L1 用户与渠道层 官网着陆/定价/博客/文档弹窗(飞书 wiki)[01][22]–[27];注册登录(邮箱/验证码/Google/GitHub + Cloudflare Turnstile)[03][04];邀请裂变(邀请码/邀请好友/邀请 2 人解锁)[04][31][35];语言切换(简中)[35] 已确认 全部有页面证据
L2 交互与工作台层 聊天工作台(四模式 tab、推荐问题、输入框、状态条);结果组件(卦象卡片/命盘卡片/工具调用卡片/思考折叠条/暂停按钮/赞踩分享);历史对话侧栏;底部工具栏六入口(BETA);订阅/设置/档案/星云图/每日运势页面 已确认 组件全部可见;缺陷:提交无 loading/报错、步骤指示器错位、模式副标题脱钩、淡入动画依赖真实交互
L3 产品应用层 Onboarding 向导模块 [05]–[11];对话管理(自动命名标题、历史列表)[36];命运档案 CRUD(主八字标记/搜索/新增)[32];星云图模块(查看/重新绘制/历史报告)[30];每日运势模块(八字可用/紫微即将推出)[33];订阅管理(额度/重置日/兑换码)[34];设置模块(六项)[35] 已确认 均为可见 CRUD/流程模块
L4 Agent 与流程编排层 A1 问事解读 Agent [15]–[18];A2 看运解读 Agent [36][37];A3 随缘模式路由器(路由行为 [38]:「我天生适合做什么」→ 看运类工具链,决策主体/准则仍为推断);A4 倾听 Agent(零工具、不读命盘、共情三段式 + locale 注入 [39]);模式注入编排(问事不起盘/看运查命盘/倾听零工具的行为分野);无确认门、无可见重试、无可见状态机 A1/A2/A4 已确认(行为可见,A4 为单一样本);A3 路由行为 已确认、决策主体/准则 合理推断;编排机制 合理推断
L5 工具与服务层 工具:查询命盘查询时间流(半官方,卡片文案 [36])、流式文本生成对话记录持久化额度检查与计次@命盘检索/多人合盘(文档声明 [27],未实测);系统服务:S1 排盘(含真太阳时/经纬度时区换算博客[23]、生辰矫正/子时盘文档[27])、S2 起卦、S3 额度计次、S4 星云图生成器 S1/工具卡片/持久化 已确认;S2 产出物 已确认(调用方 未知);S3 计数 已确认(规则 未知);S4 未知(仅锁定态)
L6 模型接入与路由层 单一可见 LLM 行为:英文推理摘要外露("Let me analyze this hexagram…" / "User's Bazi: Birth: [出生时间已脱敏]…")[16][36][38] 表明是通用大模型;倾听模式思考摘要为中文(直接可读,含角色设定复述与 locale 决策)[39]——同一产品内摘要语言不一致;流式输出、可暂停;A1/A2/A4 是否同一底层模型不可见(A4 行为角色有证据,部署形态未知 [39]) 单一模型行为 已确认;型号/提供方/动态路由 未知——按规范,页面只出现一个模型行为,不得推断具备动态路由
L7 全局上下文与数据层 按领域拆分:UserContext(账户资料/语言/默认运势系统)、ProfileContext(命盘档案/主八字标记)、DivinationContext(卦象/时间流,对话级)、ConversationContext(历史对话/思考摘要/工具痕迹/赞踩)、WorkflowState(对话状态机)、BillingContext(档位/月度计数/重置日/兑换码/邀请关系)、NebulaAssetContext(星云图资产与版本)。详见 §7 UserContext/ProfileContext/ConversationContext/BillingContext 已确认(有页面字段);DivinationContext 已确认(对话级数据可见);WorkflowState 建议设计(无状态机证据);NebulaAssetContext 合理推断
L8 知识与公共资产层 六十四卦/爻辞知识体系(箴言直引贲卦上九爻辞「白贲无咎」[18]);十神/纳音/五行生克术语体系 [37];固定输出模板(四段骨架+免责声明固定文案,两模式逐字一致 [18][37]);推荐问题集(每模式 8 条)[12][15];喜用神自研算法(文档声明 [27]) 知识与模板 已确认(产物中直接可见);注入机制(Prompt vs 编排层)合理推断;喜用神算法 文档确认(实现 未知
L9 基础设施与治理层 数据库:Neon PostgreSQL(自 Turso/SQLite 迁移)官方博客[23];Serverless 运行时官方博客[23];Cloudflare Turnstile 人机验证 [04];前端托管/ CDN / 模型网关 / 任务队列 / 日志 / 链路追踪 / 评测 / 成本控制——无证据 Neon/Serverless/Turnstile 已确认;其余 未知(§10 只写需要的能力与可能选型)

06Agent、工具和全局上下文关系

角色调用工具 / 服务读上下文写上下文交接证据
A1 问事解读
元见·六爻
流式文本生成;起卦归属未确认(主设计:S2 提交时预执行、卦象作必填输入注入)模式=问事;卦象数据(DivinationContext);输出模板对话记录(ConversationContext);触发计次(BillingContext)推断无下游;终结于本条对话已确认 [15]–[18];不读命盘 推断
A2 看运解读
元见·命盘
查询命盘查询时间流流式文本生成(自主决策推断);@命盘/合盘登记为待验证扩展模式=看运;主命盘定位(ProfileContext);当前日期;输出模板对话记录+工具痕迹;赞踩状态;触发计次推断无下游;时间流是否与每日运势/星云图共享 未知已确认 [36][37]
A3 随缘路由器模式分发功能命名([38] 证明分发到看运类链路真实执行:查询命盘×2→查询时间流→分节解读)用户问题;或读档案完备度未知「本次实际使用模式」字段未知→ A1/A2/A4 之一([38] 实例→看运类链路)目的地集合推断路由行为 已确认 [38];决策主体/准则 合理推断(单一样本不能排除「随缘=默认看运」)
A4 倾听 Agent
独立人格
零工具:仅 流式文本生成(不查询命盘/时间流、不起卦)用户倾诉文本;locale=zh(显式注入);当前模式=倾听;会话轮次(首轮感知)对话记录(含中文思考摘要与正文,标题「近期压力疏导」);是否计次未知无下游;是否经随缘路由可达未知已确认 [39](单一样本)+ 入口 [28][29];人格独立(角色设定显式不同)
S1 排盘服务
非 LLM
真太阳时换算(经纬度→时区博客)、生辰矫正/子时盘文档、喜用神算法文档Onboarding 表单、档案页新增表单命盘档案(ProfileContext,含主八字标记)→ A2(经查询命盘)、档案页、@调用/合盘已确认 产出物 [08]→[32][36];非 LLM 推断
S2 起卦服务
非 LLM
六爻摇卦(随机/时间种子推断问事提交信号卦象(DivinationContext)+ 卦象卡片渲染→ A1(注入推理上下文)已确认 产出物 [16];调用方 未知
S3 额度计次档位维护、月度计数、兑换码改写档位BillingContext(档位)已用次数(2/5);重置日→ 订阅页展示;A1/A2 提交前是否消费 未知已确认 计数 [26][34];规则 未知
S4 星云图生成器生成「3D 多维运势可视化/100 年轨迹/关键年份解读」资产(含历史报告版本推断命盘+时间流推断星云图资产(NebulaAssetContext,状态=已生成但锁定)→ 星云图页(被权限拦截 [31])未知(仅锁定态 [30][31],实机核对)

07全局上下文架构(按领域拆分)

不画无结构大框。按领域拆为 7 个 Context(Context 名为推导模板名,非官方命名);只有页面证据的字段标「真实字段」,否则标推断/建议。

Context(模板名为推导)字段(实例)生产者消费者证据等级
UserContext 姓名「测试用户」、头像、邮箱(不可改)、语言(简中,locale=zh)、默认运势系统(八字)、邀请码 注册 [04] / 设置页 [35] 聊天主页问候 [28]、设置页、每日运势入口 [33]、A4 倾听 Agent(locale 显式注入推理上下文 [39],全产品首次直接证实用户偏好字段注入) 已确认(真实字段)
ProfileContext
命盘档案
出生时间([出生时间已脱敏],阳历/阴历、时辰可留空)、性别(已脱敏,必填)、个人背景可选字段(感情/行业/职业/命理了解程度)、主命盘([四柱已脱敏],日主[日主已脱敏],「主八字」标记)、他人命盘列表、(地理坐标博客[23]披露需存储 Onboarding [08][09] → S1 排盘 → 档案页 [32]「+新增」 A2(经查询命盘工具 [36])、档案页、@调用/合盘(文档 [27]) 已确认;个人背景字段是否被消费 未知(疑似只写不读);地理坐标字段 博客确认(页面不可见)
DivinationContext
对话级命理数据
卦象(贲→旅、变爻三/上爻、逐爻老少);时间流(2026 流年丙午·七杀·天河水,或含大运来源未知 S2 起卦 [16];查询命盘/查询时间流工具 [36][38] A1/A2 推理上下文(英文摘要逐行复述,证明已在上下文中)、卦象/命盘卡片 UI 已确认(数据在上下文中有直接证据);生命周期=单条对话 推断
ConversationContext 对话列表(自动命名标题、相对时间);对话内:问题、卦象/命盘卡片、思考摘要(问事/看运/随缘英文 [16][36][38],倾听中文 [39])、工具卡片(倾听无 [39])、正文、免责声明、赞/踩状态 A1/A2/A4 完成后写入(写入方未确认) 左侧栏历史列表 [36][38][39];历史回放完整可看(含工具链与思考摘要) 已确认;写入方 推断
WorkflowState
对话状态机
waiting_input / executing / generating / interrupted / completed / failed 等 建议设计:页面仅有「生成中可暂停」「服务正常状态条」等碎片状态,无统一状态事实源证据——静默失败 [14][20][21] 正是缺这一层的症状
BillingContext 订阅档位(基础/微光/烛照/洞见)、月度解读次数(2/5)、重置日(2026-09-20)、兑换码、邀请关系(邀请 2 人解锁星云图)、档案人数上限(免费档限 3 人) 订阅系统/兑换码 [34];S3 计次;注册/邀请 [04][35] 订阅页 [34]、定价页 [26]、星云图锁定判断 [31];A1/A2 提交前是否读取 未知 已确认(字段);计次规则与拦截消费 未知;邀请-解锁联动 推断
NebulaAssetContext 星云图资产(状态=已生成但锁定)、历史报告版本(「重新绘制/历史报告」按钮暗示版本化) S4(触发时机未知) 星云图页(被权限拦截 [31]) 合理推断(仅锁定态与按钮证据 [30][31])
已发现的一致性问题(生产者—消费者错配)

08知识与公共资产架构

区分「项目/用户数据」与「可复用知识」,回答规范的六个问题。

问题结论等级
知识如何变成模型可执行信息?两条路径并存:①模板与规则注入 Prompt——四段输出骨架、免责声明固定文案(问事/看运逐字一致 [18][37])、断语式小节风格,说明存在平台级输出模板;②确定性计算结果注入上下文——卦象/命盘/流年干支由 S1/S2/工具算好后喂给模型(英文摘要逐行复述可证),模型只做「解释」不做「计算」。命理知识本体(六十四卦爻辞、十神生克)由模型参数知识与注入数据共同支撑注入事实 已确认;模板化机制 推断
资产如何跨步骤复用?命盘档案是核心复用资产:Onboarding 一次录入 → S1 排盘 → A2 查询命盘消费 →(推断)每日运势/星云图共用同一档案。时间流计算结果是否在 A2/每日运势/星云图间共享无证据——若不共享则存在同一年份重复计算档案复用 已确认;时间流共享 未知
系统如何知道模型能力边界?无证据。A1 不持有命盘/时间流工具(链路无卡片)说明工具集按模式做了静态隔离推断;但「模型知道自己不能干什么」完全依赖 Prompt 约束,未见工具级强制合理推断
安全/计费规则在 Prompt 里还是工具强制执行?免责声明是 Prompt/模板层(固定文案出现在正文末尾);「一事一占,再占不灵」目前看只是文案层约束 [13];计费规则(额度拦截)应为工具强制,但拦截点未出现在任何截图中——最大黑盒。建议:计费/权限一律由工具层(S3)强制,不依赖 Prompt现状 未知;原则 建议设计
用户反馈是否沉淀为知识?赞/踩入口存在 [37],但无任何证据显示反馈影响后续输出(推荐问题未个性化、结果无变化),疑似只写不读未知(疑似未闭环)
私有与公共资产如何隔离?私有:命盘档案(含他人命盘,受档位人数上限约束 [26])、对话记录、星云图——均属用户账户域;公共:推荐问题集、输出模板、免责声明、命理知识、喜用神算法。隔离机制本身(行级权限/租户隔离)无证据,属 Neon 数据库上的应用层实现推断边界划分 已确认;实现机制 未知

09模型接入与路由

建议的模型路由设计 建议设计

场景能力需求成本/延迟约束切换策略
A1 问事解读中文长文、卦象-情境映射、文学性箴言中(单次约 17 秒 [16])主模型失败 → 同档备选一次重试 → 显式报错
A2 看运解读工具调用(function calling)稳定性、长上下文(命盘+时间流+模板)、数据一致性中—高(两次工具往返+长文)工具调用失败重试一次 → 降级声明 → failed
A3 路由分类(若存在)轻量分类即可,可用小模型/规则低延迟优先分类置信度低 → 默认模式 + 披露路由结果
A4 倾听(已确认存在 [39])共情对话、低延迟流式(现状零工具纯 LLM)低成本高频独立小模型档;危机倾诉需安全兜底(现状无证据)

10底层架构选型表

按规范只写:需要的能力 / 已知选型 / 可能选型 / 推荐方案 / 不能确认的原因。除博客披露外一律不标已确认。

能力已知 / 证据可能选型与推荐确认程度
关系数据库Neon PostgreSQL(Serverless);由 Turso(SQLite)迁入,动因是真太阳时需求(存地理坐标、经纬度查时区、时间类型与时区转换)[23]已落地;建议:对话/工具调用/计次事件分表,计次用事务或原子计数器防并发重复扣已确认(官方博客)
运行时形态Serverless(「不需要单独管理数据库服务器」「冷启动」语境)[23]Vercel / Cloudflare Workers 等 Serverless 平台之一Serverless 已确认;具体平台 未知
人机验证Cloudflare Turnstile(注册页「驗證您是人類」)[04]已确认
认证邮箱密码 / 邮箱验证码 / Google / GitHub OAuth [03]自建或 Auth 服务(如 Auth.js/Clerk/Supabase Auth),无证据能力 已确认;实现 未知
前端托管 / CDN无证据;页面有淡入动画且自动截图时渲染不完整,暗示重客户端渲染推断与 Serverless 平台同栈(Vercel/CF Pages)未知
LLM 接入 / 模型网关无证据;页面展示的英文摘要 外露说明无中间包装层推断直连官方 API 或经网关(OpenRouter/One-API 等);推荐加网关做重试、脱敏(隐藏原始英文思考)、成本归集未知
支付 / 订阅四档定价+兑换码 [26][34];支付方式页面未见微信支付/支付宝/Stripe 之一(面向中文用户+海外域名,可能两者)档位 已确认;支付通道 未知
任务队列 / 异步无证据;星云图「已生成但锁定」暗示存在异步/预生成任务推断Serverless 定时任务(cron)或轻量队列即可;独立开发者规模不需要重型 MQ未知
日志 / 链路追踪 / 评测无证据;静默失败缺陷 [14][20][21] 若无追踪将极难定位推断推荐:每次对话一条 trace(提交→工具→模型→落库→计次),失败节点可见未知
命理计算库排盘为自研或库实现未知;真太阳时/时区逻辑自研(博客详述)[23];喜用神「自研算法」(文档 [27])能力 已确认;实现 未知

11数据实体表与 ER 图

实体名为推导(模板名不代表真实表名);关系标注「页面证据」或「推导」。存储底座为 Neon PostgreSQL官方博客[23]

实体(推导命名)关键字段(实例)证据等级
Userid、用户名「测试用户」、邮箱、头像、语言、默认运势系统、第三方登录绑定(Google/GitHub)[04][28][35]已确认
MingProfile(命盘档案)所属用户、姓名、出生时间(阳历/阴历原值)、时辰可空、性别、四柱([四柱已脱敏])、日主([日主已脱敏])、是否主八字、(地理坐标博客[08][09][32][36] + 博客[23]已确认;坐标字段页面不可见博客确认
Conversationid、所属用户、模式(问事/看运/…)、自动命名标题(「年度运势分析」「Offer选择分析」)、创建时间、相对时间展示[36] 侧栏已确认
Message(对话内容)对话 id、角色(用户/元见)、问题文本、思考摘要(英文)、正文(分节)、免责声明、卡片负载(卦象/命盘/工具)、时间戳[16]–[18][36][37]已确认(内容);拆分粒度 推导
DivinationChart(卦象)对话 id、本卦(贲/22)、变卦(旅/56)、变爻(三爻、上爻)、逐爻阴阳老少[16]已确认(产出物);独立成表 推导
ToolCall(工具调用痕迹)对话 id、工具名(查询命盘/查询时间流,半官方)、参数(主命盘/2026)、返回摘要(丙午·七杀·天河水)[36] 工具卡片(实机核对)已确认(存在);存储结构 推导
TimeFlowResult(时间流)命盘 id、目标年份(2026)、流年干支(丙午)、十神(七杀)、纳音(天河水)、(大运来源未确认[36][37]已确认(返回内容);是否落库 未知
Subscription用户 id、档位(基础/微光/烛照/洞见)、周期(周/月)、到期时间[26][34]已确认
QuotaCounter(月度额度)用户 id、已用/上限(2/5)、重置日(2026-09-20)[34]已确认(字段);计次事件流 未知
RedeemCode码(XXXX-XXXX-XXXX)、可兑换档位、状态;兑换规则 FAQ(续费/升级/高级用低级码)[34]已确认
Invitation邀请人、被邀请人、注册邀请码(可选);邀请计数 → 星云图解锁(满 2 人)[04][31][35]入口 已确认;计数联动 推导
NebulaReport(星云图资产)用户/命盘 id、体系(八字;西方星盘敬请期待)、状态(已生成但锁定)、版本(重新绘制/历史报告)、3D 可视化数据[30][31](实机核对)合理推断(仅锁定态+按钮证据)
Feedback消息 id、赞/踩、时间;去向未知[37] 入口入口 已确认;消费 未知
DailyFortune(每日运势)用户/命盘、日期、体系(八字);生成链路未进入取证[33] 仅入口未知

Mermaid ER 图

erDiagram USER ||--o{ MING_PROFILE : "拥有(1 主八字 + N 他人盘)【页面证据 32】" USER ||--o{ CONVERSATION : "发起【页面证据 36】" USER ||--|| SUBSCRIPTION : "持有档位【页面证据 26/34】" SUBSCRIPTION ||--|| QUOTA_COUNTER : "维护月度计数 2/5【页面证据 34】" USER ||--o{ INVITATION : "发起邀请【页面证据 04/35】" INVITATION }o--o| NEBULA_REPORT : "满 2 人解锁【推导 31】" CONVERSATION ||--o{ MESSAGE : "包含【页面证据 36/37】" CONVERSATION ||--o| DIVINATION_CHART : "问事产生卦象【页面证据 16】" CONVERSATION ||--o{ TOOL_CALL : "记录工具痕迹【页面证据 36】" TOOL_CALL }o--o| MING_PROFILE : "查询命盘读档案【页面证据 36】" TOOL_CALL }o--o| TIME_FLOW_RESULT : "查询时间流返回【页面证据 36】" MING_PROFILE ||--o{ TIME_FLOW_RESULT : "推算流年(是否落库未知)【推导 36/37】" MING_PROFILE ||--o{ NEBULA_REPORT : "生成星云图(时机未知)【推导 30/31】" MESSAGE ||--o{ FEEDBACK : "收到赞踩(去向未知)【页面证据 37】" REDEEM_CODE }o--o{ SUBSCRIPTION : "兑换改写档位【页面证据 34】" MING_PROFILE ||--o{ DAILY_FORTUNE : "每日运势(链路未知)【推导 33】"

12端到端时序图(看运模式问年度运势)

实线消息=已确认链路 [36][37](实机核对);alt 块标注现状失败分支([20][21] 静默无响应)与建议修复。建议设计步骤以注释标明。

sequenceDiagram autonumber actor U as 用户 participant UI as 聊天工作台(前端) participant A2 as A2 看运解读 Agent participant CTX as 全局上下文 participant T1 as 查询命盘工具 participant T2 as 查询时间流工具 participant LLM as 模型(LLM,型号未知) participant S3 as S3 额度计次 participant DB as 对话存储(Neon PG【博客确认】) U->>UI: 切「看运」tab [19] UI->>CTX: 写入 当前模式=看运(推断注入) U->>UI: 提交「今年我的运势如何」 UI->>A2: 问题文本 + 模式上下文 Note over UI,S3: 【建议设计】提交前额度预检:读 BillingContext,
不足则拦截并提示重置日/升级入口(现状无证据) A2->>CTX: 读 当前日期(「今年」→2026,推断) A2->>T1: 查询命盘(定位=主命盘)【已确认 卡片①】 T1->>CTX: 读 ProfileContext 主命盘档案 T1-->>A2: 四柱 [四柱已脱敏] · 日主[日主已脱敏] · [性别称谓已脱敏] UI-->>U: 渲染命盘卡片 [36] A2->>T2: 查询时间流(2026,依赖日主)【已确认 卡片②】 T2-->>A2: 流年丙午 · 十神七杀 · 纳音天河水(是否含大运 未知) A2->>LLM: 问题+命盘+时间流+分节模板(流式生成) LLM-->>UI: 英文思考摘要(折叠「思考了片刻」) LLM-->>UI: 中文分节长文(三、财运…四、健康与身心…)+ 固定免责声明 [37] UI-->>U: 流式展示(可赞/踩/分享) Note over A2,LLM: 【建议设计】输出自检:干支/十神与工具返回逐字一致,
失败修正重出,不得声称「严格符合」 A2->>DB: 写入对话记录(标题自动命名「年度运势分析」)【已确认 36】 A2->>S3: 触发月度计次一次(计次点未确认,推断) S3->>CTX: BillingContext 已用次数 2/5→(推断) U->>UI: 点赞/点踩 [37] UI->>CTX: 写反馈状态(去向 未知,疑似只写不读) alt 现状失败分支【已确认缺陷 20/21】 U->>UI: 提交问题 UI--xU: 无任何反馈(无 loading/无报错/无重试引导) Note over UI: 用户无法区分 网络错/没额度/产品挂了 → 流失风险 else 建议修复【建议设计】 UI->>A2: 超时未受理 → 自动重试一次 A2--xUI: 仍失败 → 显式报错 + 保留输入 + 重发按钮 end

13产品全景架构主图

自上而下 9 层。实线=已确认,虚线(黄)=合理推断,点线(蓝)=建议设计,点线(红)+⚠节点=当前没做好的机制。箭头标签注明调用/读取/写入/展示关系;红色 ⚠ 节点挂在问题发生的层上。图 A 为只保留核心链路的可读主图;图 B 为全量组件与关系总图(较宽,以 100% 原始尺寸渲染,可横向滚动)。

图 A · 核心链路主图

flowchart TB subgraph L1["L1 用户与渠道层"] U["用户"] CH2["注册登录(邮箱/验证码/Google/GitHub + Turnstile [04])"] end subgraph L2["L2 交互与工作台层"] UI1["聊天工作台
四模式 tab · 推荐问题 · 输入框 [28]"] UI2["结果组件(渲染 A1/A2 产物)
卦象/命盘/工具卡片 · 思考折叠 · 赞踩 [16][36]"] end subgraph L3["L3 产品应用层"] AP3["Onboarding 向导 [08][09]"] AP2["命运档案 CRUD [32]"] AP4["订阅管理 / 兑换码 [34]"] AP5["星云图模块(已生成但锁定 [31])"] end subgraph L4["L4 Agent 与流程编排层"] A1["A1 问事解读 Agent(六爻)[15-18]"] A2["A2 看运解读 Agent(命盘)[36][37]"] A3["A3 随缘路由器【路由行为已确认 38 · 决策主体推断】"] A4["A4 倾听 Agent(零工具·纯共情)[39]"] end subgraph L5["L5 工具与服务层"] T1["查询命盘(半官方)[36]"] T2["查询时间流(半官方)[36]"] T4["对话记录持久化(功能命名)"] S1["S1 排盘服务
真太阳时/时区【博客 23】· 生辰矫正【文档 27】"] S2["S2 起卦服务 [16]"] S3["S3 额度计次 [34]"] S4["S4 星云图生成器【未知:仅锁定态 31】"] end subgraph L6["L6 模型接入与路由层"] LLM["通用 LLM · 型号/提供方【未知】
英文思考摘要外露 [16][36] · 无动态路由证据"] end subgraph L7["L7 全局上下文与数据层"] C2["ProfileContext 命盘档案"] C3["DivinationContext 卦象/时间流"] C5["BillingContext 档位/额度 2/5"] C6["ConversationContext 历史对话"] C4["WorkflowState 统一状态机【建议】"] end subgraph L8["L8 知识与公共资产层"] K["命理知识与模板库
六十四卦/十神/纳音 + 输出模板/免责声明 + 推荐问题集 + 喜用神算法【文档 27】"] end subgraph L9["L9 基础设施与治理层"] I1["Neon PostgreSQL【官方博客 23】
(自 Turso/SQLite 迁入)"] I2["Serverless 运行时【官方博客 23】"] I4["模型网关 / 链路追踪 / 评测【建议:包裹 LLM 调用】"] end PB1["⚠ 提交静默失败:无 loading/报错/重试 [14][20][21]"] PB2["⚠ 计次口径不明:4 条对话 vs 2/5 对不上;耗尽拦截无证据"] PB3["⚠ 状态不一致:步骤指示器错位 · 倾听副标题脱钩 · 页面展示英文思考摘要"] %% ===== 隐形脊线(index 0..7,不显示)===== U ~~~ UI1 UI1 ~~~ AP3 AP3 ~~~ A1 A1 ~~~ T1 T1 ~~~ LLM LLM ~~~ C2 C2 ~~~ K K ~~~ I1 %% ===== 实线:已确认(22 条,index 8..29)===== U -->|"注册/登录"| CH2 CH2 -->|"登录后进入"| UI1 UI1 -->|"提交问事问题"| A1 UI1 -->|"提交看运问题"| A2 AP3 -->|"出生时间+性别"| S1 AP2 -->|"新增他人命盘"| S1 S1 -->|"写命盘档案"| C2 A2 -->|"调用①"| T1 A2 -->|"调用②"| T2 T1 -->|"读主命盘"| C2 A1 -->|"流式生成"| LLM A2 -->|"流式生成"| LLM S2 -->|"写卦象"| C3 T4 -->|"写历史对话"| C6 C6 -->|"持久化存储"| I1 C2 -->|"持久化存储"| I1 S3 -->|"写月度计数"| C5 AP4 -->|"档位/兑换码"| C5 C5 -->|"额度展示 2/5"| AP4 S1 -->|"运行于"| I2 UI1 -->|"提交倾听倾诉"| A4 A4 -->|"流式生成(零工具)"| LLM %% ===== 虚线:合理推断(13 条,index 30..42)===== UI1 -->|"随缘提交"| A3 A3 -->|"分发"| A1 A3 -->|"分发"| A2 UI1 -->|"提交即起卦(调用方未确认)"| S2 C3 -->|"卦象注入推理上下文"| A1 T2 -->|"依赖日主"| C2 A1 -->|"解读落库(写入方未确认)"| T4 A2 -->|"解读落库(写入方未确认)"| T4 A1 -->|"完成计次(计次点未确认)"| S3 A2 -->|"完成计次(计次点未确认)"| S3 S4 -->|"生成(时机未确认)"| AP5 K -->|"知识/模板注入"| A1 K -->|"知识/模板注入"| A2 %% ===== 点线(蓝):建议设计(4 条,index 43..46)===== A1 -.-|"状态机(统一状态事实源)"| C4 A2 -.-|"状态机"| C4 C5 -.-|"提交前额度预检"| A1 C5 -.-|"提交前额度预检"| A2 %% ===== 点线(红):当前没做好的机制(3 条,index 47..49)===== PB1 -.- UI1 PB2 -.- S3 PB3 -.- UI1 linkStyle 30,31,32,33,34,35,36,37,38,39,40,41,42 stroke:#9a6b00,stroke-dasharray:6 4 linkStyle 43,44,45,46 stroke:#0b6fa4,stroke-width:2px linkStyle 47,48,49 stroke:#b3382e,stroke-width:2px classDef agent fill:#efecf8,stroke:#4a3f7a,color:#2b2547; classDef svc fill:#eef1f4,stroke:#5b6b7a,color:#33404c; classDef ctx fill:#ffffff,stroke:#9a6b00,color:#5c4300; classDef infra fill:#f3efe6,stroke:#8a8172,color:#4c463c; classDef inferN fill:#fbf2dd,stroke:#9a6b00,color:#5c4300; classDef unk fill:#fbeae8,stroke:#b3382e,color:#7a2420; classDef sugg fill:#e6f1f8,stroke:#0b6fa4,color:#0b4a6e; classDef prob fill:#fbeae8,stroke:#b3382e,stroke-width:2px,color:#7a2420; class A1,A2,A4 agent; class T1,T2,T4,S1,S2,S3 svc; class C2,C3,C5,C6 ctx; class I1,I2 infra; class A3 inferN; class S4 unk; class C4,I4 sugg; class PB1,PB2,PB3 prob;
文本备份(Mermaid 渲染失败时阅读):L1 用户 → 注册登录(Turnstile)→ L2 聊天工作台 → L4 问事 A1 / 看运 A2 / 倾听 A4(零工具纯共情,已确认 [39]);随缘 A3 路由行为已确认 [38]、决策主体推断 → L5 工具(查询命盘→查询时间流,已确认)与系统服务(S1 排盘 / S2 起卦 / S3 计次 / S4 星云图)→ L6 单一 LLM(型号未知)→ L7 ProfileContext / DivinationContext / BillingContext / ConversationContext → L8 命理知识与模板 → L9 Neon PostgreSQL + Serverless(官方博客确认)。⚠:提交静默失败挂在工作台层;计次口径不明挂在 S3;状态不一致挂在工作台层。

图 B · 全量组件分层总图(45 节点 / 52 条关系,可横向滚动)

flowchart TB subgraph L1["L1 用户与渠道层"] U["用户"] CH1["官网 / 定价 / 博客 / 文档(内嵌飞书 wiki)"] CH2["注册登录(邮箱 / 验证码 / Google / GitHub)"] CH3["邀请裂变(邀请码 / 邀请好友)
满 2 人解锁星云图【联动推断】"] end subgraph L2["L2 交互与工作台层"] UI1["聊天工作台
四模式 tab · 推荐问题 · 输入框"] UI2["结果组件(渲染 A1/A2 产物)
卦象/命盘/工具卡片 · 思考折叠 · 暂停 · 赞踩"] UI3["历史对话侧栏"] UI4["底部工具栏(六入口 · BETA)"] end subgraph L3["L3 产品应用层"] AP1["对话管理"] AP2["命运档案 CRUD"] AP3["Onboarding 向导"] AP4["订阅管理 / 兑换码"] AP5["星云图模块"] AP6["每日运势模块"] end subgraph L4["L4 Agent 与流程编排层"] A1["A1 问事解读 Agent(六爻)"] A2["A2 看运解读 Agent(命盘)"] A3["A3 随缘路由器【路由行为已确认 38 · 决策主体推断】"] A4["A4 倾听 Agent(零工具·纯共情)[39]"] end subgraph L5["L5 工具与服务层"] T1["查询命盘(半官方)"] T2["查询时间流(半官方)"] T4["对话记录持久化(功能命名)"] S1["S1 排盘服务
真太阳时/时区【博客】· 生辰矫正【文档】"] S2["S2 起卦服务(六爻摇卦)"] S3["S3 额度计次"] S4["S4 星云图生成器【未知】"] end subgraph L6["L6 模型接入与路由层"] LLM["通用 LLM · 型号/提供方【未知】
英文思考摘要外露 · 无动态路由证据"] end subgraph L7["L7 全局上下文与数据层"] C1["UserContext
账户资料/偏好(消费:主页问候、设置页)"] C2["ProfileContext
命盘档案(主八字标记)"] C3["DivinationContext
卦象 / 时间流(对话级)"] C4["WorkflowState
统一状态机【建议】"] C5["BillingContext
档位 / 月度计数 2/5 / 兑换码"] C6["ConversationContext
历史对话 / 思考 / 工具痕迹 / 赞踩"] C7["NebulaAssetContext
星云图资产(已生成但锁定)"] end subgraph L8["L8 知识与公共资产层"] K1["命理知识(六十四卦爻辞 / 十神 / 纳音 / 五行)
注入 A1/A2【推断】"] K2["输出模板 + 免责声明固定文案
注入 A1/A2【推断】"] K3["推荐问题集(每模式 8 条 → 输入框)"] K4["喜用神自研算法【文档声明,消费方推断为 A2】"] end subgraph L9["L9 基础设施与治理层"] I1["Neon PostgreSQL【官方博客确认】
(自 Turso/SQLite 迁入)"] I2["Serverless 运行时【官方博客确认】"] I3["Cloudflare Turnstile"] I4["模型网关 / 链路追踪 / 评测
【建议:包裹 LLM 调用】"] end PB1["⚠ 提交静默失败
无 loading/报错/重试 [14][20][21]"] PB2["⚠ 计次口径不明
4 条对话 vs 2/5 对不上;耗尽拦截无证据"] PB3["⚠ 状态不一致
步骤指示器错位 · 倾听副标题脱钩 · 页面展示英文思考摘要"] %% ===== 实线:已确认(31 条,index 0..30)===== U -->|"浏览/注册"| CH1 U -->|"登录"| CH2 CH2 -->|"人机验证"| I3 CH2 -->|"登录后进入"| UI1 UI4 -->|"入口"| AP2 UI4 -->|"入口"| AP4 UI4 -->|"入口"| AP5 UI4 -->|"入口"| AP6 UI1 -->|"提交问事问题"| A1 UI1 -->|"提交看运问题"| A2 AP3 -->|"出生时间+性别"| S1 AP2 -->|"新增他人命盘"| S1 S1 -->|"写命盘档案"| C2 A2 -->|"调用①"| T1 A2 -->|"调用②"| T2 T1 -->|"读主命盘"| C2 A1 -->|"流式生成"| LLM A2 -->|"流式生成"| LLM S2 -->|"写卦象"| C3 T4 -->|"写历史对话"| C6 C6 -->|"持久化存储"| I1 C2 -->|"持久化存储"| I1 S3 -->|"写月度计数 2/5"| C5 AP4 -->|"档位/兑换码"| C5 S1 -->|"运行于 Serverless【博客】"| I2 AP1 -->|"读写对话"| C6 C6 -->|"历史列表"| UI3 C7 -->|"已生成但锁定 [31]"| AP5 C5 -->|"额度展示"| AP4 UI1 -->|"提交倾听倾诉"| A4 A4 -->|"流式生成(零工具)"| LLM %% ===== 虚线:合理推断(14 条,index 31..44)===== UI1 -->|"随缘提交"| A3 A3 -->|"分发"| A1 A3 -->|"分发"| A2 A3 -->|"分发"| A4 UI1 -->|"提交即起卦(调用方未确认)"| S2 C3 -->|"卦象注入推理上下文"| A1 T2 -->|"依赖日主"| C2 A1 -->|"解读落库(写入方未确认)"| T4 A2 -->|"解读落库(写入方未确认)"| T4 A1 -->|"完成计次(计次点未确认)"| S3 A2 -->|"完成计次(计次点未确认)"| S3 S4 -->|"生成星云图(时机未确认)"| C7 K1 -->|"知识注入"| A1 K2 -->|"模板/免责声明注入"| A2 %% ===== 点线(蓝):建议设计(4 条,index 45..48)===== A1 -.-|"状态机(统一状态事实源)"| C4 A2 -.-|"状态机"| C4 C5 -.-|"提交前额度预检"| A1 C5 -.-|"提交前额度预检"| A2 %% ===== 点线(红):当前没做好的机制(3 条,index 49..51)===== PB1 -.- UI1 PB2 -.- S3 PB3 -.- UI1 linkStyle 31,32,33,34,35,36,37,38,39,40,41,42,43,44 stroke:#9a6b00,stroke-dasharray:6 4 linkStyle 45,46,47,48 stroke:#0b6fa4,stroke-width:2px linkStyle 49,50,51 stroke:#b3382e,stroke-width:2px classDef agent fill:#efecf8,stroke:#4a3f7a,color:#2b2547; classDef svc fill:#eef1f4,stroke:#5b6b7a,color:#33404c; classDef ctx fill:#ffffff,stroke:#9a6b00,color:#5c4300; classDef infra fill:#f3efe6,stroke:#8a8172,color:#4c463c; classDef inferN fill:#fbf2dd,stroke:#9a6b00,color:#5c4300; classDef unk fill:#fbeae8,stroke:#b3382e,color:#7a2420; classDef sugg fill:#e6f1f8,stroke:#0b6fa4,color:#0b4a6e; classDef prob fill:#fbeae8,stroke:#b3382e,stroke-width:2px,color:#7a2420; class A1,A2,A4 agent; class T1,T2,T4,S1,S2,S3 svc; class C1,C2,C3,C5,C6 ctx; class I1,I2,I3 infra; class A3,C7 inferN; class S4 unk; class C4,I4 sugg; class PB1,PB2,PB3 prob;
文本备份(Mermaid 渲染失败时阅读):L1 用户 → 注册登录(Turnstile)→ L2 聊天工作台 → L4 问事 A1 / 看运 A2 / 倾听 A4(零工具纯共情,已确认 [39]);随缘 A3 路由行为已确认 [38]、决策主体推断 → L5 工具(查询命盘→查询时间流,已确认)与系统服务(S1 排盘 / S2 起卦 / S3 计次 / S4 星云图)→ L6 单一 LLM(型号未知)→ L7 七类 Context → L8 命理知识与模板 → L9 Neon PostgreSQL + Serverless(官方博客确认)。⚠:提交静默失败挂在工作台层;计次口径不明挂在 S3;状态不一致挂在工作台层。

主图自检(普通产品经理视角 14 问)

问题从图中能否回答
需求从哪进入?能:L1 官网 → L2 聊天工作台四模式输入框(推荐问题降门槛)
谁决定调哪个 Agent?能:用户手动切 tab(已确认);倾听由 A4 接管(实线=已确认 [39]);随缘模式下 A3 路由器(路由行为已确认 [38],决策主体虚线=推断)
每个 Agent 输入从哪来?能:A1=问题+卦象(C3 注入);A2=问题+主命盘(T1 读 C2)+时间流(T2)
调用什么工具?能:A2 依次调查询命盘/查询时间流(实线);A1 无可见工具调用
产物由谁生成?能:LLM 流式生成正文;S1/S2 生成结构化命理数据
结果存哪?能:T4 → C6 → Neon PostgreSQL
下游如何拿到上一步资产?能:命盘档案(C2)被 A2/档案页/星云图复用;时间流共享机制未知(缺口)
用户如何确认修改?能(否定答案):全链路无确认门,提交即生成;追问机制无证据
失败后怎么办?能(暴露问题):现状=静默失败 ⚠PB1;建议=状态机 C4 + 显式报错(蓝点线)
余额不足在哪拦截?能(暴露问题):⚠PB2 计次口径不明;建议在 C5→A1/A2 预检(蓝点线)
知识从哪来?能:L8 命理知识/模板/推荐问题集 + 官方文档声明的喜用神算法
如何保证资产一致性?能(暴露问题):无机制——档案变更后对话缓存、时间流共享均无证据
为什么会出现状态不一致?能:⚠PB3——无统一状态事实源(C4 缺失),前端状态各自为政
系统如何知道任务真正完成?能(否定答案):无完成门/质量校验证据;建议输出自检与完成条件显式化

14当前架构 As-Is

维度现状(As-Is)证据等级
入口与路由用户手动切模式 tab 决定 Agent 行为;「随缘」路由真实发生([38]:天赋潜能类问题→看运类工具链),但无路由结果披露、决策主体与准则未知;倾听由独立人格 A4 接管(零工具纯共情 [39])[13][19][28][29][38][39]已确认(路由行为/倾听形态)/ A3 决策主体 推断
任务受理与状态无受理回执:提交后无 loading/任务态/失败提示;唯一状态可见性是「聊天服务正常」横幅与生成中暂停按钮[14][16][20][21][28]已确认(缺失即事实)
数据供给结构化命理数据(命盘/卦象/流年)由确定性服务算好后注入模型——「系统计算、模型解释」,分工正确[16][36] + 博客[23]已确认
工具调用A2 自主调 2 个工具(顺序:先命盘后时间流);工具调用经卡片透明展示;A1 无可见工具调用[16][36]已确认
结果质量校验无校验机制证据;所幸正文与工具数据一致性(丙午·七杀→火旺金受克)靠模型自觉达成[37]未知(无机制证据)
计费S3 维护月度计数(2/5、重置日)并在订阅页展示;计次点、拦截行为、耗尽话术全部无证据;额度将尽无预警[26][34]计数 已确认;规则 未知
权限星云图「已生成但锁定」——生成先于权限校验;解锁路径=烛照版或邀请 2 人[30][31](实机)已确认
反馈闭环赞/踩入口存在,去向无证据,疑似只写不读[37]未知
幂等与重试无任何幂等/重试机制证据;用户连点提交、网络重发时的行为完全黑盒未知
状态一致性前端状态各自为政:步骤指示器错位、模式副标题脱钩、页面展示英文思考摘要、旧版 404[06]–[11][16][25][29][36]已确认(缺陷实例)
基础设施Serverless + Neon PostgreSQL(自 Turso 迁入);Turnstile 人机验证;独立开发者运维[04] + 博客[23]已确认(官方披露)

15建议架构 To-Be

仅针对已暴露问题与证据空白给建议,不泛化加码。每条对应 As-Is 行。

机制To-Be 设计解决的现状问题优先级
统一状态事实源(WorkflowState)每条对话一个显式状态机(submitted→executing→generating→completed/failed),前端所有 loading/卡片/按钮只读状态机,不再各自维护 UI 状态静默失败、步骤指示器错位、模式副标题脱钩(⚠PB1/PB3 同根因)P0
任务受理回执 + 显式失败提交即返回任务 id 与受理态;超时自动重试一次;失败显式报错 + 保留输入 + 重发按钮[14][20][21] 三张「提交后无响应」截图P0
额度预估、冻结与透明计次提交前预检额度(不足→拦截+重置日+升级入口);一次完整解读计一次且仅一次;中断/重试/工具重调不重复计次;计次事件留痕可对账(修复「4 条对话 vs 2/5」对不上)计次口径黑盒、耗尽无话术、无预警P0
结果质量校验(完成门)输出后自检:四段齐全、干支/十神/纳音与工具返回逐字一致、免责声明原文;失败修正重出,不得口头声称完成结果正确性完全依赖模型自觉P1
幂等键提交带幂等键(问题+时间窗),重复提交合并为一条链路,防双卦象/双计次/双记录连点提交与网络重发行为黑盒P1
权限前置星云图「查看」点击时先判权限再触发生成;免费档给一次局部预览替代全锁「已生成但锁定」的生成成本与体验落差 [31]P1
思考摘要本地化模型网关层把页面展示的英文摘要 改写为中文命理「推演过程」摘要(或默认折叠到底)页面展示英文思考摘要破坏玄学信任感 [16][36]P1
档案变更失效机制命盘档案修改/新增后,后续对话必须重新取数,禁止跨对话脏缓存资产一致性无机制(自检第 12 问)P2
反馈闭环赞/踩至少回流到:结果质量看板 + 推荐问题排序;或下架入口,避免收集不用的数据赞踩疑似只写不读 [37]P2
全链路追踪每对话一条 trace(提交→工具→模型→落库→计次),失败节点可查——独立开发者尤其需要,否则静默失败无法定位无任何可观测性证据P2
倾听/合盘能力收口A4 倾听与 @命盘/合盘(文档已声明)要么补齐行为与 UI 适配,要么隐藏入口,不留半成品[29] 副标题未更新;文档能力未实测P2

16架构风险清单(按优先级)

#风险证据 / 推导影响建议
P0-1提交链路静默失败:核心价值动作(提问)的失败路径完全无反馈[14][20][21] 三实例 已确认(归因未知)用户无法区分网络错/没额度/产品挂了,每种猜测都指向流失状态机 + 受理回执 + 显式报错(To-Be P0)
P0-2计次口径不明 + 耗尽拦截黑盒:4 条历史对话 vs 2/5 计数对不上;耗尽时 Agent 行为无任何证据[34][36] 已确认(矛盾现象)计费不可对账即不可信;耗尽时若同样静默=付费转化断点计次事件流 + 预检拦截话术
P0-3无幂等证据下的重复扣费风险:静默无响应会诱导用户重复提交,若无幂等=双计次由 P0-1 + P0-2 推导 合理推断免费档 5 次/月,重复扣一次=损失 20% 月度额度,直接伤害信任幂等键 + 重试不重复计次
P1-1状态不一致成串:步骤指示器/模式副标题/旧版 404;思考摘要语言不一致——倾听为中文 [39] vs 问事/看运/随缘为英文 [16][36][38](各模式 prompt 分别撰写的旁证,归因推断)——BETA 阶段质量门槛缺失的系统性信号[06]–[11][16][25][29][36][38][39] 已确认命理是信任生意;每处不一致都在磨损「元见」人设统一状态源;发布前一致性检查清单;思考链本地化口径统一
P1-2生成先于权限校验:星云图已生成但锁定,生成成本在无权用户身上发生[31](实机)已确认成本浪费 + 「东西被扣下」的用户怨念权限前置 + 局部预览
P1-3口头完成风险:无结果校验机制,当前一致性靠模型自觉;干支/十神一旦写错无拦截无校验证据 未知命理产品输出错误干支=专业性质疑输出自检完成门
P2-1时辰留空的排盘降级未确认:Onboarding 允许时辰留空 [08],缺时柱的盘进入 A2 后论断质量与声明均无证据[08][32] 未知看运结果可能基于不完整命盘却无任何声明不完整标记 + 显式降级声明
P2-2赞踩与个人背景字段疑似只写不读:反馈无去向证据;可选敏感字段(感情状态等)收集了但无消费证据[09][37] 未知隐私最小化合规风险 + 反馈白收闭环或下架
P2-3档案变更后无失效机制证据:改盘/新增盘后旧对话缓存是否污染新解读未知推导 合理推断拿错命盘做解读=结果张冠李戴档案版本号 + 新对话强制重取
P2-4中断后行为黑盒:暂停按钮存在 [16],但暂停后是否继续计费、后台是否仍执行、残文如何处理均无证据[16] 未知中断仍扣费=隐性重复扣费中断语义显式化
P3-1独立开发者单点运维:博客自述 side project [23];无可观测性证据下,静默失败类问题难以发现和定位[23] 已确认故障 MTTR 长,质量问题积压最小化追踪 + 错误告警
P3-2文档/定价与产品定位冲突:文档标题写「仅供娱乐(佛系经营 ing)」[27] 与 ¥99.9 付费档共存;旧版链接曾 404 [25][25][27] 已确认付费信任折损文案与商业定位对齐

17架构组件—证据追溯表

没有证据也没有清晰设计理由的组件不进主图。置信度:高=页面/官方直接证据;中=多事实推导;低=建议或仅入口证据。

组件为什么需要证据等级置信度
聊天工作台(四模式 tab)核心交互入口[12][13][19][28][29]已确认
A1 问事解读 Agent一事一占的卦象解读[15]–[18] 完整链路已确认
A2 看运解读 Agent基于命盘的运势解读[36][37] 历史回放(实机核对)已确认
A3 随缘路由器「AI 自动匹配最佳解读模式」[28] 副标题 + [38] 路由行为(天赋潜能类→看运类工具链)路由行为 已确认;决策主体/准则 合理推断
A4 倾听 Agent情绪倾诉的共情陪伴(零工具、不读命盘)[39] 共情三段式 + 中文思考摘要 + locale 注入;[28][29] 入口已确认(单一样本);计次/多轮/危机兜底 未知
S1 排盘服务(真太阳时/时区)出生信息→四柱命盘;官方博客详述时区需求[08]→[32][36] + 博客[23]已确认
S2 起卦服务问事卦象产出[16] 卦象卡片先于思考出现已确认(产出物);调用方 未知高/中
S3 额度计次四档定价的额度执行[26][34] 计数与重置日已确认(计数);规则 未知高/低
S4 星云图生成器星云图资产生产[30][31] 仅锁定态+按钮未知
查询命盘 / 查询时间流工具A2 取数(先命盘后时间流)[36] 工具卡片(实机核对)已确认(半官方命名)
对话记录持久化历史回看[36] 2 天前记录完整可看已确认;写入方 推断高/中
Neon PostgreSQL / Serverless存储与运行时官方博客 [23](Turso→Neon 迁移实录)已确认
Cloudflare Turnstile注册人机验证[04]已确认
输出模板 + 免责声明两模式产物骨架/文案逐字一致[17][18][37]已确认(产物);机制 推断高/中
命理知识体系 + 喜用神算法箴言引卦爻辞、正文用十神纳音;文档声明自研算法[16][18][37] + 文档[27]已确认(消费痕迹/声明);实现 未知高/中
通用 LLM(型号未知)解读正文与思考摘要生成[16][36] 页面展示的英文摘要 外露已确认(存在);型号 未知高/低
WorkflowState 统一状态机根治静默失败与状态不一致无——由缺陷反推的设计理由建议设计低(建议)
额度预检 / 幂等 / 完成门 / 追踪计费可信、防重复扣费、质量兜底、故障可定位无——由风险清单反推建议设计低(建议)

18无法确认的问题(遗留清单)

  1. LLM 型号与提供方;A1/A2 是否同一底层模型(「元见」人格层实现方式)。验证:抓网络请求看 API 端点/响应头,或官方披露。
  2. 起卦的调用方与时机:系统预执行 vs A1 首个工具调用;问事链路为何不展示工具卡片。验证:提交问事时抓包,看卦象随提交接口同步返回还是生成流中出现 tool_call。
  3. 额度计次规则:计次点(提交/起卦/完成)、中断是否计次、耗尽拦截话术。验证:记录一次问事前后计数变化;耗尽后再提问观察行为。
  4. A3 随缘路由的决策主体与准则(路由行为本身已闭环 [38]):独立路由 Agent / 编排层规则 / 前端默认映射不可区分——天赋潜能类问题本就落在看运语义内,单一样本不能排除「随缘=默认看运」;目的地集合边界未知([38] 仅覆盖→看运一例)。验证:在随缘模式分别提决策类(「该不该辞职」)/情绪类(「最近很焦虑」)问题,观察是否起卦 / 是否出共情回复。
  5. A4 倾听的遗留行为(单轮形态已闭环 [39]):是否计次(不调用工具,若计次则计次口径为「按对话」而非「按解读」)、多轮对话形态、危机倾诉(自伤信号)的安全兜底、随缘是否会路由到倾听。
  6. 思考摘要语言不一致的归因:倾听中文 [39] vs 问事/看运/随缘英文 [16][36][38]——各模式 prompt 语言差异还是模型/配置差异,无法从页面区分。
  7. 静默失败归因([14][20][21]):截图时机 vs 真实故障。验证:真机重复提交并观察网络面板。
  8. 时间流数据边界:是否含大运/流月(正文引用大运 [37] 但来源工具不明);是否与每日运势/星云图共享计算结果。
  9. 命盘缺时辰的降级:S1 如何排缺时柱的盘、A2 是否感知「不完整」标记;「生辰矫正 & 子时盘」规则细节(文档 [27] 声明存在)。
  10. @命盘调用与多人合盘的真实可用性与归属 Agent(文档 [27] 声明,未实测)。
  11. 星云图生成链路:何时触发、由什么生成、是否耗额度、「重新绘制」后旧版本去向。
  12. 赞/踩反馈去向;个人背景可选字段是否被任何 Agent 消费。
  13. 每日运势生成链路(未进入,为避免消耗额度主动停止 [33])。
  14. 官网首页输入框(未登录态)提交后的去向 [02]。
  15. 任务队列 / 日志 / 链路追踪 / 评测 / 成本控制:全部无证据。