Files
Jyotisha/docs/tasks/PROGRESS-consult-no-presupposition-backtest-20261001.md
T

12 KiB
Raw Blame History

PROGRESS · 普通对话去预设、示例清理、纠正追问、名人回测改动后(2026-10-02,三单之三)

  • 任务书:docs/tasks/TASK-consult-no-presupposition-and-backtest-20261001.md(origin/staging 最新版,含 D7 / T2b)
  • 执行:Claude fork 子代理(直接执行模式,产品授权);未推送
  • 分支 / worktree:codex/consult-no-presupposition-backtest-20261001 / .worktrees/consult-no-presupposition-backtest-20261001
  • 基线:第二单分支 codex/consult-affliction-reading-20261001 695fd5ee(已含第一单,待验收、未上 staging),合入 origin/staging(含回测基础设施 691ee440)无冲突 → 合并提交 585c7370。门禁基线数字在 585c7370 的独立检出 .worktrees/nopresup-baseline-585c7370 上实测。
  • BUG 编号:任务书预留 1167~1172;开工核对最大号 BUG-1163,按连续编号用 1164~1168(T1 1164、T2 1165、T3 1166、T4 1167、T2b 1168),1169 起未用。
  • 提交:955bab69(T1~T3、T2b、golden 重生成、脚本 --correction)、071a196d(脚本类型修正)、ec06d422(产品 10-02 年运 / 时运字数口径,见下)、文档提交。

环境

  • Node 22.14(/exec-daemon/node);frontend/node_modules 用 cp -al 硬链接自第一单 worktree(真目录,gitignore,未提交)。
  • 无 Docker:24 条数据库 / 部署套件失败,与基线逐条同名。
  • 模型 key 只从环境变量 DS_KEY 读,未写入任何文件、日志、提交。模型输出在 scratch/consult-biography-backtest/after-20261002/(gitignore),未提交。
  • Python 用本机 python3(无项目 .venv);本单未改根目录 scripts/** 与 tests/**,未跑快速门。

实现

任务 落点
T1(BUG-1164) consultation-thinking-plan.ts 新常量 NATAL_SECTION_RULE = 任务书 T1 定稿句,「不预设」一句按 D7 补「做哪类工作」;natalAnswerShapeBody 用它取代「这个人是什么样、你们怎么相处、事情会怎么走」,再接「每段的判断后在括号里给撑住它的盘上依据」。product-voice.ts ANSWER SHAPE 第 3 条原本是同一句的第二份写法,改为引用 ${NATAL_SECTION_RULE}(硬红线 1:规则文本只在一个文件)
T2(BUG-1165) 是非题 Good 例改「不是。(4 宫主落 10 宫)她把心力放在你的前途上……」;删「你这段婚姻更像先把已经在一起的关系过稳」;父母 Good 例重写为「受冲先说、用可能、段末请确认」,删「分量重」「标杆」「问爸爸的意见」;示例标签改为「括号里是依据的占位,只演示口气与结构,不是读法」。VOICE.md 同步,并加「示例只演示口气与结构」「用户纠正盘上判断」两条
T2b(BUG-1168) 事业 Good 例去「升职」、工作宫改 6 宫、依据改占位;Bad 例改「你更适合长期做一件事……把手上的事做稳」;追问轮 Good 例「这份工作还值得留……不是换公司」改「现在这条路还值得走……不是换方向」
T3(BUG-1166) FOLLOW_UP_CORRECTION_RULE = 定稿句,接在 followUpAnswerShapeInstruction 追问轮说明之后
T4 第 5 条(BUG-1167) golden 用真实引擎重生成(见下);脚本加 --correction <ids> / --correction-text:对列出名人的每份父母答案,在同会话追加一轮(历史 = 上一问一答,natalUserTurnShape 读历史走追问轮形状,followUpTurn: true);跑改动后全量并逐份评分,结果写进 docs/testing/consult-affliction-backtest-20261001.md「改动后」
测试 新文件 frontend/tests/consult-no-presupposition-20261001.test.ts(4 条)

git grep -n "逆行" frontend/src/mastra 'frontend/src/lib/consultation-*.ts' 结果 3 行,全是允许项:consultation-condensed-checklist.ts:63 第二单通用读法的禁令句「逆行不等于『反复、打回来』」;consultation-technique-audit.ts:60–61 技法名「逆行次限」「逆行太阳弧」。测试 T2 把这 3 行列成白名单。

golden 重新生成

旧 golden(691ee440)生成于第一单之前:graha_drishti、combust、yoga_domains、saturn_from_moon_house 都是 0 处,回测看不到第一单的新卡字段。用同一命令 JYOTISH_API_CHART_CACHE_TTL_SECONDS=0 PYTHONHASHSEED=0 python3 scripts/research/capture_consult_biography_backtest_golden.py 在本分支重跑(capture 复用的 trim() 已是第一单版本),两次输出逐字节相同,未手改。2,872,080 → 3,860,364 字节;四个字段分别 36 / 252 / 36 / 36 处。--dump-cards 确认 36 张卡都带 aspected_by、通用读法段。

产品决定(2026-10-02):年运 / 时运字数口径

协调方转达产品决定:年运、时运与事业 / 婚姻 / 财富同口径(契约 + 卡 ≤ 12,000,含清单 ≤ 18,000)。单独提交 ec06d422:删 CONSULT_READING_BUDGET_BLOCKED,两条 size 断言与第二单的钉住测试改口径(三栏见第二单进度记录「产品决定」段),BUG-1160 / 1161 改 resolved,BLOCKED.md 划掉。实测三张 golden 盘:年运 契约 + 卡 9,501~9,882、总量 12,598~12,979;时运 8,555~8,604、12,208~12,257。

对回测的影响:两次 --dump-cards(提交前 / 后)36 张模型可见工具结果逐字节相同;回测的四个领域不受这一提交影响,模型 72 份也没有自选年运 / 时运,所以改动后回测结果对最终分支有效。

改动的既有断言(原值 / 新值 / 原因)

文件 · 测试 原值 新值 原因
consultation-voice-contract.test.ts「the pinned Good examples…」 indexOf("Good (父母题首轮,按对象分段;盘上数据是示意)")、事业同 标签改为「括号里是依据的占位,只演示口气与结构,不是读法」,事业再加「不预设读者在上班、做哪类工作」 D3 / D7
同上 /(4 宫母亲宫的宫主水星落在 10 宫事业宫;代表母亲的月亮也在 10 宫)/ /(4 宫主落 10 宫;月亮在 10 宫)/,加锁爸爸段「可能不常在你身边…请确认」、不得有「分量重 / 标杆 / 爸爸的意见 / 靠做事」 D1 / D3
同上 /…说直接点:这份工作还值得留/ /…说直接点:现在这条路还值得走/ D7
同上 Bad 行 startsWith("Bad: 你更适合把已经积累的专业能力做成长期事业") startsWith("Bad: 你更适合长期做一件事"),理由不变;加全篇不得有「专业能力 / 升职 / 做深 / 现有工作 / 这份工作」 D7 / T2b
同文件「the voice answers the sentence asked…」 /不是。4 宫主水星逆行落 10 宫/ /不是。(4 宫主落 10 宫)她把心力放在你的前途上/,加 voice 不得有「逆行」「已经在一起的关系」 D2 / D3
年运 / 时运口径的 4 处 见第二单进度记录「产品决定」段 产品 10-02

交付门

项 基线 585c7370 本分支
tsc --noEmit 0 错 0 错
npm run lint 0 error / 126 warning 0 error / 126 warning
npm test(Node 22) 4,884(pass 4,819 / fail 24 / skip 41 / cancelled 0) 4,888(pass 4,823 / fail 24 / skip 41 / cancelled 0),新增 4 条、无删除;在 ec06d422 上实测
失败名单 24 条,数据库 / 部署类 与基线逐条同名
next build / ○ Static / ○ Static
首屏 gzip(index.html 引用 26 个脚本 gzip-9 求和,第二单同法) 555,694 B 555,694 B(0%)

名人回测改动后(摘要,详表见测试文档)

项 改动前 改动后 通过线 达到
严重冲突 39 / 72 19 / 72 — —
排查记录 5 份 × 2 10 / 10 冲突 奥巴马父母、乔布斯父母、泰勒婚姻 6 / 6 过;泰勒健康 2 份读反;泰勒事业 2 份严重 全过 否
新增 4 位严重冲突 20 / 32 7 / 32 ≤ 1 否
对照组误报 1 15(Bush、Zidane 与奥巴马婚姻 / 健康) 0 否
禁句 7 0 0 是
事业「专业 / 顾问 / 幕后」 16 / 18 16 / 18 ≤ 3 / 18 否
纠正追问(4 位 × 2) — 8 / 8 先认下、不辩护 无辩护 是

未达到的原因(判断,详见测试文档「读出来的东西」与 BUG-1164 / 1168):第二单「受冲信号两个及以上」门槛几乎每张盘都满足,T1 定稿句又要求此时第一句写这一面,误报从 1 涨到 15;事业题示例不是主因,可疑源头是通用读法的先写受冲与事业清单第 3 行「面试 / 正式职位」三层。定稿句、清单文本按任务书不得改意思,本单未改,交产品决定。

产品决定(2026-10-02,第二次)与第二轮回测

  • 决定:见第二单进度记录同名段与测试文档「改动后(第二轮)」。本单侧:NATAL_SECTION_RULE 去掉「包括这个人在不在你身边、近不近」与「第一句就写这一面…请用户确认」,改为引用 AFFLICTION_RANGE_RULE(定义在 consultation-thinking-plan.ts;放这里而不是清单文件,是因为 consult-condensed-checklist-20260927「only the consultation tool builds the methodology」规定清单文件只能被 consultation-methodology.ts 引用,反过来由清单文件 import 形状文件不违反它);FOLLOW_UP_CORRECTION_RULE 加「只说真正对得上的…盘本身分不出的直说」;父母 Good 例与 VOICE.md 改成「距离的迹象 + 范围 + 告诉我一句」。提交 066558a6。
  • 断言改动(原值 / 新值 / 原因,测试注释里同样写了):
文件 · 测试 原值 新值 原因
consult-no-presupposition-20261001 T1 SECTION_RULE_TEXT = 10-01 定稿句;要点含「在不在你身边」「请用户确认」 新增 AFFLICTION_RANGE_TEXT 全文锁定;要点改为「压力或距离的迹象」「给一个范围」「不替用户断定」「请用户说说实际情况」「全篇这类请求最多一处」 产品 10-02 改口径
同文件 T3 追问轮定稿句(10-01) 加「只说盘上真正对得上的那几条」「盘本身分不出这一点」「不把普通配置说成必然」 第一轮纠正追问反向全盘附和
同文件新增测试「2026-10-02 …」 — 通用读法第 3 条以规则开头;父母 / 婚姻 / 健康 / 事业清单的新要点;voice 不再有「他可能不常在你身边,或者有一段时间不在」 同上
consultation-voice-contract 父母 Good 例 /他可能不常在你身边[\s\S]*如果实际情况不是这样…/ /爸爸这条线有距离的迹象[\s\S]*现实里可能是…实际是哪一种,告诉我一句…/ 同上
  • 门禁(066558a6):tsc 0;lint 0 error / 126 warning;npm test 4,889(pass 4,824 / fail 24 / cancelled 0 / skip 41),失败名单与基线逐条同名;/ ○ Static;首屏 gzip 555,694 B(0%)。全量里 consult-single-pass-answer-20260927「answer clock cutting…」在一次并行定向跑中失败过一次,单跑两次全过、全量也过,属计时抖动,与本单无关。
  • 第二轮回测(详表见测试文档):严重冲突 19 → 15、误报 15 → 6(全部轻)、排查记录 5 份 8 / 10 过、新增 4 位严重 6 / 32、事业 12 / 18、禁句 0、纠正追问 8 / 8 且全部写出盘分不出的部分。修订后的四条通过线仍有三条未达到(排查记录 5 份、新增名人 ≤ 1、对照误报 0、事业 ≤ 3 中只有禁句达到)。

未做 / 交给后续

  • 受冲门槛(BUG-1164)与事业清单(BUG-1168)——需产品决定后另开单。
  • 纠正追问轮的「反向全盘附和」副作用(BUG-1166 副作用段)。
  • 年运 / 时运单领域轮放开后的效果未回测(回测领域不含年运 / 时运)。
  • 真机清单在测试文档末尾,待 staging 部署后由产品走。