Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01N4f2nya58RoRu4yEmJgRGE
12 KiB
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-20261001695fd5ee(已含第一单,待验收、未上 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 test4,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 部署后由产品走。