fix(rectification): 区分不开时不显示「最可能」副标题(验收补改)
Independent Staging Quality Gate / validate (push) Successful in 11m49s
Independent Staging Quality Gate / publish (push) Successful in 3m44s

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017eEAG8HD3mm8gsKXgk8uU8
This commit is contained in:
Jesse_Chen
2026-09-26 14:45:11 +08:00
co-authored by Claude Opus 5.5
parent 4e6e8d87ef
commit 7203d94e9c
11 changed files with 36 additions and 15 deletions
+1 -1
View File
@@ -3,7 +3,7 @@
## 2026-09-26 — 生时校正:少问几道就出结果,结果卡以范围为主(待验收)
- 按时间段点名的补经历题(「某年某月之间有没有什么事」)一次校正最多两道;七条线和跳过线的一次重问问完就出目前范围卡,不再为了「10 分钟门槛」继续追问。离线回放(20 例公开名人资料,理想作答):平均提问从 11.4 道降到 7.8 道,真值落在范围内的比例没有下降,范围宽度中位差 1 分钟以内。
- 结果卡第一行仍是「目前范围 HH:MM–HH:MM(对照了 N 件经历)」,下面加一行「最可能 HH:MM」。
- 结果卡第一行仍是「目前范围 HH:MM–HH:MM(对照了 N 件经历)」,下面加一行「最可能 HH:MM」;几个时刻区分不开时这一行不出。
- 三列的「相对可能性」只在第一名比第二名高 5 个百分点及以上时显示;差不多时不写数字,改写一句「这几个时刻目前区分不开,补一件带年月的经历能帮助分开。」排序、每列的性格 / 经历 / 未来时段和「更像这个」不变。
- 不改打分、淘汰规则、采用和确认条件;自己在输入框补经历照常记、照常重算。
- Skill 版本 bump:10.0.29 → 10.0.30(出卡句改为「七条定向线及跳过线重问问完即出卡、引导窗口题最多两道」,候选卡说明加入百分比显示规则)。旧会话仍按原绑定版本打开。不改数据库;真机与部署待验收。
@@ -78,7 +78,7 @@
| `frontend/src/components/rectification-range-delivery.tsx` | 副标题「最可能 HH:MM」;按 D4 显示百分比或那一句 |
| `frontend/src/app/globals.css` | `.rectification-range-delivery__most-likely`、`.rectification-range-delivery__indistinct` |
| `frontend/DESIGN.md` / `frontend/docs/VOICE.md` | 交付卡一节、出卡时机、D3/D4 文案 |
| `skills/jyotish-birth-time-rectification/**`、`versions/10.0.30/`、`skills/skill-package-registry.json`、`case-status.ts` | Skill bump 10.0.30(sha256 `926db1ab…3a13`,10.0.29 标 deprecated、快照保留,历史校正按绑定版本打开不受影响——BUG-621) |
| `skills/jyotish-birth-time-rectification/**`、`versions/10.0.30/`、`skills/skill-package-registry.json`、`case-status.ts` | Skill bump 10.0.30(sha256 `ade7b748…102c`,10.0.29 标 deprecated、快照保留,历史校正按绑定版本打开不受影响——BUG-621) |
| `scripts/research/fewer_probes_card_replay.py`、`docs/research/fewer_probes_card_replay_2026_09_26.json` | 离线回放 |
Skill 为什么要 bump:原 SKILL.md 写「所有线(含引导窗口题、跳过线重问、未覆盖领域题)问完后……才交付目前范围」,`candidate-comparison.md` 写「每列写相对可能性」,都与 D2 / D4 相反,不改会让 Agent 读到错误规则。改了三处:SKILL.md 出卡句 + 引导题「一次校正最多两道」;`conversation-strategy.md` 同步(它还残留 10.0.27 的「出卡须 `precision_gate_met`」旧句,一并改正);`candidate-comparison.md` 卡片结构与百分比规则。
@@ -133,3 +133,21 @@ Skill 为什么要 bump:原 SKILL.md 写「所有线(含引导窗口题、
- 无 Docker:24 条 DB / 部署套件与基线同样失败,已逐条比对。
- 无登录态与模型凭据:真实对话里的出卡时机、Agent 旁白是否遵守新 Skill 句,留待部署后按 `docs/testing/` 清单真机走查。
- 未推送、未部署。
## 验收(Claude,2026-09-26)
基于 `origin/staging` `7ddce2c9` rebase 后独立复跑(Node 22.14):
| 项 | 结果 |
| --- | --- |
| `tsc --noEmit` | 0 错 |
| `npm run lint` | 0 error(126 warning,均为既有) |
| `npm test` | 4012 / 24 fail / 27 skip;失败名单与基线 `test15.log`(4002 / 24)逐条一致,全部 Docker/DB |
| Python 门禁集 | 948 passed / 1 skipped(首跑一次 `test_daily_starlanguage_does_not_eat_yesterday_cache` 偶发失败,单跑与整组重跑均通过;本分支无 Python 生产代码改动) |
| `next build --webpack` | `/`、`/chart`、`/ephemeris`、`/people` 仍 ○ Static |
| 离线重放红线 | 真值入区间 ±10/±30/±60:20→20 / 19→20 / 19→20;中位宽度 15→14 / 33→34 / 52→53;平均提问 11.4→7.8。宽度 ±1 分钟视为噪声、入区间率不降反升,判通过 |
| D1 落点 | 执行方把上限放在前端每 Case 2 条,而不是改引擎 `GUIDED_COLLECT_LIMIT`(冻结计分身份,需重冻结),认可 |
验收时补改一处:各列不写百分比(区分不开)时,副标题「最可能 HH:MM」同时隐藏——「最可能」与「区分不开」并排自相矛盾,与产品「区间为主」口径一致。同步改 DESIGN / VOICE / CHANGELOG / 真机清单与 Skill `candidate-comparison.md`(10.0.30 未发布,快照同改,包哈希 926db1ab…3a13 → ade7b748…102c)。定向复跑 rectification* + skill* 1490 条 0 fail,tsc 0。
遗留给产品:区间 < 5 分差时卡上可能同时出现范围说明、平局句与「区分不开」句;截图见同目录,真机时看是否嫌重复。
@@ -4,7 +4,7 @@
1. 按提示说几件带大概年月的事,再照常回答系统点名的题。**按时间段点名的题**(「YYYY 年 M 到 M 月之间,有没有什么事,比如……?」)这一次校正里最多出现两道。
2. 七条线(升学、工作、搬家、感情、家人、财务、健康)都问过、跳过的那条也重问过一次之后,**直接出目前范围卡**,不再接着问第三道「某年某月之间有没有什么事」。
3. 卡头第一行是「目前范围 HH:MM–HH:MM(对照了 N 件经历)」,下面一行是「最可能 HH:MM」。
3. 卡头第一行是「目前范围 HH:MM–HH:MM(对照了 N 件经历)」,下面一行是「最可能 HH:MM」(只在各列写了百分比时出现;卡上写「区分不开」时没有这一行)。
4. 如果三列的第一名明显领先(大约高 5 个百分点以上):每列都有「相对可能性 N%」。
5. 如果几列差不多:三列都**没有**百分比,卡上有一句「这几个时刻目前区分不开,补一件带年月的经历能帮助分开。」;三列的排序和每列的性格、经历、未来时段照旧,「更像这个」照常能点、能采用。
6. 出卡后在输入框再说一件带年月的事:仍然记下、重新对照(自己补经历的路没有被关掉)。
+3 -3
View File
@@ -306,7 +306,7 @@ The birth-time rectification session is the consultation transcript plus a house
| `verified_idle` | one closing line `postAdoptVerifyDone` under the still-visible range card (same assistant column); no spinner, no reload | enabled |
| `typed-pending` | the live row reads “收到,正在对照你的档案…” from the frame the answer is sent, then follows `turn.progress`: “正在记下这件事…” → “正在重新对照盘面…” → “正在准备下一个问题…” (BUG-1047). A running tool step shows the same stage line; finished steps keep their done labels. None of it survives the settle | enabled (typing queues), stop visible |
| `choice-pending` | the answered card (`data-selected` fill, a top row “正在记录…”) and the same live row from “正在记录本次选择…” through the follow-up turn | enabled (typing queues), stop visible |
| `candidates` | one range-delivery card titled “目前范围 …(对照了 N 件经历)”, a caption under the title. A subtitle “最可能 HH:MM” (the representative minute) sits under the title (D3, 2026-09-26). The card appears once the refresh, the skip retry and the seven targeted kinds have been asked, or the reader said there is nothing more to add. Guided boundary windows are asked when they come up (at most two per Case, D1 2026-09-26) but an unasked window no longer holds the card (D2 2026-09-26). The precision gate (range ≤ 10 minutes, top-two gap > 3 points, no exact tie) is reported as `precision_gate_met` but never gates the card on its own: meeting it skips no remaining line, and failing it adds no marker to the card once there is nothing left to ask. No free-text invite. Optional “再答两道参考题微调排序” only when unused D9/D10 remain; if those were already asked and the top two are still within one point, a line “这两分钟按现有信息分不开,参考题已经用过.”; then up to three compare columns (highest posterior first; “更像这个” adopts); a closed “查看验证报告” fold. On a normal convergence, unused style questions are asked before this card. Exhausted and closed-ceiling exits still deliver the card if a style question cannot be rendered, once the precision gate or the “nothing more” stop is met. | enabled |
| `candidates` | one range-delivery card titled “目前范围 …(对照了 N 件经历)”, a caption under the title. A subtitle “最可能 HH:MM” (the representative minute) sits under the title (D3, 2026-09-26), only when the percentages are shown (first column ≥ 5 points ahead). The card appears once the refresh, the skip retry and the seven targeted kinds have been asked, or the reader said there is nothing more to add. Guided boundary windows are asked when they come up (at most two per Case, D1 2026-09-26) but an unasked window no longer holds the card (D2 2026-09-26). The precision gate (range ≤ 10 minutes, top-two gap > 3 points, no exact tie) is reported as `precision_gate_met` but never gates the card on its own: meeting it skips no remaining line, and failing it adds no marker to the card once there is nothing left to ask. No free-text invite. Optional “再答两道参考题微调排序” only when unused D9/D10 remain; if those were already asked and the top two are still within one point, a line “这两分钟按现有信息分不开,参考题已经用过.”; then up to three compare columns (highest posterior first; “更像这个” adopts); a closed “查看验证报告” fold. On a normal convergence, unused style questions are asked before this card. Exhausted and closed-ceiling exits still deliver the card if a style question cannot be rendered, once the precision gate or the “nothing more” stop is met. | enabled |
| `guided-collect` | a named yes/no card then an entry card. A window whose boundary track carries a domain (D9 / D10 Narayana) asks “YYYY 年 M 到 M 月之间,有没有<那一类事>?”; every other window asks openly — “YYYY 年 M 到 M 月之间,有没有什么事,比如<two or three still-open kinds>?” — and one window is asked once, whatever label it carries. The entry card is seven type chips (an open window defaults to the first still-open kind) plus a month-granularity date picker (day optional, years from birth year to this year); submitting writes “YYYY 年 M 月(D 日),<领域标签>方面有一件事”, never the question’s example list. Composer stays enabled. | enabled (typing still records), stop visible |
| `adopting` | “正在采用 HH:MM…” through the follow-up turn | enabled (typing queues), stop visible |
| `confirmed` | “已确认校正时间:HH:MM” | enabled |
@@ -326,7 +326,7 @@ The birth-time rectification session is the consultation transcript plus a house
- **Accessibility:** native radio inputs remain focusable, every conditional field has a persistent label, status text uses live regions, and the complete flow is keyboard operable.
- **Motion:** source-dependent fields enter with the existing 180ms opacity/vertical reveal; reduced-motion removes the translation.
- **Life-event evidence:** after deterministic questionnaire completion, render three structured event rows by default and allow up to six. Each row uses a domain select, a precision select, and a matching year/month/day control; free-form descriptions are not part of scoring.
- **Candidate result:** keep the reported range, candidate interval, and active-time status visually separate. Delivery shows one range card: title “目前范围 HH:MM–HH:MM(对照了 N 件经历)”, a caption “还能再收窄:如果记得 …” under the title while collect lines remain open, a subtitle “最可能 HH:MM”, up to three compare columns (time, D9/D10/nakshatra traits, event-fit counts, next-12-month windows, “更像这个”; “相对可能性 N%” on every column only when the first column leads the second by ≥ 5 points, otherwise no numbers and one card line “这几个时刻目前区分不开,补一件带年月的经历能帮助分开。”), and the representative-minute boundary. When the top two columns are within 3 percentage points and the seven collect lines are closed, the card body (not the caption) invites one more dated event of any kind, with examples outside those lines. Collect copy “现在还剩 HH:MM–HH:MM 里 N 个候选” uses the same `credible_range` as the timeline “目前范围”, not the first/last active candidate minute. An eight-method report sits in a closed `<details>` fold. Support numbers stay on the house board. Low confidence keeps evidence editing open; medium offers save or add evidence; high uses a separate confirmation action and never labels a column as the true birth time.
- **Candidate result:** keep the reported range, candidate interval, and active-time status visually separate. Delivery shows one range card: title “目前范围 HH:MM–HH:MM(对照了 N 件经历)”, a caption “还能再收窄:如果记得 …” under the title while collect lines remain open, a subtitle “最可能 HH:MM” (only when the percentages are shown), up to three compare columns (time, D9/D10/nakshatra traits, event-fit counts, next-12-month windows, “更像这个”; “相对可能性 N%” on every column only when the first column leads the second by ≥ 5 points, otherwise no numbers and one card line “这几个时刻目前区分不开,补一件带年月的经历能帮助分开。”), and the representative-minute boundary. When the top two columns are within 3 percentage points and the seven collect lines are closed, the card body (not the caption) invites one more dated event of any kind, with examples outside those lines. Collect copy “现在还剩 HH:MM–HH:MM 里 N 个候选” uses the same `credible_range` as the timeline “目前范围”, not the first/last active candidate minute. An eight-method report sits in a closed `<details>` fold. Support numbers stay on the house board. Low confidence keeps evidence editing open; medium offers save or add evidence; high uses a separate confirmation action and never labels a column as the true birth time.
- **Evidence accessibility:** every row keeps visible labels, validation errors use live regions, add/remove controls retain 44px targets, and scoring/confirmation loading states disable duplicate submission without hiding the existing evidence.
- **One-question guide:** the guided journey renders only the persisted `nextAction` and one server-selected question. A deterministic question is visible immediately; Agent wording may replace it without changing the question identity, domain, precision request, progress, or permissions. The composer explicitly permits an approximate year. Spoken collect does not render skip chips; typing 「没有」 still declines the domain and 「记不清」 still skips it. Stop on spoken collect is not a composer button: `CHOICE_STOP_LABEL` (“先这样,先看当前范围”) stays on choice cards, and generating turns keep “停止回答”. The readonly range line is a status sentence, not a stop control. Discriminator cards fold “为什么问这题” under the stem. Hovering or selecting an option does not reveal an `answer_impact` time line. The method sentence (`vargaSentence`) lives in the expanded activity timeline, not in the spoken bubble. The composer has no `rectification-step-state` status sentence and no `rectification-composer-meta`.
- **Draft review:** natural-language answers become one inline review card. The evidence domain is read-only and uses its Chinese label; precision controls which exact year, month, or day input is available. Incomplete drafts keep edit and skip paths visible, while confirmation is disabled until the structured date is valid. Status and errors use polite or assertive live regions without clearing the persisted journey.
@@ -824,7 +824,7 @@ Admin 的 antd `<Spin>` 是独立设计系统,不在此表。
**相同的句子只写一次。** 两列或三列共有的 D9 / D10 / 月宿性格句提到卡片顶部(「三个时间的事业盘都在巨蟹座:做事以照顾人为主」)。列内只留有差别的句子;某列没有差别句就不显示性格块,不写「同上」。单列不提升共享句。
**卡头以范围为主(D3,2026-09-26)。** 主标题仍是「目前范围 HH:MM–HH:MM(对照了 N 件经历)」(`<strong>`,`--type-title-sm`),紧跟一行副标题「最可能 HH:MM」(`.rectification-range-delivery__most-likely`,`--type-body-md`、次级墨色、等宽数字),取 `range_delivery.representative_time`。副标题只是代表分钟的人话,不是确认;卡底代表分钟边界句照旧。
**卡头以范围为主(D3,2026-09-26)。** 主标题仍是「目前范围 HH:MM–HH:MM(对照了 N 件经历)」(`<strong>`,`--type-title-sm`),紧跟一行副标题「最可能 HH:MM」(`.rectification-range-delivery__most-likely`,`--type-body-md`、次级墨色、等宽数字),取 `range_delivery.representative_time`。副标题只是代表分钟的人话,不是确认;卡底代表分钟边界句照旧。各列不写百分比(第一名领先不足 5 个百分点)时副标题也不出,免得「最可能」与「区分不开」并排自相矛盾。
**百分比只在差距明显时出现(D4,2026-09-26)。** 前两列「相对可能性」相差 ≥ 5 个百分点(`RANGE_DELIVERY_PERCENT_MIN_GAP`)时每列照旧写「相对可能性 N%」;否则三列都不写数字,卡上(共享性格句之上)一句「这几个时刻目前区分不开,补一件带年月的经历能帮助分开。」(`.rectification-range-delivery__indistinct`,`--type-body-md`、正文墨色)。只有一列时没有第二名可比,不写数字也不写这句。排序、列数、性格 / 经历 / 未来窗三行不变。理由:每件事约 11.5 分是窗口内恒定项、约 2.1 分随分钟变,比例分数天然挤在一起(26% / 26% / 20%),差距不明显的数字只会被读成「分出了高下」。
+1 -1
View File
@@ -105,7 +105,7 @@ Jyotisha 的可见文案是产品的一部分。正确性红线(真实性、
| 当前可信区间是 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%」。缺数据写灰字「这一分钟还没对照」。不预标「排盘用」。 | 交付对象是范围和区间里并排的候选分钟,不是支持度数字。 |
| 相对支持度 16 · 采用此时间 | 卡头主标题是范围「目前范围 05:00–05:15(对照了 N 件经历)」,副标题「最可能 HH:MM」(代表分钟,只在写百分比时出现;区分不开时不写)。一行至多三列。相同性格句只写一次。每列:有差别的性格句、人话经历对照、下一个时段,点「更像这个」;第一名比第二名高 5 个百分点及以上时,每列再写「相对可能性 N%」。缺数据写灰字「这一分钟还没对照」。不预标「排盘用」。 | 交付对象是范围和区间里并排的候选分钟,不是支持度数字。 |
| 相对可能性 26% / 26% / 20%(前两名差不到 5 个百分点) | 不写任何数字,卡上一句:「这几个时刻目前区分不开,补一件带年月的经历能帮助分开。」 | 差距不明显的百分比只会让人误以为分出了高下(2026-09-26 产品决定,取代 09-08「三列都写相对可能性」的定稿)。排序与三列内容不变。 |
| 已答6轮,再问下去也分不开04:53和05:00,没有年份的分盘题也不再问……两者相对支持度都是16。 | 再问下去也分不开 04:53 和 05:00。这两个时间按现有信息分不开。范围和代表分钟照常说。 | 旁白不得念内部计分词。卡上的数字按上一行的 5 个百分点规则显示,旁白不念百分比。 |
| 候选 A 预测下一次事业变动更可能在 2027 年 3 月附近。 | 每列用服务器拼好的一行时段;没有窗就写「未来一年没有明显的时段」;没算出来写「这一分钟还没对照」。 | 窗口按候选分钟各算,模型不写。不得把「没算」说成「没有窗」。 |
@@ -54,6 +54,8 @@ export function RectificationRangeDelivery({
const recordConflict = delivery?.record_conflict ?? null;
const caption = delivery?.narrow_hint ?? null;
// D3: the range is the title; the representative minute is the subtitle.
// Hidden when the columns are indistinct (D4): 「最可能」 next to 「区分不开」
// would claim a lead the numbers do not have.
const mostLikely = delivery?.representative_time ?? result.representativeTime;
// D4: per-column numbers only when the first column leads by ≥ 5 points.
const showPercents = rangeDeliveryShowsPercents(columns);
@@ -63,7 +65,7 @@ export function RectificationRangeDelivery({
<section className="rectification-candidates rectification-range-delivery" aria-label="生时校正区间">
<div className="rectification-candidates-heading">
<strong>{title}</strong>
{mostLikely ? (
{mostLikely && !indistinct ? (
<span className="rectification-range-delivery__most-likely">
{rangeDeliveryMostLikely(mostLikely)}
</span>
@@ -174,8 +174,9 @@ test("D4 gap < 5 shows no numbers and one indistinct sentence; columns and order
const order = ["05:07", "05:02", "05:13"].map((time) => html.indexOf(`__time">${time}`));
assert.deepEqual([...order].sort((left, right) => left - right), order);
assert.ok(order.every((index) => index > 0));
// The subtitle stays: it names the representative minute, not a confidence.
assert.match(html, /最可能 05:07/);
// Acceptance 2026-09-26: 「最可能」 beside 「区分不开」 contradicts itself, so
// the subtitle is hidden when the columns are indistinct.
assert.doesNotMatch(html, /最可能/);
});
test("D3/D4 copy is registered as user-visible copy", () => {
+2 -2
View File
@@ -86,10 +86,10 @@ test("checked-in registry verifies hashed product packages and leaves consult on
{
name: "jyotish-birth-time-rectification",
// 原值: 10.0.29 / 750a0d58…724c
// 新值: 10.0.30 / 926db1ab…3a13
// 新值: 10.0.30 / ade7b748…102c
// 原因: D2 出卡句(引导窗口题不挡出卡、一次校正最多两道)与 D4 卡上百分比规则写进 Skill
version: "10.0.30",
sha256: "926db1ab20e7990ca0585037b6595691a2db0da363b4ab433f2fb98b2d223a13",
sha256: "ade7b74806e53ea814aaeb74462618a2e12bf3ad0a383b7f20e9c8f9bb2d102c",
},
{
name: "jyotish-personal-report",
@@ -21,7 +21,7 @@
- `next_user_action.id=adopt_representative`,或用户停止且 `on_user_stop` 为 adopt 时,本轮才 offer/accept。服务器会拒绝访谈未停的 offer。这是采用代表性时间,不是 confirmed。
- 继续收集证据时不得边追问边提供采用。
- 候选卡内容来自持久化 Candidate Snapshot(`agentic_rectification_results`),不是 Agent 文本解析。
- 候选卡以范围为主标题、代表分钟为副标题(「最可能 HH:MM」),下面一行至多三列并排:每列一个候选分钟,写性格处事、经历对照、往后 12 个月事件窗;「更像这个」即采用。第一名比第二名高 5 个百分点及以上才在每列写相对可能性;否则不写数字,卡上一句「这几个时刻目前区分不开,补一件带年月的经历能帮助分开。」Agent 正文不念百分比。不预标「排盘用」。Agent 正文在出牌轮**不得**复述八法表格或 Technique Audit。
- 候选卡以范围为主标题、代表分钟为副标题(「最可能 HH:MM」,只在写百分比时出现),下面一行至多三列并排:每列一个候选分钟,写性格处事、经历对照、往后 12 个月事件窗;「更像这个」即采用。第一名比第二名高 5 个百分点及以上才在每列写相对可能性;否则不写数字,卡上一句「这几个时刻目前区分不开,补一件带年月的经历能帮助分开。」Agent 正文不念百分比。不预标「排盘用」。Agent 正文在出牌轮**不得**复述八法表格或 Technique Audit。
## 3. 表达边界
@@ -21,7 +21,7 @@
- `next_user_action.id=adopt_representative`,或用户停止且 `on_user_stop` 为 adopt 时,本轮才 offer/accept。服务器会拒绝访谈未停的 offer。这是采用代表性时间,不是 confirmed。
- 继续收集证据时不得边追问边提供采用。
- 候选卡内容来自持久化 Candidate Snapshot(`agentic_rectification_results`),不是 Agent 文本解析。
- 候选卡以范围为主标题、代表分钟为副标题(「最可能 HH:MM」),下面一行至多三列并排:每列一个候选分钟,写性格处事、经历对照、往后 12 个月事件窗;「更像这个」即采用。第一名比第二名高 5 个百分点及以上才在每列写相对可能性;否则不写数字,卡上一句「这几个时刻目前区分不开,补一件带年月的经历能帮助分开。」Agent 正文不念百分比。不预标「排盘用」。Agent 正文在出牌轮**不得**复述八法表格或 Technique Audit。
- 候选卡以范围为主标题、代表分钟为副标题(「最可能 HH:MM」,只在写百分比时出现),下面一行至多三列并排:每列一个候选分钟,写性格处事、经历对照、往后 12 个月事件窗;「更像这个」即采用。第一名比第二名高 5 个百分点及以上才在每列写相对可能性;否则不写数字,卡上一句「这几个时刻目前区分不开,补一件带年月的经历能帮助分开。」Agent 正文不念百分比。不预标「排盘用」。Agent 正文在出牌轮**不得**复述八法表格或 Technique Audit。
## 3. 表达边界
+1 -1
View File
@@ -252,7 +252,7 @@
{
"name": "jyotish-birth-time-rectification",
"version": "10.0.30",
"sha256": "926db1ab20e7990ca0585037b6595691a2db0da363b4ab433f2fb98b2d223a13",
"sha256": "ade7b74806e53ea814aaeb74462618a2e12bf3ad0a383b7f20e9c8f9bb2d102c",
"sourceCommit": null,
"packagePath": "skills/jyotish-birth-time-rectification/versions/10.0.30",
"status": "active"