# 生时校正「盘型口径」研究(2026-09-30) > 任务书 `docs/tasks/TASK-rectification-varga-resolution-research-20260930.md`(BUG-1105)。 > 数据:`references/real_case_calibration/minute_rectification_holdout_v5.json`(77 例公开 Rodden-AA,开放集,非盲测)。 > 口径:ayanamsa `raman`、node mode `mean`;候选步长 2 分钟(同三轮既有研究);分盘上升逐分钟(步长 1);六题由线上 `event_probes.discriminating_event_probes` 出、按真值作答、线上卡片更新(±2、三次强冲突淘汰)、线上交付规则(落后头名 <8 分)。 > 脚本:`scripts/research/varga_resolution_lib.py` / `varga_resolution_probe.py`;结果 `varga_resolution_baseline_2026_09_30.json`(M0)与 `varga_resolution_research_2026_09_30.json`(M1–M3、稳健性);测试 `tests/test_varga_resolution_research.py`。生产代码与 10 个冻结文件零改动。 ## 1. 结论 | 项 | 一句话结论 | 是否建议实现 | | --- | --- | --- | | M0 段扫描 | 任务书两张表逐格复现。31 分钟窗(±15)D1 上升只有 1 种的 51/77;D9 / D10 均 3.2 / 3.3 种;**D9、D10 在任何窗口都没有一例只有 1 种**(±10 也是 0/77) | — | | M1 段级汇总 | 六题后按段汇总,±10:D1 头段 = 真值 76/77,D9 68/77(88%)、D10 66/77(86%);头段占比 ≥ 0.6 时留一法准确率 D9 92%(61 例)、D10 90%(51 例)。±30:D9 / D10 头段 = 真值只有 57% / 64%,但占比 ≥ 0.6 的 18 / 24 例留一法 94% / 92%。±60:真值段保留 74/77 < 基线 75,**不过硬红线 1**,D9 / D10 只能 blocked | **建议实现**(±10 / ±30 分档展示;±60 只给 D1) | | M2 按段选题 | 同一题库按「段级信息增益」重排:±10 D9 头段命中 68 → 71、D10 不变、宽度 15 → 13;±30 D9 44 → 48、D10 49 → 56、≤2 段 25 → 33 / 30;真值段保留不变(76)。±60 反而更差(真值段 74 → 73) | **建议实现,只在 ≤ ±30 启用**;收益 +3~+7 例(4–9 pp),±60 不启用 | | M2 提前停 | 头段占比达 0.7 / 0.8 即停:题数 4.1 → 2.2 / 2.9,但 ±10 真值段保留 76 → 75、真值在区间 76 → 75 | **不建议**作为停止条件;占比只用来给可信度档位,六题照问 | | M3 按问题域取盘 | 只判用户问的那张盘,准确率上去:±10 婚恋(D1+D9)92%、事业(D1+D10)86%、综合(D1×D9×D10)78%;题数不变(同一题库)。**「不用校正」比例:0/77**——D9 / D10 在窗内总会换至少一次;只有当问题只需要 D1 时才成立(±10 64/77、±15 51/77) | **建议实现**取盘策略;「不用校正」出口只对「只需 D1」的问题成立 | | 稳健性 | 答错 1 题:±10 真值段保留 98.7%、头段命中 83–86%;答错 2 题:97%、74–80%。事件 ±7 天:与基线逐格相同。LMT 时代 7 例:±10 保留 6/7、命中 5–6/7;±30 起命中 1–2/7 | 分档阈值不因稳健性下调;LMT 例照常计入 | **推荐口径**:`raw`(线上分数、簇内均摊)。`percent` 与 `raw` 在所有格子数字相同(同一排序);`uniform` 没有一致收益。 **每档半径的诚实出口** | 用户窗口 | D1 | D9 / D10 | 交付卡说什么 | | --- | --- | --- | --- | | ≤ ±10(21 分钟) | 头段 = 真值 99% | 占比 ≥ 0.6 →「较可信」(留一法 90–92%);0.5–0.6 →「倾向,备选也要看」(全集 86–88%);< 0.5 →「分不开」(各 3 例) | 「D1 上升 X。D9 上升 Y(较可信),备选 Z」 | | ±30(61 分钟) | 97% | 占比 ≥ 0.6 →「较可信」(留一法 92–94%,约 1/4–1/3 用户);其余「分不开」 | 多数用户:「D1 上升 X 可信;分盘按现有信息分不开」 | | ±60(121 分钟) | 90%(占比 ≥ 0.9 时 96%) | **blocked**(真值段保留低于基线,头段命中 ≤ 47%) | 「只能确定 D1 上升 X」 | ## 2. M0 · 段扫描(复现任务书两张表) **表 1 · 窗口内有几种上升(77 例)** | 窗口 | D1 只有 1 种 | D9 平均种数 | D10 平均种数 | D12 平均 | D1×D9×D10 平均组合 | | --- | --- | --- | --- | --- | --- | | ±10 | 64/77 | 2.43 | 2.51 | 2.88 | 3.84 | | ±15 | 51/77 | 3.22 | 3.25 | 3.94 | 5.27 | | ±30 | 37/77 | 5.35 | 5.30 | 6.74 | 9.65 | | ±60 | 10/77 | 9.27 | 8.49 | 10.91 | 18.32 | D9 / D10 / D12 在四档窗口里「只有 1 种」都是 0/77。 **表 2 · 六题后交付区间(线上 `unionStillValidRange` 端点,含区间内被淘汰的分钟)里的盘型** | 半径 | 盘 | 只剩 1 种 | ≤2 种 | 区间内多数分钟 = 真值 | 其中多数是并列 | | --- | --- | --- | --- | --- | --- | | ±10 | D1 | 75/77 | 77 | 76 | 0 | | ±10 | D9 | 22 | 68 | 68 | 0 | | ±10 | D10 | 27 | 63 | 65 | 0 | | ±10 | D12 | 18 | 60 | 67 | 2 | | ±10 | D1×D9×D10 | 15 | 34 | 52 | 4 | | ±30 | D9 / D10 | 7 / 4 | 24 / 22 | 33 / 34 | **24 / 21** | | ±60 | D9 / D10 | 1 / 2 | 11 / 10 | 15 / 25 | **42 / 22** | 与任务书逐格一致(真值在区间 76 / 76 / 75,宽度中位 15 / 35 / 63)。新增「并列」一列:±30 起「多数 = 真值」有一大半是并列后取先出现的段,**不能当准确率读**;准确率看 §3 的段级占比。 复现中修正了起点脚本的两处口径:跨午夜区间(如 23:15 出生、交付端点 00:01–23:59)的偏移按 1440 折回 [-720, 720];并列时与起点脚本一样取区间内最早出现的段,并把并列例数单独列出。修正后数字与任务书相同。 ## 3. M1 · 段级汇总与可信度校准(`raw`,六题) 段 = 窗口内该盘上升相同的连续分钟;段质量 = 仍有效候选簇的分数(≥0)按簇内分钟均摊后落进该段的总和;头段 = 质量最高的段;「真值段保留」= 真值所在段质量 > 0。 **3.1 硬红线 1(真值段保留 ≥ 基线真值在区间 76 / 76 / 75)** | 半径 | D1 | D9 | D10 | D12 | 组合 | 判定 | | --- | --- | --- | --- | --- | --- | --- | | ±10 | 76 | 76 | 76 | 76 | 76 | 过 | | ±30 | 76 | 76 | 76 | 76 | 76 | 过 | | ±60 | 76 | **74** | **74** | 75 | **74** | **D9 / D10 / 组合不过** | ±60 差的 1 例:真值分钟落在交付端点之内,但它所在的簇落后头名 ≥ 8 分(不在有效簇里),按段汇总时质量为 0。这正是 ±60 分盘应写 blocked 的理由。 **3.2 头段 = 真值、剩余段数、头段占比中位** | 半径 | 盘 | 头段 = 真值 | 剩 ≤2 段 | 只剩 1 段 | 头段占比中位 | | --- | --- | --- | --- | --- | --- | | ±10 | D1 | 76/77 | 77 | 75 | 1.00 | | ±10 | D9 | 68/77 (88%) | 68 | 22 | 0.68 | | ±10 | D10 | 66/77 (86%) | 63 | 27 | 0.67 | | ±10 | D12 | 55/77 | 60 | 18 | 0.66 | | ±10 | D1×D9×D10 | 58/77 (75%) | 39 | 15 | 0.53 | | ±30 | D1 | 75/77 | 77 | 64 | 1.00 | | ±30 | D9 | 44/77 (57%) | 25 | 7 | 0.46 | | ±30 | D10 | 49/77 (64%) | 25 | 4 | 0.44 | | ±30 | D1×D9×D10 | 39/77 | 11 | 2 | 0.35 | | ±60 | D1 | 69/77 (90%) | 76 | 45 | 1.00 | | ±60 | D9 | 36/77 | 11 | 1 | 0.33 | | ±60 | D10 | 36/77 | 10 | 2 | 0.32 | **3.3 阈值-准确率(头段占比 ≥ t 的例子里头段 = 真值的比例;全集拟合,括号内例数)** | 半径 | 盘 | t=0.5 | 0.6 | 0.7 | 0.8 | 0.9 | | --- | --- | --- | --- | --- | --- | --- | | ±10 | D9 | 0.878 (74) | 0.918 (61) | 0.917 (36) | 0.958 (24) | 0.955 (22) | | ±10 | D10 | 0.865 (74) | 0.902 (51) | 0.909 (33) | 0.963 (27) | 0.963 (27) | | ±10 | D1×D9×D10 | 0.826 (46) | 0.867 (30) | 0.857 (21) | 0.933 (15) | 0.933 (15) | | ±30 | D9 | 0.806 (31) | 0.944 (18) | 1.00 (10) | 1.00 (7) | 1.00 (7) | | ±30 | D10 | 0.867 (30) | 0.917 (24) | 1.00 (14) | 1.00 (6) | 1.00 (4) | | ±60 | D9 | 0.611 (18) | 0.625 (8) | 0.75 (4) | 1.00 (1) | 1.00 (1) | | ±60 | D10 | 0.615 (13) | 0.667 (9) | 0.833 (6) | 0.80 (5) | 1.00 (2) | **3.4 留一法(阈值在训练折上按目标准确率选最低格点,在留出例上判「可信」;报「可信」例数 / 其准确率)** | 半径 | 盘 | 目标 0.8 | 目标 0.9 | | --- | --- | --- | --- | | ±10 | D9 | 74 例 / 0.878(阈值 0.5) | 61 例 / 0.918(阈值 0.6) | | ±10 | D10 | 74 / 0.865 | 51 / 0.902 | | ±10 | D1×D9×D10 | 46 / 0.826 | 17 / 0.824 | | ±30 | D9 | 31 / 0.806 | 18 / 0.944 | | ±30 | D10 | 30 / 0.867 | 24 / 0.917 | | ±60 | D9 | 0 例(没有阈值能在训练折达标) | 0 | | ±60 | D10 | 6 / 0.833 | 1 / 0.0 | 去掉 LMT 时代 7 例后(70 例):±10 D9 62/70、D10 61/70 头段 = 真值,与全集比例相同。 **3.5 三种质量口径**:`percent` 与 `raw` 所有格子相同;`uniform`(每个存活分钟计 1)±10 D10 头段 68 vs 66、D12 64 vs 55,±30 / ±60 持平或更差,留一法没有一致收益。推荐 `raw`:不引入新运算,线上分数直接汇总。 ## 4. M2 · 按段选题 同一题库(线上 `discriminating_event_probes` 返回的池,±10 中位 6 题、±30 / ±60 中位 8 题),研究侧按「答题后段分布的信息增益」逐题挑选,与线上顺序(前六题)比。两边都按真值作答、都用线上卡片更新。 | 半径 | 目标盘 | 顺序 | 答题数 | 真值段保留 | 头段 = 真值 | 剩 ≤2 段 | 真值在区间 | 宽度中位 | | --- | --- | --- | --- | --- | --- | --- | --- | --- | | ±10 | D9 | 线上 | 4.1 | 76 | 68 | 68 | 76 | 15 | | ±10 | D9 | 按段 | 4.1 | 76 | **71** | 70 | 76 | **13** | | ±10 | D10 | 线上 / 按段 | 4.1 | 76 / 76 | 66 / 66 | 63 / 65 | 76 / 76 | 15 / 13 | | ±10 | D1×D9×D10 | 线上 / 按段 | 4.1 | 76 / 76 | 58 / 60 | 39 / 39 | 76 / 76 | 15 / 13 | | ±30 | D9 | 线上 / 按段 | 5.45 | 76 / 76 | 44 / **48** | 25 / **33** | 76 / 76 | 35 / 33 | | ±30 | D10 | 线上 / 按段 | 5.45 | 76 / 76 | 49 / **56** | 25 / 30 | 76 / 76 | 35 / 33 | | ±30 | D1×D9×D10 | 线上 / 按段 | 5.45 | 76 / 76 | 39 / 44 | 11 / 16 | 76 / 76 | 35 / 33 | | ±60 | D9 | 线上 / 按段 | 5.45 | 74 / **73** | 36 / 34 | 11 / 14 | 75 / 75 | 63 / 63 | | ±60 | D10 | 线上 / 按段 | 5.45 | 74 / **73** | 36 / 33 | 10 / 11 | 75 / 75 | 63 / 63 | 前六题完全相同的例数:±10 25–28/77,±30 9/77,±60 7/77——两种顺序确实不同。 **提前停**(头段占比达到阈值即不再问): | 半径 | 目标盘 | 停在 | 答题数 | 真值段保留 | 头段 = 真值 | 真值在区间 | | --- | --- | --- | --- | --- | --- | --- | | ±10 | D9 | 0.7(按段) | 2.2 | **75** | 71 | **75** | | ±10 | D9 | 0.8(按段) | 2.9 | **75** | 70 | 75 | | ±10 | D10 | 0.7 / 0.8(按段) | 2.4 / 2.9 | 76 / 76 | 67 / 66 | 74 / 75 | | ±30 | D9 | 0.7 / 0.8(按段) | 4.9 / 5.2 | 74 / 76 | 46 / 48 | 74 / 76 | 提前停少问 1–2 题,但 ±10 D9 与 ±30 0.7 档都丢 1–2 例真值段 / 真值在区间,低于基线,**不过硬红线 1**。占比只能用于交付卡的可信度档位,不能用来少问。 **判定**:按段选题在 ≤ ±30 上是一致的小收益(D9 +3 / +4,D10 0 / +7,宽度 −2),真值段保留不降;±60 更差。建议实现,且只在 ≤ ±30 启用。77 例上 1 例 = 1.3 pp,+3 在噪声边缘,+7 超出噪声。 ## 5. M3 · 按问题域取盘 | 半径 | 策略(目标盘) | 窗内段数均值 | 头段 = 真值(线上六题 / 按段六题) | 剩 ≤2 段(按段) | 「不用校正」(目标盘全窗 1 种) | | --- | --- | --- | --- | --- | --- | | ±10 | 婚恋 D1+D9 | 2.4 | 68 / **71**(92%) | 70 | 0/77 | | ±10 | 事业 D1+D10 | 2.6 | 66 / 66(86%) | 65 | 0/77 | | ±10 | 综合 D1×D9×D10 | 3.8 | 58 / 60(78%) | 39 | 0/77 | | ±15 | 三种 | — | — | — | 0/77 | | ±30 | 婚恋 | 5.4 | 44 / 48(62%) | 33 | 0/77 | | ±30 | 事业 | 5.8 | 48 / 53(69%) | 28 | 0/77 | | ±30 | 综合 | 9.7 | 39 / 44(57%) | 16 | 0/77 | | ±60 | 婚恋 / 事业 / 综合 | 9.6 / 10.7 / 18.3 | 36→34 / 32→31 / 30→29 | 14 / 12 / 6 | 0/77 | - 只判用户问的那张盘,准确率明显高于同时判三张(±10:92% / 86% vs 78%)。题数不变——题库是同一个,答题数由可答题目数决定(±10 平均 4.1)。 - **「不用校正」的出口对婚恋 / 事业 / 综合三种策略都是 0/77**:D9、D10 在 ±10 里就总会换至少一次。它只对「只需要 D1」的问题成立(±10 64/77、±15 51/77、±30 37/77)。任务书决策记录里的「三张盘都只有 1 种 → 直接说不用校正」在数据上不会发生,实现单要改成「只需 D1 且 D1 全窗一种 → 不用校正」。 ## 6. 稳健性(`raw`,六题线上顺序) | 半径 | 盘 | 基线 保留 / 命中 | 答错 1 题(5 seed × 77) | 答错 2 题 | 事件 ±7 天 | LMT 7 例 保留 / 命中 | | --- | --- | --- | --- | --- | --- | --- | | ±10 | D9 | 76 / 68 | 保留 98.7%、命中 86.0% | 96.6%、80.3% | 76 / 68(同基线) | 6 / 6 | | ±10 | D10 | 76 / 66 | 98.7%、82.9% | 97.1%、74.0% | 76 / 66 | 6 / 5 | | ±30 | D9 | 76 / 44 | 96.1%、43.9% | 88.1%、32.0% | 76 / 44 | 6 / 2 | | ±30 | D10 | 76 / 49 | 96.4%、47.3% | 88.8%、36.4% | 76 / 49 | 6 / 2 | | ±60 | D9 | 74 / 36 | 93.0%、31.4% | 81.0%、19.7% | 74 / 36 | 5 / 1 | | ±60 | D10 | 74 / 36 | 91.7%、28.3% | 81.0%、17.9% | 74 / 36 | 5 / 1 | 事件日期 ±7 天与基线逐格相同:日精度事件挪 7 天没有改变任何一题的出题与作答(45 天闸门、月级边界)。答错 2 题在 ±30 起把真值段保留压到 88%,与 09-26 「两道反答 = 8 分 = 淘汰线」一致;分档阈值不因此下调,交付卡文案要保留「答错会影响结果」的提醒。 ## 7. 给实现单的要点 **改(都在冻结文件之外)** 1. 录入后段扫描:新服务端模块(例如 `scripts/rectification/varga_segments.py`,新文件,不在 `PRODUCTION_FILES`)——对窗口逐分钟算 D1 / D9 / D10 上升,输出各盘段表;只需 D1 且 D1 全窗一种 → 「不用校正」出口。 2. 段级汇总:前端 `rectification-agentic` 新增 `core/segment-summary.ts`(在 `buildInferenceState` 的分钟分数之上按段求和,`raw` 口径:有效簇分数 ≥0、簇内均摊);输出每盘头段、占比、剩余段数。 3. 分档文案:`user-copy.ts` / 交付卡 / 采用卡按 §1 的出口表;采用时落库该段中点分钟。VOICE / DESIGN 同提交。 4. 按段选题:新模块对 `event_probes` 返回的题池按段级信息增益重排,只在窗口 ≤ ±30 启用;`event_probes.py` 不动。 5. 按问题域取盘:ConversationFocus 里的问题域 → 目标盘集合(婚恋 D1+D9 / 事业 D1+D10 / 综合三张)。 **不改**:`active_rectification_event_engine.py`、`decision_policy.py`、`MIN_SEPARATION_LEAD`、45 天闸门、七条采集线、卡片 ±2 与三次淘汰、采用 / 确认门、来源标签、训练门与留一件对照、六题照问(不提前停)。 **验收红线**:实现后用本研究脚本回放,±10 / ±30 真值段保留 76 / 76、头段 = 真值不低于 §4「按段」列;±60 交付卡不得出现 D9 / D10 推荐。 ## 附:复跑命令 ```bash export PYTHONHASHSEED=0 python3 scripts/research/varga_resolution_probe.py \ --stages m0,m1,m2,m3,robust --radii 10,30,60 --cache-dir /tmp/varga-cache \ --baseline-out docs/research/varga_resolution_baseline_2026_09_30.json \ --json-out docs/research/varga_resolution_research_2026_09_30.json python3 -m pytest -q tests/test_varga_resolution_research.py ``` 两次完整运行各约 12 分钟(77 例 × 三档,M0–M3 + 稳健性),输出逐字节一致。