From b14c5486ef704fbf41f3b42d2557babc82abeccc Mon Sep 17 00:00:00 2001 From: liwenhao2 Date: Wed, 16 Sep 2026 13:39:15 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A9=BA=E6=A6=82=E6=8B=AC=E5=9B=9E=E6=98=BE?= =?UTF-8?q?=E6=8E=A2=E6=B5=8B=E4=BF=AE=E5=A4=8D:extractJson=E6=94=B6?= =?UTF-8?q?=E7=B4=A7=E7=A9=BA=E5=80=BC=E5=88=A4null=E5=90=8E,=E6=97=A7'par?= =?UTF-8?q?sed!=3Dnull'=E5=BC=8FemptyEcho=E6=8E=A2=E6=B5=8B=E6=B0=B8?= =?UTF-8?q?=E8=BF=9C=E8=BF=9B=E4=B8=8D=E5=8E=BB(=E9=87=8D=E8=AF=95?= =?UTF-8?q?=E6=8F=90=E7=A4=BA=E8=AF=8D=E8=AF=AF=E6=A0=87'=E4=B8=8D?= =?UTF-8?q?=E6=98=AF=E5=90=88=E6=B3=95JSON');=E6=94=B9=E5=8E=9F=E6=96=87?= =?UTF-8?q?=E6=AD=A3=E5=88=99=E6=8E=A2=E6=B5=8B{"=E6=A6=82=E6=8B=AC":""},?= =?UTF-8?q?=E9=87=8D=E8=AF=95=E7=94=A8=E5=87=86=E7=A1=AE=E6=8E=AA=E8=BE=9E?= =?UTF-8?q?'=E7=A9=BA=E6=A6=82=E6=8B=AC'=E5=B9=B6=E9=99=84=E5=BC=BA?= =?UTF-8?q?=E7=BA=A6=E6=9D=9F;=E7=8E=B0=E5=9C=BAraw(9)=3D=E7=A9=BAschema?= =?UTF-8?q?=E5=9B=9E=E6=98=BE(=E9=94=AE=E5=90=8D=E6=AD=A3=E7=A1=AE?= =?UTF-8?q?=E6=A0=BC=E5=BC=8F=E5=90=88=E6=B3=95,=E7=BA=AFEMPTY=E8=BF=9BEMP?= =?UTF-8?q?TY=E5=87=BA)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/k2fsa/sherpa/onnx/SummarizePipeline.kt | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/k2fsa/sherpa/onnx/SummarizePipeline.kt b/app/src/main/java/com/k2fsa/sherpa/onnx/SummarizePipeline.kt index 62f758e..238c1cb 100644 --- a/app/src/main/java/com/k2fsa/sherpa/onnx/SummarizePipeline.kt +++ b/app/src/main/java/com/k2fsa/sherpa/onnx/SummarizePipeline.kt @@ -396,10 +396,12 @@ class SummarizePipeline( maxNewTokens = 900, temperature = 0f, ) var parsed = extractJson(out) - // 空笔记视同失败:小模型吃不透指令时会把输入的空模板原样复读 - // (EMPTY 进 EMPTY 出)。首轮空结果带一次强约束重试再判。 - val emptyEcho = parsed != null && idx == 0 && - resumeNotes == null && notesEntriesEmpty(parsed) + // 空概括回显(EMPTY 进 EMPTY 出):小模型(尤其 MiniCPM5)会把提示词里 + // 的空 schema 原样抄回。2026-09-16 现场 raw(9)={"概括":""}。 + // 注意:extractJson 对空值已判 null,"parsed!=null"式旧探测永远 + // 进不去——改为对原文正则探测,让重试提示词用准确措辞 + val emptyEcho = parsed == null && idx == 0 && resumeNotes == null && + Regex("\"概括\"\\s*:\\s*\"\\s*\"").containsMatchIn(out) if (parsed == null || emptyEcho) { // 一次修复重试:把畸形/空洞输出递回去(仍失败保留旧笔记,计 failed) if (listener.isCancelled()) throw SummarizeCancelledException()