From 21212a1b9f8112234a6a86e73aa8c16b5f8d287c Mon Sep 17 00:00:00 2001 From: 732642856 <732642856@qq.com> Date: Thu, 2 Jul 2026 22:58:51 +0800 Subject: [PATCH] Add user-led reading calibration protocol --- references/ai-reading-workflow-prompt.md | 122 +++++++++++++++++- references/strict-workflow-router.md | 55 ++++++++ ...test_user_led_reading_guidance_protocol.py | 63 +++++++++ 3 files changed, 239 insertions(+), 1 deletion(-) create mode 100644 tests/test_user_led_reading_guidance_protocol.py diff --git a/references/ai-reading-workflow-prompt.md b/references/ai-reading-workflow-prompt.md index ec817a2c..acc1e42e 100644 --- a/references/ai-reading-workflow-prompt.md +++ b/references/ai-reading-workflow-prompt.md @@ -1,7 +1,7 @@ # AI解盘工作流Prompt工程(AI Reading Workflow) > **适用场景**:AI收到出生信息、PDF星盘或文字星盘后,如何一步步执行完整的解盘+推运分析 -> **版本**:v5.1.0 | **更新日期**:2026-06-27 +> **版本**:v5.2.0 | **更新日期**:2026-07-02 > **来源标签**: 【工具/模板】 — AI解盘执行引擎工作流 > **优先级**:⭐⭐⭐⭐⭐(AI解盘质量的决定性文件) > **定位**:本文件是AI解盘的**执行引擎**,将Skill中所有参考资料串联成可执行的工作流 @@ -9,6 +9,7 @@ > **v4.0重大变更**:Step 0.5 Karaka系统自动识别(解决DK摇摆问题)、预测输出强制[A/B/C]标注、统一精度边界声明、来源标签体系引用 > **v5.0重大变更**:强制外部验证门控(MEVG)——新增核心原则"不凭记忆"、三个门控步骤(Step 3.11/4.10/5.5)嵌入工作流、与"不跳步"同级强制 > **v5.1重大变更**:事件判定骨架接入主工作流——新增 `Route -> Evidence Ledger -> Adjudication -> Output Contract` 四段式事件裁决层,并引入 marriage 专用 adjudicator。 +> **v5.2重大变更**:用户追问校准协议接入主工作流——把用户的质询流程抽象为盲推隔离、具体事件选项、证据先行、相似案例分层对标、可迁移边界与反例处理。 --- @@ -24,6 +25,125 @@ - ❌ 仅凭记忆说"Venus 在 Taurus 10 宫是 Malavya Yoga" - ✅ 先 web_search 确认形成条件 + 引用来源 - → 完整协议:`references/mandatory-verification-gate-protocol.md` +8. **追问即校准(v5.2 新增)**:用户质疑"你用了哪些技法""哪里遗漏""真实案例是否相似""为什么这样判断"时,必须把追问视为工作流校准信号,而不是普通解释请求;需要回到证据层、相似案例层和置信度边界重新裁决。 + +--- + +## 🔴🔴🔴 用户追问校准与相似案例对标协议(v5.2) + +> **目的**:把高质量用户追问转化为解盘流程约束,避免泛泛描述、记忆联想、单案例套用或把未闭环内容伪装成完整判断。 + +### 0.1 触发条件 + +只要用户出现以下任一追问,必须启动本协议: + +- "不要用我之前说过的反馈","重新盲推","只用出生参数和当前项目数据" +- "你是不是遗漏了技法","这是不是顶级印度占星师逻辑" +- "列具体时间和事件让我选择","不要问概念问题" +- "相似真实案例是什么","这个案例到底和我哪里像" +- "为什么这样判断","哪些地方需要修正" +- "这个机会具体是什么","事件节点是什么" + +### 0.2 盲推隔离模式 + +当用户要求盲推或禁用既往反馈时: + +1. 禁止调用用户此前提供的人生事件、校时反馈、对错判断、职业身份、关系状态、偏好描述。 +2. 只允许使用出生参数、当前项目现跑出的原始数据、已分级 source pack、MEVG 外部证据和真实案例校准层。 +3. 输出必须声明: + - `User Feedback Isolation: used` + - 使用了哪些数据源 + - 明确排除了哪些会话反馈类型 +4. 若系统无法保证隔离,必须写 `blocked`,不得输出伪盲推。 + +### 0.3 具体事件选项协议 + +校时、应期、转型、婚恋、事业机会、财富事件不得只问用户"你感觉像不像"或"有没有变化"。 + +必须改成可选择的具体事件格式: + +```markdown +| 时间窗口 | 事件选项 | 技术来源 | 用途 | +|---|---|---|---| +| YYYY-MM-DD 到 YYYY-MM-DD | A. 搬家/换住处;B. 工作启动;C. 关系断联 | Dasha + Transit + Varga | 校验/预测/置信度调整 | +``` + +要求: + +- 每个窗口至少给出 2-4 个可判断事件选项。 +- 事件必须落到现实层面:入职、搬家、签约、付款、断联、公开、培训班更换、项目暂停、住处/通勤变化等。 +- 不得只给心理状态、抽象主题或"能量变化"。 +- 用户选择后,只能用于后续校准;不能倒灌污染"盲推模式"。 + +### 0.4 证据先行,结论最后 + +高严谨解盘必须按以下顺序组织,不得先下结论再找理由: + +1. 原始 D1 + 三重参考引擎边界 +2. 功能性吉凶星 +3. 行星力量:Shadbala / Vimsopaka / Avastha +4. Yoga / Dosha +5. Jaimini:AK / AmK / DK / UL / A10 / Argala +6. 分盘:按问题域调取 D9 / D10 / D2 / D4 / D7 / D12 / D20 / D24 / D30 / D60 +7. 多大运:Vimshottari / Narayana / Yogini / Kalachakra / Jaimini +8. Transit + VedAstro range scan +9. Tajika 年运 +10. MEVG + 真实案例校准 +11. 最后才输出事业、财富、婚恋、健康、迁移等结论 + +### 0.5 相似案例分层对标 + +真实案例不得只因为"同主题"就拿来类比。必须给出相似层级: + +| 层级 | 含义 | 置信度作用 | +|---|---|---| +| L0 同主题 | 都是婚恋/事业/财富案例,但星盘和运势未证明相似 | 只能作背景,不得推断 | +| L1 D1 结构相似 | Lagna、关键宫主、功能吉凶、行星落宫或尊严有相似点 | 可作弱参考 | +| L2 分盘相似 | D9/D10/D2 等对应分盘支持相同主题 | 可提高主题置信度 | +| L3 Dasha 功能相似 | 不是同一颗星也可以,但必须功能等价,如旧系统瓦解、异地网络、长期责任启动 | 可作阶段类比 | +| L4 事件机制相似 | 真实案例中发生了可验证的节点,如离开旧组织、获得项目、迁移、收入来源变化 | 可校准事件形态 | +| L5 物质支撑相似 | 收入来源、平台、组织资源、合作关系、家庭/伴侣支持等现实条件相似 | 才能推断"生活会如何变好" | + +输出案例时必须说明: + +- 这个案例和命主在哪些层相似 +- 哪些层不相似 +- 哪些内容可迁移 +- 哪些内容不可迁移 +- 因不相似而降低了哪部分置信度 + +### 0.6 反例与用户排除案例处理 + +- 反例不能静默删除;必须标注它为什么是反例、它压低了哪个判断。 +- 若用户明确说"不要考虑某个案例",该案例标记为 `user-excluded`,不进入主校准,但保留为审计记录。 +- 正例不能单独决定结论;必须经过分盘、大运、事件机制和 MEVG 仲裁。 +- 单一名人案例只能校准"事件机制",不得复制成用户个人命运模板。 + +### 0.7 转型与机会的现实机制检查 + +当判断事业转型、婚恋落实、财富改善或人生阶段转折时,必须追问并输出"机会如何落地",至少拆成: + +1. 旧系统断裂:离开组织、旧项目停摆、关系断联、身份失效。 +2. 过渡平台:课程、讲座、试稿、短项目、朋友介绍、异地网络、线上发布。 +3. 资源入口:谁提供机会,平台是什么,收入从哪里来。 +4. 责任测试:合同、制作、交付、管理、公开评价、长期责任。 +5. 结果显化:付款、职位、署名、公开关系、稳定合作、可重复收入。 + +若无法证明"资源入口"或"收入来源",不得说"情况会变好",只能说"有转向信号但物质改善待验证"。 + +### 0.8 时间节点输出粒度 + +所有预测窗口必须拆成不同层级: + +| 节点 | 含义 | +|---|---| +| Contact | 初次接触、消息、介绍、线索出现 | +| Activation | 开始行动、沟通密集、试稿/面试/约见 | +| Confirmation | 确认合作、确认关系、确认资源 | +| Manifestation | 公开、到账、签约、入职、搬迁完成 | +| Responsibility Test | 压力测试、延期、责任加重、现实磨合 | + +禁止把这些全部混成一句"会有机会"或"会确定关系"。 --- diff --git a/references/strict-workflow-router.md b/references/strict-workflow-router.md index 81fffd6d..b6820e96 100644 --- a/references/strict-workflow-router.md +++ b/references/strict-workflow-router.md @@ -58,6 +58,57 @@ Every Level 2+ chart reading must include `MEVG / Global Web Evidence` and --- +## 0.7 User-Led Reading Calibration Gate + +This gate turns the user's follow-up interrogation into workflow control. It is +not a personality preference; it prevents vague readings, memory-based +anchoring, and weak case analogies. + +Trigger this gate when the user asks any of the following: + +- whether a technique, source layer, oracle, or divisional chart was omitted; +- for a blind reading that excludes prior life events, feedback, or corrections; +- for concrete time/event options instead of conceptual questions; +- for real case comparison, global-web evidence, or a named analog case; +- why a timing claim was made, especially when a case dasha differs from the + native's dasha. + +When active, the reading must complete or explicitly block these controls: + +1. `User Feedback Isolation`: if blind mode is requested, exclude prior + biographical feedback, rectification choices, and user corrections from the + interpretive reasoning. Use only birth inputs, current engine data, graded + source packs, MEVG packets, and real-case calibration records. +2. `Concrete Time/Event Options`: for rectification, timing, opportunity, and + event prediction, output selectable date windows and concrete event options. + Do not ask vague subjective questions such as "does this feel like you?" +3. `Evidence-First / Conclusion-Last`: show raw chart layers, strength layers, + dasha/transit/Tajika layers, MEVG, and real-case calibration before the final + fortune judgment. +4. `Similarity-Weighted Case Calibration`: classify each real case by similarity + layer instead of treating same-topic cases as equal evidence. +5. `Transferability Boundary`: state which part of an analog case transfers, + which part does not, and how the mismatch changes confidence. +6. `Counterexample Handling`: mark counterexamples, user-excluded cases, and + obsolete cases explicitly. Do not silently remove inconvenient cases. + +### Similarity layers for real cases + +| Layer | Meaning | Use | +|---|---|---| +| L0 same-domain only | Same broad topic, but no proven chart or dasha similarity | Background only | +| L1 D1 structure | Lagna, house lords, functional benefic/malefic roles, dignity, or house themes align | Weak support | +| L2 divisional support | Relevant D9/D10/D2/D4/D7/D12 etc. supports the same theme | Theme confidence | +| L3 functional dasha | Dasha periods play comparable functions even when the planets differ | Stage comparison | +| L4 verified event mechanism | Public biography or benchmark record shows a concrete event mechanism | Event-shape calibration | +| L5 material substrate | Income source, platform, institution, spouse/family support, or network structure is comparable | Required for material-outcome claims | + +Analog cases cannot be used as prophecy. They may calibrate mechanism and +confidence only after the similarity layer and transferability boundary are +declared. + +--- + ## 1. Question router | User intent | Route | Required depth | @@ -235,6 +286,10 @@ Every Level 2+ output must include this table near the end. | Argala | Used / not used | ... | ... | | KP / Sub-lord | Used / not required / unavailable | ... | ... | | Historical verification | Used / not provided | ... | ... | +| User Feedback Isolation | Used / not requested / blocked | Blind-mode exclusion of prior biography, rectification feedback, and user corrections | Required when user asks for blind reading; blocked if isolation cannot be guaranteed | +| Concrete Time/Event Options | Used / not required / blocked | Date windows with selectable concrete event options | Required for rectification and timing calibration; lowers precision if omitted | +| Similarity-Weighted Case Calibration | Used / blocked / case gap | L0-L5 similarity layer for each analog case | Same-topic cases alone cannot raise confidence | +| Transferability Boundary | Used / blocked / not applicable | What transfers, what does not, and why | Prevents copying a celebrity or benchmark story into the native's forecast | | MEVG / Global Web Evidence | Used / blocked / exempt for pure calculation | Source tier, searches, conflict arbitration | Mandatory for all chart interpretation readings; blocked or downgraded if omitted | | Real Case Calibration | Used / blocked / case gap | Real case, benchmark case, or documented lack of matching cases | Cap confidence when no comparable case evidence is available | diff --git a/tests/test_user_led_reading_guidance_protocol.py b/tests/test_user_led_reading_guidance_protocol.py new file mode 100644 index 00000000..218c08df --- /dev/null +++ b/tests/test_user_led_reading_guidance_protocol.py @@ -0,0 +1,63 @@ +#!/usr/bin/env python3 +"""Regression tests for user-led Jyotish reading calibration guidance.""" + +from __future__ import annotations + +from pathlib import Path + + +ROOT = Path(__file__).resolve().parents[1] +AI_WORKFLOW = ROOT / "references" / "ai-reading-workflow-prompt.md" +STRICT_ROUTER = ROOT / "references" / "strict-workflow-router.md" + + +def test_ai_workflow_contains_user_interrogation_calibration_protocol() -> None: + text = AI_WORKFLOW.read_text(encoding="utf-8") + + required_phrases = [ + "用户追问校准与相似案例对标协议", + "盲推隔离模式", + "具体事件选项协议", + "证据先行,结论最后", + "相似案例分层对标", + "反例与用户排除案例处理", + "转型与机会的现实机制检查", + "时间节点输出粒度", + "User Feedback Isolation: used", + "Contact", + "Activation", + "Confirmation", + "Manifestation", + "Responsibility Test", + ] + + for phrase in required_phrases: + assert phrase in text + + +def test_strict_router_requires_user_led_calibration_audit_rows() -> None: + text = STRICT_ROUTER.read_text(encoding="utf-8") + + required_phrases = [ + "User-Led Reading Calibration Gate", + "User Feedback Isolation", + "Concrete Time/Event Options", + "Evidence-First / Conclusion-Last", + "Similarity-Weighted Case Calibration", + "Transferability Boundary", + "Counterexample Handling", + "L0 same-domain only", + "L5 material substrate", + "Analog cases cannot be used as prophecy", + ] + + for phrase in required_phrases: + assert phrase in text + + +def test_case_calibration_requires_more_than_same_domain() -> None: + text = STRICT_ROUTER.read_text(encoding="utf-8") + + assert "Same-topic cases alone cannot raise confidence" in text + assert "Required for material-outcome claims" in text + assert "Do not ask vague subjective questions" in text