# 已作废:语料为模板拼接 本文是 2026-09-19 首版对照报告的存档。来源 C 由 `agent-template-v1` 词库拼接、`agent-rule-v1` 正则复核,结论无效。请读同目录 `jev_intent_2026_09_19.md`。 # TypeSafe Jev 接管校正意图分类 · 离线对照(2026-09-19,v1 存档) - 任务:`docs/tasks/TASK-rectification-jev-intent-classifier-research-20260919.md` - 基线:`origin/staging` @ `d9722d56` - Jev 模型:`jev-1.13.0`(不用 jev-latest) - 生成器 / 复核:`agent-template-v1` / `agent-rule-v1` - 真值 sha256:synthetic `79d53a958b3b42ed18c79e3bbcff4b31deb22b65eedcd89b39326a7fefc9b0e8`;simulated `a8611e75bf56024fa984fb204d34a5e16405f18b3eaa5a3bee91f96e43918bf7`;disputed `b4aed8567bd6b3fdd5cc98c73d9139197d62a96120a0ee29f474b8f08c050def` - 来源 B:0 条(本地,不提交原文) ## 结论 **不可接**。来源 C 上 Jev 的绝对门槛未过:高置信错误率 7.0% > 3%;低置信召回 34.1% / 34.2% < 60%(错了却仍高置信);点选题 answer_class 准确率 65.0%(写库字段)。来源 B 不足 30 条,代表性检验只报数、不判定。 相对 −3pp(同一样本):choice Jev 89.5% vs 现行 92.5%(门槛 89.5%,过);collect Jev 91.0% vs 现行 95.5%(门槛 92.5%,未过);none Jev 100.0% vs 现行 97.0%(门槛 94.0%,过)。 若接:不接。现行分类器继续用会话选定的贵模型。若还要观察中文口语,只允许 (b) 影子双跑只记日志,不得按 confidence 写库。曲线上 θ=0.9 时高置信错误仍未清零。 ## T3 指标(Jev,来源 C) | 层 | n | intent | answer_class | dated | 高置信错误 | 低置信覆盖 | 低置信召回 | no/unsure 互判 | 自洽率 | 中位 ms | P95 ms | 次均 input tok | | --- | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | | choice | 400 | 88.0% | 65.0% | 100.0% | 4.2% | 12.5% | 34.1% | 5 | 98.5% | 923 | 1344 | 1122 | | collect | 400 | 90.5% | 83.6% | 97.0% | 7.0% | 13.5% | 34.2% | 22 | 98.0% | 901 | 1026 | 987 | | none | 100 | 100.0% | — | 100.0% | 0.0% | 4.0% | — | 0 | 100.0% | 923 | 1018 | 923 | 来源 A(测试夹具,n=10)intent 90.0%,answer_class 85.7%,高置信错误 0.0%。 ## 现行模型对照 模型:`deepseek-flash`。DeepSeek Flash 顶现行 `classifyRectificationTurnIntent` 提示词;来源 C 分层随机 33%(seed 20260919),来源 A 全量。不是线上会话模型。 | 层 | n | intent | answer_class | dated | 自洽率 | 中位 ms | | --- | ---: | ---: | ---: | ---: | ---: | ---: | | choice | 133 | 92.5% | 83.0% | 100.0% | 100.0% | 638 | | collect | 133 | 95.5% | 95.8% | 97.7% | 95.5% | 611 | | none | 33 | 97.0% | — | 100.0% | 100.0% | 705 | 同一样本上 Jev vs 现行(相对门槛用这一表): | 层 | n | Jev intent | 现行 intent | 差(Jev−现行) | 门槛现行−3pp | | --- | ---: | ---: | ---: | ---: | ---: | | choice | 133 | 89.5% | 92.5% | -3.0% | 89.5% | | collect | 133 | 91.0% | 95.5% | -4.5% | 92.5% | | none | 33 | 100.0% | 97.0% | 3.0% | 94.0% | ## 代表性检验(来源 B vs 来源 C) 来源 B 不足 30 条,代表性检验只报数、不判定。 ## 置信度–准确率曲线与 θ 推荐 θ = 0.9。点: ```json [ { "theta": 0.3, "jev_share": 0.9877777777777778, "fallback_share": 0.012222222222222223, "jev_acc": 0.8278965129358831, "high_conf_errors_in_used": 45 }, { "theta": 0.4, "jev_share": 0.9522222222222222, "fallback_share": 0.04777777777777778, "jev_acc": 0.8366394399066511, "high_conf_errors_in_used": 45 }, { "theta": 0.5, "jev_share": 0.88, "fallback_share": 0.12, "jev_acc": 0.8661616161616161, "high_conf_errors_in_used": 45 }, { "theta": 0.6, "jev_share": 0.8266666666666667, "fallback_share": 0.17333333333333334, "jev_acc": 0.8884408602150538, "high_conf_errors_in_used": 45 }, { "theta": 0.7, "jev_share": 0.7677777777777778, "fallback_share": 0.23222222222222222, "jev_acc": 0.9015918958031838, "high_conf_errors_in_used": 45 }, { "theta": 0.8, "jev_share": 0.6822222222222222, "fallback_share": 0.31777777777777777, "jev_acc": 0.9267100977198697, "high_conf_errors_in_used": 45 }, { "theta": 0.9, "jev_share": 0.5333333333333333, "fallback_share": 0.4666666666666667, "jev_acc": 0.9604166666666667, "high_conf_errors_in_used": 19 } ] ``` ## 错例画像(改写后,无法对应真实会话) ### cjk_colloquial - `C-choice-0005` / choice / 「嗯那会儿吧咋说呢就是那段」 gold={'answer_class': 'yes', 'has_new_dated_event': False, 'intent': 'answer_current_focus'} jev={'intent': 'unclear', 'answer_class': None, 'has_new_dated_event': False, 'confidence': 0.88} - `C-choice-0008` / choice / 「额这个嘛就那样发生了」 gold={'answer_class': 'yes', 'has_new_dated_event': False, 'intent': 'answer_current_focus'} jev={'intent': 'answer_current_focus', 'answer_class': 'unsure', 'has_new_dated_event': False, 'confidence': 0.47} - `C-choice-0016` / choice / 「emmm 感觉一般般就是那段」 gold={'answer_class': 'yes', 'has_new_dated_event': False, 'intent': 'answer_current_focus'} jev={'intent': 'unclear', 'answer_class': None, 'has_new_dated_event': False, 'confidence': 0.38} ### literal - `A10` / collect / 「2016年3月入学」 gold={'answer_class': 'yes', 'has_new_dated_event': False, 'intent': 'answer_current_focus'} jev={'intent': 'provide_new_evidence', 'answer_class': None, 'has_new_dated_event': True, 'confidence': 0.39} - `C-choice-0006` / choice / 「就是那段」 gold={'answer_class': 'yes', 'has_new_dated_event': False, 'intent': 'answer_current_focus'} jev={'intent': 'unclear', 'answer_class': None, 'has_new_dated_event': False, 'confidence': 0.9} - `C-choice-0023` / choice / 「就是那段,当时身边人也没特别提,我自己也没当回事,我想想啊就是那种说」 gold={'answer_class': 'yes', 'has_new_dated_event': False, 'intent': 'answer_current_focus'} jev={'intent': 'unclear', 'answer_class': None, 'has_new_dated_event': False, 'confidence': 0.64} ### other - `C-choice-0002` / choice / 「不是很能整明白就是那段」 gold={'answer_class': 'yes', 'has_new_dated_event': False, 'intent': 'answer_current_focus'} jev={'intent': 'answer_current_focus', 'answer_class': 'unsure', 'has_new_dated_event': False, 'confidence': 0.75} - `C-choice-0012` / choice / 「有的,别的先不说,就这一句你先记着,…特别提,我自己也没当回事」 gold={'answer_class': 'yes', 'has_new_dated_event': False, 'intent': 'answer_current_focus'} jev={'intent': 'answer_current_focus', 'answer_class': 'weak_yes', 'has_new_dated_event': False, 'confidence': 0.34} - `C-choice-0073` / choice / 「明显有过,现在回想起来细节对不上,只…。另外2023年9月分开」 gold={'answer_class': 'yes', 'has_new_dated_event': True, 'intent': 'answer_current_focus'} jev={'intent': 'answer_current_focus', 'answer_class': 'unsure', 'has_new_dated_event': True, 'confidence': 0.46} ## T1 判据对照 见 `scripts/research/jev_intent_questions.py` 的 `CRITERION_MAP`。丢掉的语义:生产提示里的「通常」「不要按 A/B/C/D 猜」「不要按关键词表」;结构不变量改由 `enforce_combo` 强制。 | 现行提示原句 | Jev 落点 | 丢失 | | --- | --- | --- | | 结合当前问题和动态选项判断用户是在回答当前问题、提供新的带时间经历、要求停止整个校正、询问结果,还是语义不清。 | intent Choice with five literal criteria, including unclear as the residual option. | — | | 若是在回答当前问题,answer_class 必须使用某个选项提供的 answer_class;否则 answer_class 必须为 null。 | answer_class Choice is built only from the live options; code nulls it when intent != answer_current_focus. | — | | has_new_dated_event 仅在用户同一句里除了回答当前问题之外,还提供了新的、带大概时间的经历时为 true。 | has_new_dated_event Noul true/false criteria, same split. | — | | 单纯的否定或单纯的选项回答必须为 false。 | Noul false: 单纯否定、单纯记不清不算新经历。 | — | | 若同一句话既回答了当前问题又补充了新的带时间经历,intent 仍为 answer_current_focus,has_new_dated_event 为 true。 | intent and Noul are separate questions; code keeps answer_current_focus when both fire. | Jev does not itself enforce this pair; code does. | | “当前方面没有、那段时间没有变化”通常是回答当前问题,不是停止整个流程。 | stop_rectification criterion: only an explicit stop of the whole flow. 当前方面没有 is answer_current_focus. | The hedge 通常 is dropped; the stop option is written as an exclusive literal. | | 只有用户明确要求停止整个校正时才分类为 stop_rectification。 | stop_rectification criterion, same literal. | — | | 不要按 A/B/C/D 的位置猜语义,只按选项 label 与 answer_class 判断。 | answer_class criteria keyed by answer_class, not by A/B/C/D. | The prohibition itself is not sent; Jev is not given A/B/C/D as the choice keys. | | 「没有、没发生过、这方面没什么」→ intent 为 answer_current_focus,answer_class 为 no。 | Collect answer_class criterion for no. | — | | 「记不清、不记得、忘了、想不起来、以后再说」→ answer_class 为 unsure。 | Collect answer_class criterion for unsure. | — | | 用户用带大概年月的经历直接回答当前采集题 → intent 为 answer_current_focus,answer_class 为 yes(程度较弱时为 weak_yes),has_new_dated_event 为 false。 | Collect yes/weak_yes criteria + Noul false for a dated answer that is the collect answer. | — | | 不要把「没有」或「记不清」标成 yes。 | Separate no and unsure criteria; yes requires a dated or affirmative answer. | The 'do not' wording is dropped. | | 若既没有否定、也没有说记不清、也没有给出带年月经历,intent 为 unclear,answer_class 必须为 null。 | unclear residual on intent Choice; code nulls answer_class. | — | | 若用户只在补充带时间的经历、并没有回答当前采集题,intent 为 provide_new_evidence。 | provide_new_evidence criterion. | — | | 若同一句话既明确否定当前采集题又补充了新的带时间经历,intent 仍为 answer_current_focus 且 answer_class 为 no,不要改成 provide_new_evidence。 | Code keeps no + Noul true. Jev intent/Noul are independent. | Jev may split this pair; code does not re-vote intent from the Noul. | | 不要按关键词表或正则猜测,只根据当前问题与用户这句话的语义分类。 | Not sent. Jev has no keyword table in the question. | The meta-instruction is dropped (Jev answers the written question, not the intended one). | ## 回退 任何上线方案必须保留回退到现行会话模型的路径。官方限流会动态调整。