# 进度 · TypeSafe Jev 意图分类离线对照(2026-09-19) - 分支:`codex/rectification-jev-intent-classifier-research-20260919` - 基线:`origin/staging` @ `d9722d56` - 任务书:`docs/tasks/TASK-rectification-jev-intent-classifier-research-20260919.md` - 报告:`docs/research/jev_intent_2026_09_19.md` / `.json` - 未改 `turn-intent-classifier.ts`、`route.ts`、`mastra/model.ts`、模型目录 ## 样本 | 来源 | n | sha256 | 备注 | | --- | ---: | --- | --- | | A `synthetic.jsonl` | 10 | `79d53a958b3b42ed18c79e3bbcff4b31deb22b65eedcd89b39326a7fefc9b0e8` | 测试文件没有 10 条带期望输出的 `userMessage` 夹具;用 `SHUFFLED_CHOICE` + 采集 prompt + 测试里两句原文 | | B 真机会话 | 0 | — | 无 staging 库凭据。让步 1:代表性检验只报数。本地约定 `G:/Ferti/Jyotisha/.cache/jev_intent/source_b.jsonl` | | C `simulated.jsonl` | 900 | `a8611e75bf56024fa984fb204d34a5e16405f18b3eaa5a3bee91f96e43918bf7` | 点选题 400 / 采集 400 / 无焦点 100,配额偏差 0 | | 争议表 `disputed.jsonl` | 113 | `b4aed8567bd6b3fdd5cc98c73d9139197d62a96120a0ee29f474b8f08c050def` | 争议率 8.5%(1328 次生成),< 15% 门槛 | - 问题池:20 例 holdout 走 `discriminating_event_probes`,点选题 103 条(4 例 0 probes:tiger_woods / picasso / freud / albert_brooks);采集题用 `USER_COLLECT_QUESTION` / retry / `TARGETED_YEAR_PROMPT`。 - 生成器:`agent-template-v1`(本机无会话模型凭据,不走线上贵模型;标签先定再写回复)。 - 复核器:`agent-rule-v1`(不同规则、看不到目标标签)。 - 长度(来源 C):P25=3 / 中位=11 / P75=25(来源 B 不足,用兜底 P25≤6 / 中位≤15 / P75≤40)。 - 真值在 T2 前固化,跑完未改标签。 ## T2 跑次 - Jev:`jev-1.13.0`,`POST /v1/systemone`,SDK `typesafe-sdk 0.7.0`,三题同一请求。 - 时间:2026-09-19,来源 A+C 各 2 次;unavailable = 0。 - 现行对照:`deepseek-flash`(官方 Chat Completions,thinking 关)套生产分类器提示词。来源 C 分层随机 33%(seed 20260919)= 133+133+33,来源 A 全 10 条;第一次 309,第二次分层 1/3。unavailable = 0。**不是线上会话模型。** 来源 B 仍为 0。 ## 指标(来源 C) | 层 | n | intent | answer_class | dated | 高置信错误 | 低置信覆盖 | 低置信召回 | no/unsure | 自洽率 | 中位 ms | P95 ms | 次均 tok | | --- | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | | 点选题 | 400 | 88.0% | **65.0%** | 100% | 4.2% | 12.5% | 34.1% | 5 | 98.5% | 923 | 1344 | 1122 | | 采集题 | 400 | 90.5% | 83.6% | 97.0% | **7.0%** | 13.5% | **34.2%** | 22 | 98.0% | 901 | 1026 | 987 | | 无焦点 | 100 | 100% | — | 100% | 0.0% | 4.0% | — | 0 | 100% | 923 | 1018 | 923 | 来源 A n=10:intent 90.0%,answer_class 85.7%,高置信错误 0。 Jev 两次合计输入约 1.85M tok,按 $0.042/Mtok ≈ $0.08。 ### 同一样本 DeepSeek Flash vs Jev(C 分层 33%) | 层 | n | Jev intent | Flash intent | Flash answer_class | 差 | 门槛(Flash−3pp) | 相对 | | --- | ---: | ---: | ---: | ---: | ---: | ---: | --- | | 点选题 | 133 | 89.5% | 92.5% | 83.0% | −3.0pp | 89.5% | 过 | | 采集题 | 133 | 91.0% | 95.5% | 95.8% | −4.5pp | 92.5% | **未过** | | 无焦点 | 33 | 100% | 97.0% | — | +3.0pp | 94.0% | 过 | Flash 自洽率:点选题 100%、采集 95.5%、无焦点 100%。中位延迟 611–705 ms。 ## 结论 **不可接。** 绝对门槛未过:高置信错误 7.0% > 3%;低置信召回 ≈34% < 60%;点选题 `answer_class` 65%。相对门槛在采集题上也未过(91.0% < 92.5%)。Flash 在点选题 `answer_class`(83%)和采集题(95.8%)都明显高于 Jev。中文口语和字面理解是 Jev 主错因。 若接:不接。继续用会话贵模型。只允许 (b) 影子双跑记日志;不得按 confidence 写库。 来源 B 仍为 0,代表性检验只报数。 ## 偏离 1. 来源 B = 0:无 staging 库。按让步 1。 2. 来源 A:测试文件并无 10 条 `(userMessage, 期望输出)` 夹具,改从该文件的 schema + 两句真实 `userMessage` 构造。 3. 来源 C 生成未走会话贵模型(无凭据)。产品口径「Agent 模拟造语料」;生成/复核模型名写进报告。 4. 现行对照用 `deepseek-flash` 套同一提示词,不是数据库里的会话默认模型。 5. Windows 上 worktree `.venv` 是 25 字节 Linux symlink。`typesafe-sdk` 装进本机 Anaconda 3.11.7,未改 `requirements*.txt`。 6. 未写 BUG_HISTORY(本单不是 Bug)。 ## 验证 - `python -m pytest tests/test_jev_intent_research.py`:8 passed - 线上分类器文件未改 ## 修复轮(2026-09-19,`codex/rectification-jev-intent-research-fix-20260919`) 任务书:`TASK-rectification-jev-intent-classifier-research-fix-20260919.md`。未改线上分类器。未立 BUG。 ### 来源 C 重造 - 生成 / 复核模型:`deepseek-flash`(temperature 0.85 / 0.0),prompt_version `gen-review-v3`。不是线上会话模型。 - 问题池复用 `question_pool.json`(103 道点选题),未重建引擎池。 - 生成 1261,通过复核 1225,选出 900;争议 36,争议率 **2.85%**(collect 33 / choice 3;answer_current_focus 33 / unclear 3)。未回退模板。 - 提示修改:冒烟 v2 有 `missing_date` 拒稿,v3 强制四位年份并在重试时写明缺年/多年原因。只改了一轮提示。 - 三项统计:去重后唯一 825(≥810),单条重复最多 5;人设每种 ≥48(点选+采集),惜字如金+方言/网络语 180/900=20%;长度 P25=16 / 中位=20 / P75=24(目标 8–16 / 15–27 / 20–36)。 - 三层 400 / 400 / 100,配额偏差 ≤4.5%。 - sha256:synthetic `79d53a958b3b42ed18c79e3bbcff4b31deb22b65eedcd89b39326a7fefc9b0e8`;simulated `53f13012fdc8f3721335bbe2961edf8c506a2f705b62bd9d302fce83ce2ef88d`;disputed `e80c5cd69c521a099d743e4a4632ad6bc103c3b5a505f5b376a7c9cebedb7646`。 ### Token(分列) | 段 | 调用 | input tok | output tok | | --- | ---: | ---: | ---: | | 生成 DeepSeek Flash | 1389 | 553,685 | 18,677 | | 复核 DeepSeek Flash | 1318 | 700,669 | 29,296 | | Jev `jev-1.13.0` 两次(A+C 910×2 + B 157×2) | 2134 | 2,213,898 | 283,528(Jev 输出不计费) | | 对照 Flash 全量一次 + C 1/3 第二次 + B 一次 | 1366 | 676,080 | 30,260 | Jev 输入按 $0.042/Mtok ≈ $0.093。生成+复核+对照走 DeepSeek,不记 Jev 价。 ### 来源 B 157 条全部人工标注(点选 17 + 采集 107 + 无焦点 33),约 40 分钟。`runtime_intent` 未抄成 gold。Jev×2 + Flash×1 已跑。代表性:无焦点层 intent 差 17.2pp > 10pp。 ### 对照摘要 | 层 | Jev intent | Flash intent | 高置信错误 | 低置信召回 | Jev 自洽 | | --- | ---: | ---: | ---: | ---: | ---: | | 点选题 | 99.0% | 98.8% | 0.0% | 23.1% | 99.8% | | 采集题 | 92.2% | 97.5% | 2.8% | 45.5% | 98.0% | | 无焦点 | 96.0% | 94.0% | 1.0% | 25.0% | 100% | cache 样本 id 与 `simulated.jsonl` 一致(900/900)。unavailable = 0。 ### 结论 **缺数据**。无焦点层来源 B vs C 差 17.2pp;同时低置信召回未过 60%。不得上线。原「不可接」不沿用。 ### 验证 - `python -m pytest tests/test_jev_intent_research.py -q`:11 passed - 构建脚本无 `bank = {`;复核函数无 `re.search` 判标签 - 线上分类器文件未改 ## 修复轮 2(2026-09-19,`codex/rectification-jev-intent-research-fix2-20260919`) 任务书:`TASK-rectification-jev-intent-classifier-research-fix2-20260919.md`。**0 token**:从 `.cache/jev_intent/jev_runs_v2.json` 聚合已跑结果,未重造语料、未重跑模型。 补进报告的三组数(来源 B 157 条): | 范围 | n | Jev intent | 现行 Flash intent | Jev 高置信错误 | Jev 低置信召回 | Jev 自洽 | | --- | ---: | ---: | ---: | ---: | ---: | ---: | | 全集 | 157 | 91.1% | 89.2% | **6.4%** | 24.1% | 96.2% | | 点选 | 17 | 94.1% | 88.2% | 0.0% | 66.7% | 94.1% | | 采集 | 107 | 94.4% | 95.3% | 5.6% | 18.2% | 99.1% | | 无焦点 | 33 | 78.8% | **69.7%** | **12.1%** | 20.0% | 87.9% | 无焦点层 7 条 Jev 错全是 `unclear → answer_current_focus`。现行在无焦点上更低(69.7%),10 条错里 5 条同样是 `unclear → answer_current_focus`。说明 78.8% 主要是这 33 条难,不是单 Jev 不行。 采集层相对门槛改为「不可判(复核与对照同源)」。限制三节已写入报告。结论仍 **缺数据**,不上线。未立 BUG。 ## 关单(2026-09-19,产品拍板) fix2(`507ef959`)验收通过后产品拍板 **关单**:Jev 不接管校正意图分类、不影子双跑、不再造语料。09-15「分类只用贵模型」口径维持。依据:真人 157 条上 Jev 与线上 Flash 的 intent 准确率在样本量能解释的范围内(91.1% vs 89.2%),无焦点层两边同一错模式;挡住上线的是 Jev 置信度不可用(高置信错误全集 6.4% / 无焦点 12.1% > 3%,低置信召回 24%),再花 token 改不了置信度校准。