From 80e840341b679d007a6723faceccbc3a6bc0a880 Mon Sep 17 00:00:00 2001 From: baiqing Date: Tue, 12 May 2026 18:18:05 +0800 Subject: [PATCH 1/3] =?UTF-8?q?fix(capsule):=20=E5=85=A5=E5=9C=BA=E5=87=BA?= =?UTF-8?q?=E5=9C=BA=E5=8A=A8=E7=94=BB=E5=8A=A0=E6=85=A2=E5=8A=A0=E6=9B=B2?= =?UTF-8?q?=E7=BA=BF=20+=20thinking=20=E5=AD=97=E5=8F=B7/=E9=A2=9C?= =?UTF-8?q?=E8=89=B2=E9=87=8D=E5=81=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 用户在 v1.3.1-5 装机后反馈: 1. 胶囊入场效果不错但希望"再慢一点 + 曲线感" 2. 出场动画"看不到" —— 240ms 太快感知不到 3. thinking 字体"不明显",希望字大 / 色亮 / 滑动清楚 改动: - @keyframes capsule-in: .26s → .38s,cubic-bezier(.16,.86,.32,1.18) spring overshoot 更强,"从中心冒出向左右生长"更弹更曲线 - @keyframes capsule-out: .24s → .36s,cubic-bezier(.55,.06,.68,.19) 慢启动 + 加速收尾的平滑曲线,让用户能看清"左右收缩 + 下移 + 淡出" - EXIT_ANIM_MS: 240 → 360 同步加长,避免定时器先于动画结束 unmount thinking 配色(用户拍板,参考 d 项): - fontSize 14 → 17(更大) - fontWeight 500 → 700(更粗) - 两侧底字:浅亮黄 #FCD34D (amber-300) - 中段扫光:深蓝 var(--ol-blue) (≈ #2563EB) - 浅黄暖底 + 深蓝扫光对比强烈但不刺眼,扫光滑过感清晰 --- openless-all/app/src/components/Capsule.tsx | 32 ++++++++++++--------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/openless-all/app/src/components/Capsule.tsx b/openless-all/app/src/components/Capsule.tsx index b1373af3..4e5dd076 100644 --- a/openless-all/app/src/components/Capsule.tsx +++ b/openless-all/app/src/components/Capsule.tsx @@ -195,19 +195,18 @@ function Pill({ os, state, level, insertedChars, message, onCancel, onConfirm }: > Date: Tue, 12 May 2026 18:27:33 +0800 Subject: [PATCH 2/3] =?UTF-8?q?fix:=20LocalAsr=20=E7=81=B0=E6=98=BE?= =?UTF-8?q?=E5=8E=BB=20banner=20+=20=E5=8D=83=E9=97=AE3=20=E5=8A=A0?= =?UTF-8?q?=E5=AE=9E=E9=AA=8C=E6=80=A7=E6=A0=87=E7=AD=BE=20+=20polish=20?= =?UTF-8?q?=E5=8F=8D=20AI=20=E8=87=AA=E8=BF=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [LocalAsr Windows 灰显简化(用户:"白底太显眼")] - 删除顶部 qwenUnavailableOnWindows banner Card(白底浅橙 noise) - 列表为空时的 placeholder Card 改成纯空
,不再二次重复 banner 文案 - 灰显 + inert + opacity 已自我解释,不需要 banner 引导 [千问3 标记为「实验性」(用户拍板)] - LocalAsr.tsx 在 qwenTitle 前加 amber-300 小 badge "实验性" - 5 个 locale 新加 i18n key `qwenExperimentalBadge`: - zh-CN: 实验性 - en: Experimental - ja: 実験的 - ko: 실험적 - zh-TW: 實驗性 [polish 反 AI 自述(用户:"直抒胸臆,不加多余话;不要 AI 输出式语言")] - OUTPUT_BLOCK 新加 "# 反 AI 自述式表达(强约束)" 子段: - 禁词列表:"我们看了一下""我们发现""经过分析""综合来看""总体而言" "整体来说""依我所见""根据情况""从结果来看"等代入第三方/自述视角的语句 - 保持原句的人称视角,原句没有"我们"就不引入 - 直陈原意,不扩写 - 不加修饰副词或铺垫句("值得一提的是""值得注意""值得考虑"等) - Light task block 加 "**工程化直陈**" 段: - 开发协作 / 任务清单 / 技术沟通 / 工作汇报场景按主谓宾陈述 - 不加修饰副词、铺垫句、AI 自述 - 输出长度尽量贴近原句字数 ± 20% - 新增示例:用户原话"嗯我们目前看了一下没什么大问题就是缓存策略可能要改一下" → 输出"目前没什么大问题,缓存策略需要调整"(不引入"我们看了一下") - Formal task block 加 "**工程化正式**" 段: - 正式 ≠ 扩张;不展开为商务铺垫 - 不加"经过分析""综合来看""值得注意的是"等代入第三方视角的语句 - 输出长度 ± 30% 以内,不让正式化扩张到两倍长度 - 新增示例:用户原话"嗯这次发版前我们看了一下其实问题不大但还是建议把缓存改一改" → 输出"本次发版整体问题不大,建议调整缓存策略"(不写"我们看了一下""经过评估") --- openless-all/app/src-tauri/src/polish.rs | 33 ++++++++++++++++++++---- openless-all/app/src/i18n/en.ts | 1 + openless-all/app/src/i18n/ja.ts | 1 + openless-all/app/src/i18n/ko.ts | 1 + openless-all/app/src/i18n/zh-CN.ts | 1 + openless-all/app/src/i18n/zh-TW.ts | 1 + openless-all/app/src/pages/LocalAsr.tsx | 32 ++++++++++++----------- 7 files changed, 50 insertions(+), 20 deletions(-) diff --git a/openless-all/app/src-tauri/src/polish.rs b/openless-all/app/src-tauri/src/polish.rs index 535bb1d3..e1498ed9 100644 --- a/openless-all/app/src-tauri/src/polish.rs +++ b/openless-all/app/src-tauri/src/polish.rs @@ -1910,7 +1910,13 @@ pub mod prompts { const OUTPUT_BLOCK: &str = "# 输出\n\ 直接输出最终文本正文。需要结构化时直接从标题 / 段落 / 编号开始。\n\ 禁止以\u{201C}根据你/您给的内容\u{201D}\u{201C}我整理如下\u{201D}\u{201C}以下是整理后的内容\u{201D}\u{201C}优化如下\u{201D}\u{201C}结构化整理如下\u{201D}等句式开头。\n\ - \u{4E0D}加解释、总结、客套话、代码围栏(\\`\\`\\`)或 markdown 元注释。"; + \u{4E0D}加解释、总结、客套话、代码围栏(\\`\\`\\`)或 markdown 元注释。\n\ + \n\ + # 反 AI 自述式表达(强约束)\n\ + - \u{4E0D}加 AI 自评 / 自述视角的语句:\u{201C}\u{6211}\u{4EEC}\u{770B}\u{4E86}\u{4E00}\u{4E0B}\u{201D}\u{201C}\u{6211}\u{4EEC}\u{53D1}\u{73B0}\u{201D}\u{201C}\u{7ECF}\u{8FC7}\u{5206}\u{6790}\u{201D}\u{201C}\u{7EFC}\u{5408}\u{6765}\u{770B}\u{201D}\u{201C}\u{603B}\u{4F53}\u{800C}\u{8A00}\u{201D}\u{201C}\u{6574}\u{4F53}\u{6765}\u{8BF4}\u{201D}\u{201C}\u{4F9D}\u{6211}\u{6240}\u{89C1}\u{201D}\u{201C}\u{6839}\u{636E}\u{60C5}\u{51B5}\u{201D}\u{201C}\u{4ECE}\u{7ED3}\u{679C}\u{6765}\u{770B}\u{201D}\u{7B49}\u{3002}\n\ + - 保持原句的人称视角:原句是\u{201C}\u{6211}\u{201D}就用\u{201C}\u{6211}\u{201D},原句没有\u{201C}\u{6211}\u{4EEC}\u{201D}/\u{201C}\u{54B1}\u{4EEC}\u{201D}就\u{4E0D}凭空引入。\n\ + - 直陈用户的实际诉求:原句说\u{201C}没问题\u{201D}就输出\u{201C}没问题\u{201D},\u{4E0D}扩写为\u{201C}\u{6211}\u{4EEC}\u{770B}\u{4E86}\u{4E00}\u{4E0B}\u{6CA1}\u{4EC0}\u{4E48}\u{5927}\u{95EE}\u{9898}\u{201D}\u{3002}\n\ + - \u{4E0D}加修饰副词或铺垫句(\u{201C}\u{503C}\u{5F97}\u{4E00}\u{63D0}\u{7684}\u{662F}\u{201D}\u{201C}\u{503C}\u{5F97}\u{6CE8}\u{610F}\u{201D}\u{201C}\u{503C}\u{5F97}\u{8003}\u{8651}\u{201D}\u{7B49}\u{6F2B}\u{8C08}\u{8FC7}\u{6E21}\u{53E5})\u{3002}"; pub fn system_prompt(mode: PolishMode) -> String { let task_and_example = match mode { @@ -1928,9 +1934,18 @@ pub mod prompts { 去掉明显口癖、重复、无意义停顿;补充自然标点。\n\ 保留用户原意、语气和表达习惯;\u{4E0D}扩写、\u{4E0D}创作。\n\ \n\ - # 示例\n\ + **工程化直陈**:开发协作 / 任务清单 / 技术沟通 / 工作汇报等场景下,按\u{4E3B}\u{8C13}\u{5BBE}陈述事实,\ + \u{4E0D}加修饰副词、铺垫句、AI 自述(\u{201C}\u{6211}\u{4EEC}\u{770B}\u{4E86}\u{4E00}\u{4E0B}\u{201D}\u{201C}\u{603B}\u{4F53}\u{6765}\u{8BF4}\u{201D}等)。\ + 输出长度尽量贴近原句字数(± 20% 以内),\u{4E0D}让\u{8F7B}\u{5EA6}\u{6DA6}\u{8272}变成扩写。\n\ + \n\ + # 示例 1\n\ 原:那个我觉得这个方案吧大概可以但是可能在性能上还要再看看\n\ - 出:我觉得这个方案大概可以,但性能上还要再看看。", + 出:我觉得这个方案大概可以,但性能上还要再看看。\n\ + \n\ + # 示例 2(工程化直陈,\u{4E0D}加 AI 自述)\n\ + 原:嗯我们目前看了一下没什么大问题就是缓存策略可能要改一下\n\ + 出:目前没什么大问题,缓存策略需要调整。\ + \u{200B}(注意:原句\u{6CA1}\u{6709}\u{660E}\u{786E}\u{7684}\u{201C}\u{6211}\u{4EEC}\u{201D}\u{4F5C}\u{4E3A}\u{96C6}\u{4F53},不引入\u{201C}\u{6211}\u{4EEC}\u{770B}\u{4E86}\u{4E00}\u{4E0B}\u{201D}\u{8FD9}\u{79CD}\u{81EA}\u{8FF0}\u{8868}\u{8FBE})", PolishMode::Structured => "# 任务(清晰结构)\n\ 把口述整理为脉络清晰、可直接复制走的结构化文本:保留用户的口语引子(润色后作为首行过渡),\ @@ -2034,9 +2049,17 @@ pub mod prompts { \u{4E0D}引入空泛客套(\u{201C}希望您一切顺利\u{201D}\u{201C}祝商祺\u{201D}等);\ \u{4E0D}擅自承诺或扩写事实;邮件场景自动识别问候 / 落款。\n\ \n\ - # 示例\n\ + **工程化正式**:正式 ≠ 扩张。直陈用户原意,\u{4E0D}展开为商务铺垫,\u{4E0D}加\u{201C}\u{7ECF}\u{8FC7}\u{5206}\u{6790}\u{201D}\u{201C}\u{7EFC}\u{5408}\u{6765}\u{770B}\u{201D}\u{201C}\u{503C}\u{5F97}\u{6CE8}\u{610F}\u{7684}\u{662F}\u{201D}\u{7B49}\u{4EE3}\u{5165}\u{7B2C}\u{4E09}\u{65B9}\u{89C6}\u{89D2}\u{7684}\u{8BED}\u{53E5}\u{3002}\ + 输出长度尽量贴近原句字数(± 30% 以内),\u{4E0D}让\u{6B63}\u{5F0F}\u{5316}\u{6269}\u{5F20}\u{5230}\u{4E24}\u{500D}\u{957F}\u{5EA6}\u{3002}\n\ + \n\ + # 示例 1\n\ 原:那个老板我跟你说下今天的发布我们可能要推迟因为测试还没跑完\n\ - 出:今天的发布需要推迟,原因是测试尚未完成。", + 出:今天的发布需要推迟,原因是测试尚未完成。\n\ + \n\ + # 示例 2(工程化正式,\u{4E0D}加铺垫与代入语)\n\ + 原:嗯这次发版前我们看了一下其实问题不大但还是建议把缓存改一改\n\ + 出:本次发版整体问题不大,建议调整缓存策略。\ + \u{200B}(注意:\u{4E0D}写\u{201C}\u{6211}\u{4EEC}\u{770B}\u{4E86}\u{4E00}\u{4E0B}\u{201D}\u{201C}\u{7ECF}\u{8FC7}\u{8BC4}\u{4F30}\u{201D}\u{4E4B}\u{7C7B}\u{4EE3}\u{5165}\u{8BED})", }; format!( diff --git a/openless-all/app/src/i18n/en.ts b/openless-all/app/src/i18n/en.ts index c4bec5fe..e9f69083 100644 --- a/openless-all/app/src/i18n/en.ts +++ b/openless-all/app/src/i18n/en.ts @@ -667,6 +667,7 @@ export const en: typeof zhCN = { title: 'Models', desc: 'Manage on-device ASR models. Windows can use Microsoft Foundry Local Whisper; Qwen3-ASR model management stays separate.', qwenTitle: 'Qwen3-ASR model manager', + qwenExperimentalBadge: 'Experimental', engineUnavailable: 'The Qwen3-ASR inference engine is not bundled on this platform. You can still download models, but Qwen3-ASR cannot be activated here yet.', qwenUnavailableOnWindows: 'Qwen3-ASR is not supported on Windows yet. Please use Foundry Local Whisper above instead.', foundryTitle: 'Windows Foundry Local Whisper', diff --git a/openless-all/app/src/i18n/ja.ts b/openless-all/app/src/i18n/ja.ts index 78e3712e..21ad3935 100644 --- a/openless-all/app/src/i18n/ja.ts +++ b/openless-all/app/src/i18n/ja.ts @@ -669,6 +669,7 @@ export const ja: typeof zhCN = { title: 'モデル設定', desc: '本機の ASR モデルを管理します。Windows では Microsoft Foundry Local Whisper を使用でき、Qwen3-ASR のモデル管理は独立しています。', qwenTitle: 'Qwen3-ASR モデル管理', + qwenExperimentalBadge: '実験的', engineUnavailable: '現在のプラットフォームには Qwen3-ASR 推論エンジンが同梱されていません。モデルのダウンロードは可能ですが、ここではまだ Qwen3-ASR を有効化できません。', qwenUnavailableOnWindows: 'Windows では Qwen3-ASR にまだ対応していません。上記の Foundry Local Whisper をご利用ください。', foundryTitle: 'Windows Foundry Local Whisper', diff --git a/openless-all/app/src/i18n/ko.ts b/openless-all/app/src/i18n/ko.ts index c2905fab..a72b2934 100644 --- a/openless-all/app/src/i18n/ko.ts +++ b/openless-all/app/src/i18n/ko.ts @@ -669,6 +669,7 @@ export const ko: typeof zhCN = { title: '모델 설정', desc: '기기 내 ASR 모델을 관리합니다. Windows 에서는 Microsoft Foundry Local Whisper 를 사용할 수 있으며, Qwen3-ASR 모델 관리는 별도로 유지됩니다.', qwenTitle: 'Qwen3-ASR 모델 관리', + qwenExperimentalBadge: '실험적', engineUnavailable: '현재 플랫폼에는 Qwen3-ASR 추론 엔진이 포함되어 있지 않습니다. 모델은 다운로드할 수 있지만 여기서는 아직 Qwen3-ASR 을 활성화할 수 없습니다.', qwenUnavailableOnWindows: 'Windows 에서는 아직 Qwen3-ASR 을 지원하지 않습니다. 위의 Foundry Local Whisper 를 사용해 주세요.', foundryTitle: 'Windows Foundry Local Whisper', diff --git a/openless-all/app/src/i18n/zh-CN.ts b/openless-all/app/src/i18n/zh-CN.ts index ca14ec7e..638ca910 100644 --- a/openless-all/app/src/i18n/zh-CN.ts +++ b/openless-all/app/src/i18n/zh-CN.ts @@ -665,6 +665,7 @@ export const zhCN = { title: '模型设置', desc: '管理本机 ASR 模型。Windows 可使用 Microsoft Foundry Local Whisper;Qwen3-ASR 模型管理保持独立。', qwenTitle: 'Qwen3-ASR 模型管理', + qwenExperimentalBadge: '实验性', engineUnavailable: '当前平台暂未集成 Qwen3-ASR 推理引擎。可下载模型,但暂时无法启用 Qwen3-ASR。', qwenUnavailableOnWindows: 'Windows 暂不支持 Qwen3-ASR,请使用上方 Foundry Local Whisper。', foundryTitle: 'Windows Foundry Local Whisper', diff --git a/openless-all/app/src/i18n/zh-TW.ts b/openless-all/app/src/i18n/zh-TW.ts index e2ecd584..14d3a9f8 100644 --- a/openless-all/app/src/i18n/zh-TW.ts +++ b/openless-all/app/src/i18n/zh-TW.ts @@ -667,6 +667,7 @@ export const zhTW: typeof zhCN = { title: '模型設置', desc: '管理本機 ASR 模型。Windows 可使用 Microsoft Foundry Local Whisper;Qwen3-ASR 模型管理保持獨立。', qwenTitle: 'Qwen3-ASR 模型管理', + qwenExperimentalBadge: '實驗性', engineUnavailable: '當前平臺暫未集成 Qwen3-ASR 推理引擎。可下載模型,但暫時無法啟用 Qwen3-ASR。', qwenUnavailableOnWindows: 'Windows 暫不支援 Qwen3-ASR,請使用上方的 Foundry Local Whisper。', foundryTitle: 'Windows Foundry Local Whisper', diff --git a/openless-all/app/src/pages/LocalAsr.tsx b/openless-all/app/src/pages/LocalAsr.tsx index 658a9a7b..bd7d6bdf 100644 --- a/openless-all/app/src/pages/LocalAsr.tsx +++ b/openless-all/app/src/pages/LocalAsr.tsx @@ -763,13 +763,9 @@ export function LocalAsr({ embedded = false }: LocalAsrProps = {}) { 灰显 + 禁用交互 + 顶部横幅说明不可用,引导他们使用上方 Foundry Local Whisper。 Linux 当前没有任何本地 ASR 提供,沿用 IS_MAC 隐藏(dead UI 仍然要藏)。 */} {(IS_MAC || IS_WINDOWS) && (<> - {IS_WINDOWS && ( - -
- {t('localAsr.qwenUnavailableOnWindows')} -
-
- )} + {/* v1.3.1-6 用户反馈:Windows 顶部"暂不支持"banner 白底太显眼。已经整段 opacity/grayscale + + inert 灰显 + 不可交互了,banner 是 noise,直接删。AT 仍可通过区域 aria-disabled + + 灰显视觉判断不可用。 */}
)} -
- {t('localAsr.qwenTitle')} +
+ {/* v1.3.1-6 用户拍板:千问3 ASR 改为「实验性」分组,独立于 Foundry/云端 ASR。 + 浅 amber badge 跟 thinking 扫光暖色调一致。 */} + {t('localAsr.qwenExperimentalBadge')} +
+ {t('localAsr.qwenTitle')} +
@@ -912,12 +917,9 @@ export function LocalAsr({ embedded = false }: LocalAsrProps = {}) { ))}
) : ( - /* Windows 灰显占位:后端列表为空,给一个静态 Card 表明这里"本该是模型列表"。 */ - -
- {t('localAsr.qwenUnavailableOnWindows')} -
-
+ /* v1.3.1-6: Windows 列表为空时不再画白底 banner Card(用户反馈"白色显眼"), + 留个低调的灰色 placeholder 维持容器高度。整段已 inert + 灰显,AT 用户感知到的也是"不可用"。 */ +
)}
)} From 960889da7c397b950c01cd95e356629295873f69 Mon Sep 17 00:00:00 2001 From: baiqing Date: Tue, 12 May 2026 18:32:01 +0800 Subject: [PATCH 3/3] =?UTF-8?q?fix(polish):=20Structured=20prompt=20?= =?UTF-8?q?=E5=8A=A0=E5=BC=BA"=E5=88=A4=E6=96=AD=E4=BA=8B=E9=A1=B9?= =?UTF-8?q?=E6=A0=87=E5=87=86"=EF=BC=8C=E6=8F=90=E5=8D=87=E7=BB=93?= =?UTF-8?q?=E6=9E=84=E5=8C=96=E7=A8=B3=E5=AE=9A=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 用户报 Structured 模式不稳定 —— 同样输入有时双层 list 有时连贯段落。 失败示例:用户口述 4 个独立反馈(千问3 提示样式 + 让它消失 + 改实验性 + 其他没问题)输出成连贯段落,没归类成双层 list。 LLM 判断"事项数"时可能要求用户明说"第一""第二""另外"等连接词, 口语化输入没这些就误判为"一段连贯陈述"。 加强:Structured task block 顶部新加"默认行为:双层 list。判断事项的标准": 列出 4 种独立事项的形态(可独立成句的陈述、独立请求/建议、状态判断/结论、 针对模块的描述/要求),明确"事项数 ≥3 强制双层化,即使输入听起来像顺着 说下来的口播"。 跟前面 commit 35d53b8b 的"不可降级到轻度润色 + 多个组合需求处理规则" 形成三重 sticky: - 规则 1:不可降级到轻度润色(事项 ≥3 必须双层) - 规则 2:多组合需求按大类按口述顺序排 - 规则 3(本 commit):明确"事项"的判断标准,不依赖用户的连接词 --- openless-all/app/src-tauri/src/polish.rs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/openless-all/app/src-tauri/src/polish.rs b/openless-all/app/src-tauri/src/polish.rs index e1498ed9..8877d745 100644 --- a/openless-all/app/src-tauri/src/polish.rs +++ b/openless-all/app/src-tauri/src/polish.rs @@ -1951,6 +1951,15 @@ pub mod prompts { 把口述整理为脉络清晰、可直接复制走的结构化文本:保留用户的口语引子(润色后作为首行过渡),\ 主动按语义把扁平事项归类成 2\u{2013}4 个主题,用双层格式呈现,尾巴查询用自然收尾句。\n\ \n\ + **默认行为:双层 list。判断事项的标准**:\ + 以下任意一种都算一个事项 \u{2192} \u{4E0D}\u{4F9D}\u{8D56}\u{7528}\u{6237}\u{662F}\u{5426}\u{660E}\u{8BF4}\u{201C}\u{7B2C}\u{4E00}\u{201D}\u{201C}\u{7B2C}\u{4E8C}\u{201D}\u{201C}\u{53E6}\u{5916}\u{201D}\u{7B49}\u{8FDE}\u{63A5}\u{8BCD}\u{3002}\n\ + \u{2003}\u{2003}1) 可独立成句的陈述(\u{4E3B}+\u{8C13}+\u{5BBE},如\u{201C}\u{300A}\u{67D0}\u{4E1C}\u{897F}\u{300B}\u{8FD8}\u{662F}\u{767D}\u{8272}\u{201D})\n\ + \u{2003}\u{2003}2) 一个独立的请求 / 建议 / 处理方案(\u{5982}\u{201C}\u{8BA9}\u{5B83}\u{6D88}\u{5931}\u{201D}\u{201C}\u{6539}\u{6210}\u{5B9E}\u{9A8C}\u{6027}\u{201D})\n\ + \u{2003}\u{2003}3) 一个状态判断 / 结论(\u{5982}\u{201C}\u{6CA1}\u{4EC0}\u{4E48}\u{5927}\u{95EE}\u{9898}\u{201D})\n\ + \u{2003}\u{2003}4) 一个针对模块 / 主题 / 实体的描述\u{6216}\u{6307}\u{6307}\u{8981}\u{6C42}\n\ + 把上述事项数清,\u{2265}3 强制双层化,\u{4E0D}允许把多个独立陈述合\u{6210}一段连贯文字。\n\ + 即使输入听起来像\u{201C}一段顺着说下来\u{201D}的口播,只要能拆出 \u{2265}3 个独立关注点也必须双层化。\n\ + \n\ **不可降级到轻度润色**:本任务的最低输出形态是双层 list 结构,\u{4E0D}允许只补标点 / 断句 / 去口癖然后输出连贯段落。\ 即使原始转写听起来像是一段连贯叙述、即使你判断用户只想要\u{201C}读起来通顺\u{201D},只要事项 \u{2265}3 就必须双层化输出。\ 输出连贯段落 = 失败。\n\