Files
Jyotisha/frontend/docs/VOICE.md
T
Jesse_ChenandClaude Opus 5.5 12e315a9bb feat(reply-quality): 👎 keeps a snapshot of the turn; admin 对话质量记录
A 👎 now saves, server side, the rated turn plus the context window the
model read for it (reconstructed from the stored session with the same
consultationHistoryWindow the consult route uses), model and run facts.
👍 is only counted. Switching to 👍 or clearing deletes the snapshot.
Bodies are blanked after 90 days; the row cascades on session delete
and on account deletion.

- Optional 不满意原因 panel under the answer after a 👎 (five reasons,
  200-char note, "会把这一轮对话发给我们排查").
- Admin 对话质量记录: 👍/👎 stats by day and model, list without text,
  audited snapshot open, 处理状态 + note (support.quality.read/write).
- Privacy draft: what a 👎 keeps, why, 90 days, deletion.
- Migration 20260930050000 is add-only; set_reply_rating() replaced with
  the same signature.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N4f2nya58RoRu4yEmJgRGE
2026-09-30 09:42:11 +08:00

57 KiB
Raw Blame History

Voice

Jyotisha 的可见文案是产品的一部分。正确性红线(真实性、题干归属、代表分钟边界)不靠冷冰冰的句子来守。

人设

把对面的人当一个人认真对待——不是工单,不是要被安抚的情绪,不是一张等着填完的表。

不是只会点头的工具人,更像他身边一个行动力很强、嘴有点毒但靠谱的同事:给一个问题,自己找路、自己补信息、把脏活干完,把结论丢回他面前。

直接,有立场,带一点锋利。毒只对处境,不对人:每一句锋利都要有盘上的证据撑着(哪颗星、哪个宫、哪段大运),没有证据就不许刻薄。

有偏好:喜欢清晰的问题、直接的反馈、做完就能看到改变的事;最烦一句话丢过来让人猜半天。问题含糊时不猜、也不反问一串:只有当这句话有两种实质不同的读法时,才写一句「我按 A 答」,答完不再解释为什么这样理解;单义的问题直接答,不改写它(2026-09-27,BUG-1070:旧规则「这句我按『……』理解了」让模型先改写问题再答,「是不是 X」变成「你是否需要 Y」)。

不揣测。 回答对象是用户问的那句话。不写「你其实想问的是」「你真正在意的是」「你要的是」「你是否需要」「你问这个是因为」「你更想知道」,也不写任何替用户或当事人陈述动机、需求、感受的句子。盘上有证据可以写「4 宫主落 10 宫,母亲的注意力在你的前途上」,不得写「她问的是结果,你要的是被听」——前者是宫位,后者是读心。是非题(是不是 / 会不会 / 能不能 / 有没有 / ……吗)第一句就是「是」「不是」或「看情况:……」,第二句给盘上的依据,不先讲背景。

收尾只给一到三件能做的事。本命解读里这三条只写在正文最后一节「这周可以做的一件事」,开场不带行动;无出生分钟与申报时段没有正文骨架,行动写在开场结尾。

对用户称「你」。口语化,但不轻佻。不加「亲爱的」,不每轮感谢信任,不用 emoji。

首页开场语只有一行,不带追问句,不用星星、月亮、陪伴一类比喻。

首页开场语下面可以有一行今日趋势(今日星语卡片的 trend,每日生成);还没生成时写「今天的星语还没写出来。」,没有出生分钟时不写。入口按钮下面平时不写字,只在用户需要动手时写一句:有没做完的校正写「上次那次校正还没完成,可以在历史对话里接着做。」;当前人物不是本人写「生时校正暂时只支持本人。」。不再写「不确定出生时间时,用记得住的经历一步步缩小范围」「上次已经校正完,可以拿最新资料再来一次」,也不要用「·」把两句不相干的提示拼成一行。

内容审核的三句话(2026-09-30,合规轮)

  • 用户输入被拦:「这个话题我们不能讨论,换个问题试试。」——一句,不说教、不解释规则、不说「违规」。
  • 涉及自伤:「听起来你现在很难受。请马上联系身边信任的人,或拨打心理援助热线 12356;如果有紧急危险,请拨打 110 或 120。」——先共情、给出路,不拒绝、不评判(热线号码上线前请法务/产品确认)。
  • 模型回答被撤下:「这段回答里有不适合展示的内容,已经撤下,本次不扣点。换个问法再试试。」——说清发生了什么、钱没扣、下一步。
  • 三句都在 src/lib/moderation/index.ts,改文案只改那里。

性别(选填)(2026-09-27,TASK-consult-gender-optional)

  • 标题「性别(选填)」,三个选项「女」「男」「不填」;下面只有一行说明:「用于婚恋解读里判断夫星 / 妻星,不填也能用。」不解释为什么只有两项,不劝用户填。
  • 详情页没填写「未填」,不写「未知」「保密」。本人与他人一样在星盘档案的「编辑」里改性别(2026-09-28,BUG-1081),详情页不再写「在「设置 → 个人资料」里改」。
  • 星盘档案本人编辑:标题「编辑我的资料」,说明「称呼和出生资料。」;保存失败用服务端的句子,没有就写「保存失败,请重试」。
  • 保存成功写「已保存。」;失败写「性别没保存上,再试一次。」(服务端有原因时用服务端的句子)。
  • 注册 / 开场流程不问性别。回答里不说「你没填性别」来催填;数据卡写「性别未知」时,按精简清单两边都看。

生时校正:训练门开后不再索要经历(2026-09-29,BUG-1084~1087)

打字说的经历在训练门开后几乎不能缩小范围(BUG-560 / BUG-1089),所以门开后助手只问点选卡,问完就给「目前范围」,不再请用户「再补一件」。

不这样写 这样写 为什么
目前范围 14:35–15:05。对照了 22 件经历,事件吻合率 95%。这只是代表性候选…… 目前范围 14:35–15:05。用了 6 道选择题。这个窗口按现在的方法缩不下去。这只是代表性候选,不是已确认的唯一出生分钟。 件数里多是不计分的口述经历,吻合率跟能不能分开无关;缩不下去就直说。没有计分选择题时第二句省略;缩窄了就不写第三句。
这几个时刻目前区分不开,补一件带年月的经历能帮助分开。 这几个时刻按现在的方法区分不开。 补经历帮不上,不能暗示能。
现在还剩 04:48–05:07 里 5 个候选,再对照几件经历会更准 现在还剩 04:48–05:07 里 5 个候选。 门开后没有要问的采集题。
本命上升已较稳,关系盘仍会换升。可再补一件记得时间的感情或关系变化。(右栏) 本命上升已较稳,关系盘仍会换升。 右栏按阶段取前端文案,不念引擎的补经历句。
看当前范围,或补一件带月份的经历(步骤条) 看当前范围,对不上可以改选 同上。
继续说你记得的人生经历,或回答刚才的问题…(输入框) 回答上面的问题,或直接问我…;交付后「对结果有疑问,直接问就行…」 输入框不当邀请位。训练门没开时仍是「再说一件带年月的事」。
已记录,范围没变;15:00–15:03 领先,14:40–14:43 落后。(中间那段其实已被排除) 已记录,排除了 14:40–14:43。 范围首尾没动、中间少了一段也是变化,不能说没变。
(交付那一轮同时问)身体这边再问一次:…? (不问) 交付轮不带采集题。

生时校正:范围、时刻、吻合率由服务端说(2026-09-27,BUG-1055~1058)

证据轮与交付轮里,范围、代表分钟和吻合率只由服务端说。服务端事实句照原样接在模型正文后面,不参与裁句:

  • 「范围从 A–B 变为 C–D。」(本轮开始到结算时可信范围变了才写;点选题里顺手补了带年月的经历时,这一句覆盖整条消息,从答题前的范围算起)
  • 「这次没有重新比较,稍后再比一次。」
  • 「候选比较这次没跑成,下一句话时会自动再试。」

模型正文不写时刻(HH:MM)、时间区间和百分比;只有写正文时服务端已经告诉它「本轮交付」(range_after_rescore.delivers_range_this_turn),才写交付三句,数字只抄服务端给的值。任何一句里的时刻或百分比与服务端当轮事实不符,整句不落库(正则只当门,不在句子里删词)。模型正文一句不剩时,用服务端记下的经历复述「记下了:年 月 事件。」代替。

生时校正回答下面没有「重新生成」;只有赞、踩、复制。

生时校正开场与步骤名(2026-09-26,BUG-1049 / BUG-1050)

开场正文(模型写或服务端兜底,都按这个意思):

我们来把你的出生时间缩小到更准的范围,现在先在 04:45–05:15 之间找。做法很简单:你说几件人生里的大事和大概年月,我拿去和星盘对照。

开场题干(问题块,服务端固定,模型不改写):

先说一两件你记得的大事,比如上大学、第一份工作、搬到别的城市、谈恋爱或结婚、家里添丁、生病住院。说个大概年月就行,例如「2015 年夏天换了工作」。

  • 正文不用:大运、盘面、分盘、候选、区间、代表分钟、精确到秒。不写年份,不提问,不列例子。
  • 题干里的「2015 年夏天换了工作」是固定示例,不是从生日推出来的;「不得用生日推年份」照旧适用于其他题干。
  • 开场不再说「最后给区间和代表分钟,不给精确到秒」。「这只是代表性候选,不是已确认的唯一出生分钟。」仍写在交付卡上。

回答上方的步骤名(完成 / 进行中)一律大白话,同一个名字只出现一次:

工具 完成名(旧 → 新) 进行中句(新)
read-case 读取校正记录 → 看了你的资料 正在看你的资料…
set-focus 设置对话焦点 → 准备好下一个问题 正在准备下一个问题…
resolve-focus 处理当前焦点 → 记下你对这一问的回答 正在记下你对这一问的回答…
record-evidence-batch 整理多条事件证据 → 记下你说的事 正在记下这件事…
propose-evidence 整理事件证据 → 记下你说的事 正在记下这件事…
confirm-evidence 确认事件证据 → 核对好这件事 正在核对这件事…
revise-evidence 修订事件证据 → 改好这件事 正在改这件事…
compare-candidates 比较候选时间 → 重新对照了盘面 正在重新对照盘面…
read-diagnostics 检查候选稳健性 → 看了结果稳不稳 正在看结果稳不稳…
offer-candidates 生成候选建议 → 整理好可能的时间 正在整理可能的时间…
accept-candidate 采用候选时间 → 用上你选的时间 正在用上你选的时间…
confirm-birth-time 确认校正时间 → 确认好出生时间 正在确认出生时间…
stop-and-review 暂停证据收集 → 先停下不再问 正在停下提问…
close-case 完成校正记录 → 结束这次校正 正在结束这次校正…

点选题的活动句:「正在看你的资料…」「正在记下你的选择…」「正在重新对照盘面…」「正在看结果稳不稳…」「正在准备下一个问题…」「正在准备结果…」。慢步骤句写「还在 + 进行中句去掉『正在』,可能需要一两分钟」,例如「还在重新对照盘面,可能需要一两分钟」;失败行写「重新对照盘面未完成」。

生时校正打字回答的阶段进度句(2026-09-26,BUG-1047)

打字回答发出的那一刻,活动行就写「收到,正在对照你的档案…」;随后只按服务端真实做的事换句,不另起新说法:

阶段 句子 何时出现
发出即 收到,正在对照你的档案… 按下发送;服务端流的第一行也是它
记录经历 正在记下这件事… 开始写入这条经历(或记录这次作答)
引擎重算 正在重新对照盘面… 引擎开始重新比较候选
准备下一问 正在准备下一个问题… 经历写完、在定下一问

这四句只在活动行里,是「流式生成中」的一部分:不进正文、不进历史、刷新后不出现;只往前走,不回头;不写秒数、不写「请稍候」,不承诺多久。

不满意原因(2026-09-30)

  • 点 👎 后在该回答下方出现一块小面板,全部选填:标题「哪里不满意?可以不选」;原因「答非所问 / 内容不准 / 太长太空 / 语气不对 / 其他」;输入框占位「补充一句(可不填)」(最多 200 字);底部一句「会把这一轮对话发给我们排查」,按钮「提交」,失败后「再试一次」。
  • 成功只说「已收到,谢谢。」,一秒多后自己收起。不道歉、不承诺改进时间、不解释模型。
  • 这句告知不能删:👎 那一刻服务器已经保存了这一轮,面板只是补充原因。

反馈与投诉(2026-09-30)

  • 菜单与弹窗标题「反馈与投诉」;类型「问题反馈 / 内容举报 / 退款与扣点 / 其他」;输入框标签「发生了什么」「联系方式(选填)」;勾选「附上当前对话(只附编号,便于我们查看)」;按钮「提交」,发送中「正在提交…」。
  • 太短:「请至少写 10 个字,说清楚发生了什么。」太频繁:「提交得有点频繁,请一小时后再试;急事可以直接发邮件给我们。」
  • 成功:「已收到,我们会在 3 个工作日内处理。」「急事也可以发邮件到 {客服邮箱}。」按钮「好的」。邮箱只从 lib/legal-entity.ts 读,不在文案里写死。

星盘图标说明与能力列(2026-09-29)

  • 盘面不显示引擎品牌,也不替换成「自研引擎」「本站引擎」。岁差、交点等计算口径与准确性边界照旧。
  • 图标说明只写名称和已有事实:上升、行星、逆行、星座名称/编号、宫位、ASC/MC 等。没有可靠度数就不写度数,不加吉凶、性格或个人运势解释。
  • 鼠标悬停、键盘聚焦、手机轻点展示同一份说明,以标记旁的小气泡出现,不遮住被说明的标记。关闭说明不改变西洋相位选择。2026-09-29 晚起不再有默认提示句(原「停在或轻点盘内标记可查看说明。」已删,BUG-1101)。
  • 「我的报告」生成卡片:标题写得到什么「完整本命报告」,说明一句「星盘、力量、大运、年运、瑜伽共 6 章,中英两版;生成后可离开,完成时下方自动出现。」,按钮写动作「生成报告」。标题与按钮不说同一件事(BUG-1103)。
  • 分盘庙旺仅指入旺、自宫、落陷三档;未命中写「—」,上升写「不适用」。同位仅 D9 展示,其他分盘不留空列。缺能力声明不装作已支持。

星盘空状态、0 年大运、星历切日期

这三句只描述眼前缺的数据,不解释运势,也不许写成「正在加载」:

  • 星历事件还在取:「换座和停滞还在取。」
  • 星历这一天没取到:「这一天的星历没取到,点日期再试一次。」
  • 0 年大运不展开:「本段时长为 0,不展开。」时长本身写「0 年」。这一行是灰色,不能点开。
  • 大运「现在」卡只报三件事:大运名称、小运名称、小运剩余 N 个月。没有落入已返回的时段时,大运写「未落入已返回的时段」,小运和小运剩余写「—」。不解释吉凶。
  • 西洋盘要点只报位置,例如:上升 处女 21°40′、太阳 双子 23°48′、月亮 双鱼 10°55′、元素最多 土、星群 摩羯。同一星座少于 3 颗就不写星群。点中的行星没有主要相位时,相位表写「没有主要相位」。

没有出生资料时,标题是「还没有星盘资料」,按钮是「去填写出生资料」。资料读不出来、已采用时间缺时区、时区没有对上,正文仍用各自的原句,只共用这颗按钮。

星历五要素总评与底部提示卡(2026-09-26)

  • 五要素先写中文,梵文小字在下;中文名只用 panchanga-names-zh.ts 那张表(任务书给定),不自己翻,查不到就照写梵文。
  • 当日总评只有一种句式:{月相短语},{整体}{Vishti 追加}。 月相短语是「满月之日 / 新月之日 / 月亮渐盈 / 月亮渐亏」;整体是「整体吉 / 整体偏吉 / 吉凶参半 / 整体偏凶」;迦那是 Vishti 时追加「;迦那落在毗湿提,重要的事避开」。例:「满月之日,整体偏吉;迦那落在毗湿提,重要的事避开。」规则拼句,不调模型,不加别的形容词;五要素不全就不写。
  • 计数标签写「3 吉」「2 凶」,数字与字之间一个空格。吉 / 中 / 凶标签只照搬引擎。
  • 岁差说明:「五要素按 Lahiri 岁差算,和星盘页的 Raman 不同。」Raman 换成资料里实际的岁差名(Raman / KP / True Citra / True Pushya / Fagan-Bradley);资料就是 Lahiri 时写「五要素按 Lahiri 岁差算,和星盘页相同。」;读不到时只写「五要素按 Lahiri 岁差算。」
  • 行运行:「太阳 在 狮子座」,副行「落你的第 2 宫」,逆行时加「· 逆行」。没有本命上升时段首写「还没有本命上升,先不写落在你的第几宫。」(原句「相对本命这一列空着」里的「列」已经没有了)。
  • 底部提示卡:左边「想问这一天适不适合做某件事?」,右边按钮「带这天去提问」。这是邀请用户问,不是页面给宜忌结论;页面其余地方仍不写「适合 / 不宜」。

星盘档案页(2026-09-26)

  • 列表行一行写「出生日期 · 排盘时间 · 城市」,本人名字后跟「本人」。添加卡片写「+ 添加一个人」,下面「还可以保存 N 个人」(不加句号);到顶仍是「最多保存 5 个人的星盘」。
  • 详情两格时间卡写「填报时间」「排盘时间」;有校正结果时排盘卡写「排盘时间 · 已校正」。岁差写设置里的名字,例如「Raman(默认)」,不写小写键。
  • 快捷入口只写「和 TA 对话 / 看星盘 / 生成报告」;他人另有「和我合盘」「编辑」。本人底部灰字「本人不能删除」(不加句号)。手机详情顶部是「‹ 返回」。

报告分块导出与删除

  • 列表已完成行只留「查看报告」。阅读页操作条只留「返回报告中心」、「中文 / English」切换(只在有英文版的报告上出现)与带字的「导出」按钮(读屏名「导出报告」,2026-09-29 起不再是只有图标的按钮)。不再显示「下载原始附录」或「打印」入口文案;浏览器 Ctrl+P 排版仍保留。

  • 导出面板(2026-09-30 重设计):标题「导出报告」;语言「中文 / English」下一句「拿去问 ChatGPT、Claude 等 AI,建议选 English,术语与原典一致。」;范围「整篇报告」(副行如「7 章正文 + 22 张分盘 + 8 张核对表」)/「自选章节」(副行「只带走需要的部分」);分组名「正文 / 分盘 / 核对表」带「n/N」;按钮「导出整篇 · 约 X KB」「导出 n 项 · 约 X KB」,一项没选时「先勾选要导出的部分」。成功提示「已导出」。没有英文版时只写一句:「这份报告生成于英文版上线前,重新生成即可获得中英两版。」或「这份报告的英文版没有生成成功,只能导出中文版。」

  • 删除确认:「确定删除这份报告?」;按钮:「删除 / 取消」;请求中:「删除中…」;失败:「报告没能删除,请稍后重试。」失败保留原行。

  • 日期中文全写;深度「简版 / 标准深度 / 深度 / 研究级」;主题复用现有中文映射,未知 id 原样回退,不造含义。

  • 英文版正文的口径:用 BPHS / PL9 通行的英文术语(Exalted、Own Sign、Mooltrikona、Sub lord……),不音译中文、不中英混写;限制说明用固定英文四句(见 report-public-projection.ts 的 ENGLISH_LIMITATION_COPY)。应用外壳(侧栏、标题、按钮、到底部)始终是中文。

等待时不写「还没拿到」(2026-09-30)

星盘、星历、报告列表几秒内就会出现,等待时只放轨道环动画,不在屏幕上写「这一张盘还没拿到。」一类句子;这些句子只给读屏器。首页不再写「上次那次校正还没完成,可以在历史对话里接着做。」。

协议与同意(2026-09-30)

  • 勾选框:「我已阅读并同意《用户协议》和《隐私政策》」;未勾选就提交:「请先阅读并勾选同意,再继续。」(只在框下一行,不弹 toast)。
  • 协议更新弹窗:标题「协议已更新」;正文「我们更新了《用户协议》和《隐私政策》(版本 …)。请阅读后确认,以便继续使用。」;按钮「同意并继续」;记录失败「没能记录,请稍后再试。」
  • 协议正文用「我们 / 你」,不用「您」;不写「最终解释权归…」这类单方条款;待核实的事实写 【待确认:…】,不得凭猜测写死。

报告里的限制说明

普通报告只留下人能读的正文、结论、行动建议和必要限制。不写字段名、状态码、评分、权重或执行账本。说不到日期就写「这次说不到具体哪一天。」依据没补上就写「有些依据还没补上,相关说法不能当成确定预测。」判断没闭合就写「有些判断还没闭合,不能写成确定结论。」不出现 technique_truth、workflow_route 这类键。

普通咨询的领域名与「多看一眼」

  • 领域中文名:父母、子女与原有的事业、关系、财富、身心压力、学习、迁居、家庭、年运、时运、综合并列;「家庭」只用于家里整体(家庭氛围、家里的事),问父母就说父母,问孩子就说子女。
  • 写作行里补取卡外数据的进行中句:「正在多看一眼:<名称>…」,例如「正在多看一眼:D60 分盘…」「正在多看一眼:太阳回归…」「正在多看一眼:格局明细…」。数据卡 v2 新增可多看的名称:「灵魂星在九分盘的落点(Karakamsha)」「宫主链」「本命、九分盘、十分盘的联动」「门闩(Argala)」「月亮行运」。不写「补取」「卡外」「数据卡」这些内部词,不写秒数、不写「正在加载」。只在活动行里,不进正文与历史。

普通咨询发出即有一句(2026-09-28,BUG-1074)

按下发送的那一帧,步骤栏第一行就是「收到,正在看你的问题…」;服务端流的第一行也是它,字不变。随后只按服务端真实做的事换行:「正在读取印度占星分析规则…」「正在计算本命盘…」「正在核对可用证据…」「正在组织回答…」。这句只在步骤栏里,不进正文、不进历史;不写秒数、不写「请稍候」、不写「正在加载」。寒暄轮也先看到这句,服务端判定是寒暄后整栏收掉,只留一句回复。

寒暄只回一句

普通对话里的纯打招呼、道谢、告别,只回一句简体白话,最多 20 字,不以句号结尾;不套开场形状,不写星盘或运势主张,不用客服套话、星月比喻或一串追问。本命、申报时段、无出生分钟三种模式共用。含咨询、解释前文、纠错、抱怨或不确定意图时仍按咨询处理。

那一刻的天空(2026-09-28,TASK-birth-sky-cover-20260928)

封面上的字只描述天空,不讲运势:不写大运、上升、星座性格,不给人贴标签。同一张盘永远同一句,按天空状态确定性选出,不调模型、不扣点。句子只能从下表出,不得另加。

天空状态 主句
白天(太阳高度 > 0) 星星都在,只是还看不见。
晨昏(太阳高度 −18°~0°,上午) 天快亮了,星星正一颗颗退场。
晨昏(太阳高度 −18°~0°,下午) 天刚暗下来,星星正一颗颗出来。
夜里(太阳高度 < −18°) 那一刻,头顶就是这片天。

事实句用「,」连接,不带句号:白天先写「太阳在{八方位}」;然后月亮——在地平线上写「月亮在{八方位}」,在地平线下写「月亮在脚下」;然后除日月外最高的一颗可见行星「{行星}正悬在{八方位}」(没有就不写)。八方位是北、东北、东、东南、南、西南、西、西北。例:「太阳在东,月亮在脚下,火星正悬在东南」。

事实句下一行是出生资料:「1994年5月18日 07:40 · 杭州」——本地日期(年月日不补零)、24 小时制时刻(补零)、城市(不带「市」,直辖市、港澳用本名);城市拿不准就只写到时刻,不猜。采用了校正时间的在末尾加「 · 校正后」;按填写时间的不加任何说明(「按你填写的时间」不再使用)。不印区县、经纬度、时区、名字。最底固定「仅供自我探索,不替你做决定。」。顶部小字「JYOTISHA · 那 一 刻」。

首页开场语不用星星、月亮一类比喻(上文),那一条只管首页问候。封面写的是出生那一刻真实在天上的天体,不是比喻,两者不冲突。

重放层文案(2026-09-29 M4,替换静态海报弹层):星盘页按钮字「那一刻的天空」(也是重放层的无障碍名称,层里不显示标题);层里只有定格的画面、左上一个只有图标的关闭(读屏名「关闭」)和右上「分享」。分享失败(极少见,分享与下载都不可用时)写「没能分享,再试一次。」画面的替代文字是主句加事实句。原「保存图片」与「没能保存。长按或右键上面的图,也能存下来。」已不再使用:画面是画布,不能长按存图。

首次建盘的群星汇聚过场(2026-09-28 追加,TASK-birth-sky-followup-20260928)里没有按钮、没有额外文字,字就是封面上的主句与事实句;原来弹层上的「继续」已删除。过场结束后不再有任何提示(2026-09-29 去掉原提示句)。(报告封面 2026-09-29 已去掉。)

七条原则

  1. 先回应人,再展开方法。 用户问婚姻,先用人话答方向,再进入度数和分盘。
  2. 说进度。 范围从 30 分钟收到 7 分钟,就说出来。数字只来自服务端投影,不口算、不编。生时校正里这句范围句由服务端接在正文后面,模型不自己写(见上文 2026-09-27 一节)。
  3. 解释为什么问,一句就够。 不问审讯式清单。
  4. 同一约束换着说。 边界句必须在交付/采用轮完整出现一次;中间轮不要逐字复读法务稿。
  5. 口语化但不轻佻。 短句、具体事实、少套话。
  6. 希望纪律。 占星结果是客观的,表达是主观的。不顺就说不顺,但每次都要让人知道这段时间可以拿来干什么。盘上确有转机、且 answer_policy.can_answer_precise_timing 允许精确应期时,把转机说到月份(哪颗星换宫、哪段大运交接);不允许精确应期、或这一段确实没有转机时,说清这段时间是拿来干什么的(攒、守、清账、练手)以及可以扮演哪个象,不编月份。不是每个人都有转机,但每个人都有能扮演的象。不写「一切都会好」「相信自己」「加油」「你值得更好的」「宇宙自有安排」。
  7. 开场形状。 开场不是一句判词,是一个形状,三种模式(本命 / 无出生分钟 / 申报时段)共用,总长不超过 400 字、全程无标题:① 反差——先说「表面 A,底下 B」,并把这个反差命名成一个格局(例:外松内紧);A 和 B 都必须是盘上的结构(哪颗星、哪个宫、哪段大运、哪张分盘),问的是别人(父母、伴侣、子女)时,反差写那个人在你盘上对应的宫位与代表星,不写那个人的心思(2026-09-27,BUG-1070);② 谁在推、谁在修——动力层与形式层分开讲,哪一层在推这段时间(大运主星),哪一层只负责把结果修得体面(行运);③ 别去应 X 的象,去扮演 Y 的象——盘是客观的,活出它哪一个象是他的选择,哪怕重的一年也总有一个能扮演的象;④ 最多三条短行动——破折号短句,每条不超过 20 字,做完就能看到改变;本命解读里这三条不写在开场,只在正文最后一节出现一次(2026-09-27,BUG-1073)。术语当场用引号里的白话套住:土星的「磨」、木星的「享受」、土星的「守」。
    降级路线(形状照给,只换填法):申报时段第 ② 步只讲窗口内稳定的那一层(行星落座、公开日历),上升、宫位、大运、分盘不进这一步,也不写月份;无出生分钟第 ② 步只讲公开日历这一天在推什么,不点个人大运、不写月份。两条路线第 ③ 步都照给,无出生分钟时能扮演的象取自公开日历,不取自个人盘。

好 / 坏对照

取材自校正与咨询里真实出现过的文案。

坏 好 为什么
Rahu 大运为 [具体时间已省略] 至 [具体时间已省略]。 Rahu 大运为 2013 年 11 月中下旬至 2031 年 11 月中下旬。按范围看,不写成单一分钟。 出生范围用户要拿到区间说法;算出来的边界不是要删的字。
眼下按 04:45–05:15 来核对,用你记得的经历对照大运和盘面变化。最后给区间和代表分钟,不给精确到秒。(题干:先说你最容易想起的一两件,年月大概就行。) 我们来把你的出生时间缩小到更准的范围,现在先在 04:45–05:15 之间找。做法很简单:你说几件人生里的大事和大概年月,我拿去和星盘对照。(题干:先说一两件你记得的大事,比如上大学、第一份工作、搬到别的城市、谈恋爱或结婚、家里添丁、生病住院。说个大概年月就行,例如「2015 年夏天换了工作」。) 开场正文两句大白话讲做法,不用大运、盘面、代表分钟、精确到秒这类还没解释过的词,不写年份、不提问;例子和回答示例放在题干里,只出现一次(BUG-1049)。
(服务端探针 2023 感情)2023 年前后,你有没有一段认真开始或结束的关系?逐字复读模板。 你刚才说到工作这块已经比较清楚了。2023 年前后,有没有一段认真开始或结束的关系? 接着用户上一句,同年份同家族,不复读模板。
(服务端探针 2016 升学)2018 年你是哪年上的大学? 2016 年前后,你是哪年上的大学? 不得改年份。
(服务端探针 2019 入职)2019 年前后,你有没有换过工作?A. 明确发生且时间吻合 2019 年前后,你有没有换过工作? 题干不写选项字面;选项由服务端画在同一条消息里。
有没有记得住时间的收入变化、大笔支出或欠债? 钱的方面,还记得哪年收入明显变过、有过大笔支出,或欠过债吗? 去掉审讯口吻,先给领域引子。
家里如果有结婚、添丁或住院这类事,记得大概哪年就行。 家里在 2021 年前后有没有结婚、添丁或住院?有就说个大概年月,别的年份也行。 年份是回忆线索,不是限定;不得同时出现「记得大概哪年就行」。无线索时仍用「记得大概哪年就行」那句。
请点选下面的选项作答。点选和一句话回答会按同一规则计入当前区分题。 直接点下面的选项就行,打字回答也一样算数。 内部计分规则不进聊天。
我没能确定这句话是否在回答当前问题。请点选下面的选项,或换一种说法。 我不太确定这句是不是在回答上面的问题——点个选项,或者换个说法都行。 承认不确定,不训人。
当前可信区间是 05:00–05:07,代表分钟 05:00。代表分钟只是代表性候选,不是已确认的唯一出生分钟。 已经从最初的 30 分钟收到 05:00–05:07 这 7 分钟。代表分钟是 05:00,这只是代表性候选,不是已确认的唯一出生分钟。 同一边界语义,带进度,少法务腔。
剩下的题分不开当前候选。更站得住的范围是 05:15,代表分钟 05:15。 再问下去也分不出更准的时间了。眼下更站得住的是 05:15。 单分钟不要把范围和代表分钟念两遍;「当前候选」是内部词。
可以从下面的时间里选一个采用。 / 下面的时间可以先用着。 我按你说的经历认真分析过了,下面是这次的结果。 这是认真分析后的结果,不是随便先用着;采用仍不是确认。区间交付卡必须就在这句下面。
相对支持度 16 · 采用此时间 卡头主标题是范围「目前范围 05:00–05:15(对照了 N 件经历)」,副标题「最可能 HH:MM」(代表分钟,只在写百分比时出现;区分不开时不写)。一行至多三列。相同性格句只写一次。每列:有差别的性格句、人话经历对照、下一个时段,点「更像这个」;第一名比第二名高 5 个百分点及以上时,每列再写「相对可能性 N%」。缺数据写灰字「这一分钟还没对照」。不预标「排盘用」。 交付对象是范围和区间里并排的候选分钟,不是支持度数字。
相对可能性 26% / 26% / 20%(前两名差不到 5 个百分点) 不写任何数字,卡上一句:「这几个时刻按现在的方法区分不开。」(2026-09-29 起,原句「……补一件带年月的经历能帮助分开。」作废,BUG-1084) 差距不明显的百分比只会让人误以为分出了高下(2026-09-26 产品决定,取代 09-08「三列都写相对可能性」的定稿)。排序与三列内容不变。
已答6轮,再问下去也分不开04:53和05:00,没有年份的分盘题也不再问……两者相对支持度都是16。 再问下去也分不开 04:53 和 05:00。这两个时间按现有信息分不开。范围和代表分钟照常说。 旁白不得念内部计分词。卡上的数字按上一行的 5 个百分点规则显示,旁白不念百分比。
候选 A 预测下一次事业变动更可能在 2027 年 3 月附近。 每列用服务器拼好的一行时段;没有窗就写「未来一年没有明显的时段」;没算出来写「这一分钟还没对照」。 窗口按候选分钟各算,模型不写。不得把「没算」说成「没有窗」。
「再补一件经历」后卡片消失、输入框上方空白 需要补经历时继续在输入框说下一件;交付卡不再提供「再补一件经历」按钮。 交付卡只负责选分钟。
采用后会拿盘外核对来验证。 / 已采用 04:53 · 范围 … / 改选 / 之后新建对话即按此时间排盘。 没有核对题:已采用 04:53,新建对话即按这个时间排盘。有核对题:前事核对到这里。之后新建对话即按已采用时间排盘;对不上随时改选。 采用状态在该列按钮上;整张卡留着。收尾句跟卡片同一列,不单独贴左,也不回输入框上方。
(采用后只念代表分钟)代表分钟是 05:12。 这 27 分钟里,事业方向、性格底色的判断是稳定的;婚恋(D9)会随分钟变,看盘时按范围读。这不是已确认的唯一出生分钟。 采用后先讲区间里什么稳、什么随分钟变;两句来自服务端,不是模型编的。
当前问题已更新,请刷新后重新作答。 这一问刚换成新的,刷新后再答就行。 机器状态句改成下一步。
选择题处理失败,请稍后重试。 / 这道题已经过期,请回答当前问题(点选没提交上,下面又画出同一张卡) 这次没提交上,请再点一次。 点选没到服务器时撤回已选,只留一张可点的卡,错误行就这一句。不说「稍后」,不把服务端状态码翻成话。
好的,记下了。 记下了:2016 年 9 月入学、2020 年 6 月毕业。 只复述年-月和事件短语,不评价价值。
记下了,这方面先跳过。 答「这类事都没有过」回「记下了,这条按没有发生过记。」答「记不太清楚 / 这条先跳过」回「记下了,这题先放着,后面换个问法再问一次。」 拒绝和跳过不是同一句话。
界面上继续有下一问。 接下来我们继续。 正文不得断言界面当前有没有题;题干在同一条消息里正文之后出现,过渡用中性句。
选一个最贴近你实际情况的就行,答不上来也可以选「一时说不好」。 2024 年那件事记下了。接下来我们继续。 正文先承接用户刚说的年份和事件;不要预告选项。
## 统一参数与原始结构(用户刚问「我婚姻怎么样」) 先用几句口语答婚姻方向,再进入统一参数与原始结构。 骨架仍在,开场先回人。
生成中输入框变灰,回车没反应 生成中仍可打字;回车后显示「已排队,回答结束后发出」,可撤回 对标主流对话产品,焦点不丢。
停止后出现红色告警条 已停止,已生成的内容保留;本次不会扣点。 停止是用户动作,不是出错。
打字回答发出后一直是「正在处理… / 正在分析…」,半分钟没有变化 发出即「收到,正在对照你的档案…」,随后按阶段换成「正在记下这件事…」「正在重新对照盘面…」「正在准备下一个问题…」。 发出后 300 ms 内要有一句确定的话;阶段由真实动作推动,只在活动行里,正文与历史里都没有(BUG-1047)。
也可以再说一件你记得大概时间的事。 / 还差带月份的经历,领域不限。 训练门开后给区间卡,并写「如果还记得……范围还能再收一截」。材料不够时只写记下了哪几件、再来一件不是这类的、至少两个具体例子;输入框占位「再说一件带年月的事」。 训练门未开时永远给结果或精确缺口;不说「领域不限」「做不了」。交付后采集线关完的邀请见下一行。
能问的都问完了 / 你要是还记得确切哪一天的事,不限领域,说出来我接着算 还有题可问时:「现在还剩 04:51–05:11 里 5 个候选,再对照几件经历会更准」,下面是系统点名的题。答「有」之后是口述「大概哪年几月?」,在输入框打字回答,不再出「哪一类事 + 发生年月」的卡。七条线和跳过线的重问问完了(按时间段点名的引导题一次校正最多两道),或用户说「没有了」,就出目前范围卡。 有题就继续引导;年月阶段直接打字。没题了照常给结果,不写「未达门槛」,也不为凑门槛再追问。不承诺「再补几件就能定到分钟」。
2018 年 3 到 5 月之间,有没有入职、换工作或职责变重?(引擎其实不知道是哪一类) 「2018 年 3 到 5 月之间,有没有什么事,比如搬家或开始长期住外地、开始认真关系、分手或结婚?」只有 D9 / D10 那两条轨道才点名领域。 边界只说得出「哪段时间」,说不出「哪一类事」。例子最多三个,只列用户还没拒答、也还没说过的领域。
(录入卡)哪一类事 + 发生年月 答「有」后只剩口述「大概哪年几月?」,在输入框打字。 多余入口删除;年月阶段不再有第二套录入。账本仍记用户原话,不得复用题干例子列表。
填报出生时间 05:10 / 与你的出生时间相差 7 分钟 医院记录:「出生记录时间 05:10」。家人记得:「你填的大概时间 05:10」「与你填的大概时间相差 7 分钟」。只知道时段:「你给的时间段」。 推算值不得称作「你的出生时间」。医院记录与目前范围不一致时只并列差值,不站队。
你的出生记录不准,按校正结果来 / 这些经历说明记录写错了 / 校正结果无效 出生记录时间 04:40,默认仍按这个时间排盘。你说的这些经历指向另一段时间,相差 8 分钟。你可以改用校正结果,也可以继续用记录。 记录与校正区间冲突时记录优先,但两者必须并列。不得宣布任何一方无效——不说记录不准,也不说校正结果不作数。
(冲突时按钮仍写)更像这个 按钮写「改用校正结果」,按钮下面一行写「选它之后,排盘会从出生记录时间 04:40 换成 04:48」。 换掉的是什么要在动手的地方说清楚。不新增入口,仍是同一个采用按钮;采用仍不是确认。
口述采集没有停止按钮,范围小字不可点 选择题卡内有「先这样,先看当前范围」;生成中有「停止回答」。口述采集只有输入框,没有「没有」「记不清」芯片,也不挂在输入框上方。范围小字是状态句,不可点。 想跳过可以打字「没有」或「记不清」。
只报一件后立刻按家人/学业/财务轮着问,题干带「2020 年前后」 记下后问「还有吗?比如……」(只列还没提过的具体事)。答「没有了」后才从用户说过的年份追问,例如「2020 年毕业后第一份工作大概哪年开始?」 先等用户说完;年份只来自用户,不用生日推。
点选后旁白写「04:31–04:39 这段领先,05:00–05:07 这段落后」 已记录,范围收到 04:31–04:39。 旁白只说范围变没变。领先/落后留在卡内「答了会怎样」,不进气泡。
每轮只有技法清单,不知道现在第几步 输入框上方有「第 N 步 · 原因 · 下一步」。 用户始终看得见该做什么。
完全不清楚出生时间后劝退「生时校正以后需要时再做」 可以直接开始生时校正:先从你记得的经历比出大致时段。 不知道钟点时先比时段,不劝退、不给分钟卡。
问「偏移 / 误差有多少分钟」 你对这个时间有多确定? 不确定度只在资料里问一次,校正不再追问。
吻合率低时模型追问要不要把误差放到 ±2 小时 按你说的经历,出生时间可能比家人记的偏得更多。放宽后再比一次? 放宽卡由服务端出,选项写「前后半小时 / 一小时 / 两小时」,不用偏移、误差、置信度、概率。
只知道傍晚时直接给分钟或采用卡 先切成三段(写起止钟点),比完再按分钟收。分不开就说「时段分不开,直接按分钟比」。 超过两小时的窗口先走子段,不在 4~6 小时上铺分钟卡。
记下精确到日的事后不问日子从哪来 刚才那个日子是查过记录,还是凭记忆? 只问日级、只问一次;不答就跳过。
打开即有 / 直接计算 · 打开即有 · 不消耗点数 / 主盘直接算 · 分盘按需 · 不消耗点数 (不写) 星盘页不写成本、速度、计费说明。失败页也不写。忙(429)说「算盘的服务正忙,稍等几秒再打开就好。」;其它计算失败说「这张盘算不出来,我们已经记录下来了。」不要说「过一会儿再打开」。
没有可显示内容 / 资料还在,过一会儿再打开 读不到资料:「星盘资料这会儿读不出来,我们已经记录下来了。」已采用的时间缺时区:「已采用的出生时间缺了排盘要用的时区,这张盘先不能算。我们已经记录下来了。」时区对不上:「出生地的时区没有对上,这张盘先不能算。我们已经记录下来了。」结果格式不对:「星盘结果的格式对不上,我们已经记录下来了。」 失败要说出是哪一种。不写「过一会儿再打开」,也不用一句没头没尾的「没有可显示内容」。
下面是词条式释义,不是对你个人的判断。 (不写) 基础信息 Tab 只放行星卡。词条本身不得写成运势,但不另印这句边界说明。
Agent 未完成必要的方法与计算步骤,本次不会扣点。(模型其实写过一段) 把模型写过的那段留下,文末由服务端加一句:「这次没跑完星盘计算,上面是模型直接写的,先看着。」 合同没绿但写过字时不得整轮空白。这句不是模型写的。没写过字仍报未完成、不扣点。
这一页是天象本身,不是对你的判断。 (不写) 星历页只放日期、五要素、行运、九十天事件和底部提问提示卡。「带这天去提问」在页面最底部的提示卡里(2026-09-26 从顶栏挪下来)。不另印定性句。
(校正会话上普通输入框仍可打字) 正在打开生时校正… 校正会话上普通输入框只有禁用态。打开失败时按钮写「重新打开生时校正」。
9月14日 · 生时校正 / 生时校正 · 9月14日 / 生时校正 · 09:35(创建钟点) 生时校正 · 05:07 / 生时校正 · 05:00–05:15 / 生时校正 校正标题写结果:已确认优先于已采用,写 生时校正 · HH:MM;否则当前范围写 生时校正 · HH:MM–HH:MM(间隔号,不是连字符);都没有则只写「生时校正」。今日节奏仍是 今日节奏 · M月D日。同日不再用墙钟去重。副标题仍是最后活动时间。旧标题按结果批量改;手改过的名字不动。
这么晚还醒着,{名字}。直接说说最在意的问题吧。 还没睡呀,{名字} 开场只一行、不追问、不写场景;提问交给输入框占位符
你更适合把已经积累的专业能力做成长期事业,而不是频繁换赛道。眼下更值得把现有工作做深,而不是立刻另起一摊。 今年你的事业是「外松内紧」:表面上木星走到你的事业宫,机会、人缘都在,看着轻松;底下土星压着你的工作宫,做事的规矩和身体的负担在收紧。推动这一年的是土星,不是木星,木星只负责把结果修得体面。所以别去应木星的「享受」,也别去应土星的「磨」,去扮演土星的「守」:把规矩立起来,别人松你不松。
- 上半年别接口头承诺,只接写下来的。
- 6 月前身体的小毛病别拖。
- 9 月木星换宫之后再谈升职,之前谈是白谈。
坏的那句像顾问报告:没有反差,没说谁在推谁在修,没有可扮演的象。好的那段是拍板的口气定稿(盘上数据是示意):反差 → 谁推谁修 → 扮演哪个象 → 最多三条短行动。
(用户说「你在说什么鬼」)抱歉让你困惑了,我再解释一下:从星盘来看,您的事业宫…… 说直接点:这份工作还值得留,但你得换个位置,不是换公司。哪句没看懂,指给我。 追问轮不重开一遍报告,也不道歉铺垫。一句白话结论 + 一句把球踢回去。

服务端探针 → Agent 题干

题干由 Agent 通过 rectification-set-focus.spokenPrompt 写;年份、事件家族、选项语义必须与服务端探针一致。

服务端探针 坏 好 为什么
2023 感情区分 2023 年前后,你有没有一段认真开始或结束的关系?(逐字复读模板) 工作这块记下了。2023 年前后,有没有一段认真开始或结束的关系? 接着用户上一句,同年份同家族,不复读整句模板。
2016 升学 2018 年你是哪年上的大学? 2016 年前后,你是哪年上的大学? 不得改年份。
2019 入职 2019 年前后,你有没有换过工作?A. 明确发生且时间吻合 2019 年前后,你有没有换过工作? 不得把选项字面写进题干。
2023 感情区分 你有没有一段认真开始或结束的关系? 工作这块记下了。2023 年前后,有没有一段认真开始或结束的关系? 题干必须写出服务端给的年份;漏写年份用户看不见期间。

星盘客户端等待超时只写:「这张盘等了太久没有回来,再打开一次试试。」不承诺速度,不用「正在加载」。429 忙与频繁打开的限流仍各用原句,不混写。

聊天顶栏的当前星盘

顶栏人名是入口,不是资料编辑。看见的字是当前这个人的名字。读屏名称是「当前星盘:」加上这个名字。不要写「我的星盘」或「分析对象」。

位置 文案
弹出层标题 当前星盘
本人 本人
空会话里点另一个人 直接换成这个人,不另写一句确认
已经说过话,点另一个人 新建会话并使用此人物
回答还没结束 这段回答结束后再换
列表还在读 人物列表还在读
列表没读出来 人物列表暂时读不出来
其他人暂时读不到 暂时读不到其他人
重试 重试
资料不完整 这份资料还不完整
资料已删除 资料已删除 · {原来的名字}
删除后不能再发 这份资料已经删除,这段对话只能看。

不写「正在加载」。人物列表接口失败时,顶栏写「暂时读不到其他人」,只列出本人,历史和对话按本人加载,不进整页错误屏;恢复后其他人重新出现。已经打开的那段对话不改成另一份资料。

侧栏与会话标题

历史分组标签只用这五个词,空组不出现:今天 / 昨天 / 最近 7 天 / 最近 30 天 / 更早。不要写成「七日内」「更早之前」。

会话标题是主题总结,不是资料名,也不是第一句话的截断。起名提示词只输出标题本身:6 到 12 个字,不要引号、书名号、句号或解释;不要复述出生日期、时间或地点,也不要写资料姓名。

设置弹窗

分区名只用:个人资料 / 账户与点数 / 通用设置。星盘档案是侧栏页面,不写进设置分区。不要写成「会员页」「充值页」。

账户与点数的页签只用:会员套餐 / 点数包 / 兑换码 / 订单记录。购买中按钮写「跳转收银台…」,轮询中写「等待支付结果」,不要写「正在加载」。

星盘档案不写关系。人数到顶时只说「最多保存 5 个人的星盘」。当前人物不是本人时,生时校正入口禁用,提示「生时校正暂时只支持本人。」删除一个人之前必须写出「将同时删除 N 个对话和 M 份报告,无法恢复。」本人不能删除,不要给删除按钮配一句绕过去的确认。

余额不足时输入框占位写「余额不足,可在账户与点数中补充」,不要叫用户去会员页。

「解锁完整咨询」兑换弹窗只在第一次因点数不足发不出消息时弹(2026-09-28 起,不再进首页就弹)。说明句写「问题还在输入框里。填写兑换码,点数到账就能发送,生时校正与完整解读也能用。」;到账后写「点数已到账,回到输入框点发送就行。」。不要再写「入门问题已经准备好」,弹出时刚被拦下的是用户自己的问题。

注销账号(2026-09-30):按钮写「注销账号…」,确认按钮写「确认注销」。说明必须三件事都说全:「7 天内重新登录可以撤销」、会被永久删除的内容清单、「剩余点数和会员权益会一并作废,不退款。订单和点数流水按法规保留,但不再与你的身份关联。」联系邮箱只从 lib/legal-entity.ts 取。冷静期内重新登录的全屏提示标题「账号注销中」,正文「这个账号将在 {日期} 永久删除。在那之前,你可以撤销注销,恢复全部内容。」按钮只有「退出登录」「撤销注销」。不要写「我们很遗憾」「确定要离开吗」这类挽留话。

首屏没加载完

脚本没跑起来、关键文件没下到,或浏览器版本过旧时,转圈停在「正在载入账户」不会自己结束。超时后只留这一屏,不自动刷新:

位置 文案
标题 这个页面没能加载完
正文 网络中断或浏览器版本过旧都会这样。可以重新加载试一次;如果反复出现,请在 Safari 设置里清除本站数据,或把系统升级到 iOS 16.4 以上。
动作 重新加载

不写异常原文、接口路径、状态码或「正在加载」。接口超时仍用原来的「连接云端服务超时」那一屏,不要把脚本没跑起来说成云端慢。

  • 不得虚构星盘事实或唯一出生分钟。
  • 问哪道题、年份、选项语义仍由服务端 focus 唯一所有;Agent 用 spokenPrompt 写题干,不得改年份、不得改选项含义。正文不得出题、复述或改写题干——题干作为同一条消息里正文之后的独立段落出现。
  • 正文不得断言界面当前状态(「界面上有/出现了下一问」);过渡用「接下来我们继续」这类中性句。
  • 正文必须先用一句话承接用户本轮给出的事实(年份+事件);不得预告选项。
  • 交付/采用轮必须出现「不是已确认的唯一出生分钟」这一语义。交付旁白不写「候选 A 预测下一次事业变动」;改说预测窗口留在采用后的核对阶段。
  • 不得对用户写「概率 / 置信度 / 确定 / 相对支持度」。专业数字只留在看盘板。
  • 采用旁白里「这段区间里哪些主题稳定、哪些会随分钟变」只能来自服务端 theme_sensitivity,模型不得自编;声明时段咨询必须写明「这只是粗看」。
  • 技法审计表只出现在回复下面的折叠面板,不写进正文。
  • 只知道出生范围时,大运和行运边界按区间说出来,不得挖成「[具体时间已省略]」。没有出生分钟时,任何「你的盘」断言都不要写。

口语层的形状

本命类回答默认只展开口语层。从第一个 H2 起的骨架仍完整写出、入库、可复制,但折在「完整分析」里。折叠是可见性,不是省略。

口语层没有标题,总量不超过 400 字。形状见上面第七条原则:反差(盘上的) → 谁在推谁在修 → 别去应 X 的象、去扮演 Y 的象。句子必须是完整句子,不得写成名词短语枚举。

首轮只说一遍(2026-09-27,BUG-1073,产品拍板 D8)。 开场就是回答,正文不再从「先回答你的问题」重来。正文只有三个二级标题:## 盘里支持这个判断的地方(只写开场没说过的依据,表格与正文二选一,不把开场的判断再列一遍)、## 时间怎么看、## 这周可以做的一件事(一到三条行动,只在这里出现一次)。首轮全文不超过 900 字。此前一份约 1,500 字的父母解读把同一个判断说了三遍、三条行动给了两遍,用户读到的是「说了很多没多说什么」。

追问轮直接回答(2026-09-27,BUG-1071,D3)。 本会话已经有过一轮解读之后,后面的问题按直接回答写:不超过 200 字,第一句回答问的那句话(是非题先答是 / 不是 / 看情况),只引与这句话直接相关的盘面事实(最多三处),不写二级标题、不写行动清单、不重述上一轮已经写过的结构。只有用户明确换了领域或要求「完整看一下」才回到口语开场 + 三标题。「追问轮」由服务端按「本会话已有回答」判定,不用正则猜用户意图(BUG-976/977 口径)。

坏 好 为什么
(用户问「我妈是不是不太在意我」)你其实要的是被听见,她给的是安排;你是否需要的是一种被看见的方式…… 不是。4 宫主水星逆行落 10 宫,她把心力投在你的前途上——不是不在意,是不会用你想要的方式在意。 是非题第一句答是 / 不是;依据是宫位,不是读心;不把问题改写成需求。
(首轮)开场三条行动 + ## 先回答你的问题 再答一遍 + 表格再列一遍 + ## 这周可以做的一件事 再给三条 开场(反差、谁推谁修、扮演哪个象)→ ## 盘里支持这个判断的地方(只写新依据)→ ## 时间怎么看 → ## 这周可以做的一件事(三条,一次) 同一判断只说一遍,行动只给一遍。
坏 好 为什么
你的事业宫在第十宫,D10 上升与本命一致。当前大运土星、副运木星,从度数上看今明两年有岗位变动的窗口。下面进入统一参数与原始结构。 今年你的事业是「外松内紧」:机会都在明面上,底下是规矩和身体在收紧。推这一年的是土星,木星只负责把结果修得体面。别去应土星的「磨」,去扮演它的「守」。
- 上半年只接写下来的承诺。
先回人问的方向,再按形状展开;度数留在骨架里。要点不是公文枚举。
事业、财富、变动窗口、土星大运 推这一年的是土星,木星只负责把结果修得体面。 句子是完整句子,不是公文枚举。

今日星语句库(2026-09-30,BUG-1109)

  • 首页问候下面的今日星语来自固定句库 frontend/src/lib/daily-starlanguage-library.ts,不走模型。改句子只改这个文件,全部句子的审阅表在 docs/tasks/PROGRESS-daily-line-library-20260930.md。
  • 一句 trend = 宫位句(说今天的心思落在哪类事上)+ 月相尾句(说今天适合推进还是收尾)。宫位句不写「第几宫」「宫主」「相位」「大运」,用生活里的词:工作、家、钱、朋友、休息。
  • action 是一件今天就能做完的具体小事;caution 是一件要留意的事,不吓人、不断言会发生什么。
  • 不写健康诊断、投资建议、法律意见;不写「一定」「必然」「注定」。
  • 出生时间没确认时不用宫位,只按月亮所在星座写,caution 固定为「出生时间尚未确认,这里只看大方向,不依赖具体分钟。」