feat(keyboard): improve typing, voice flow, and polish reliability
Reduce extension memory pressure and delivery races while adding richer candidates, tactile feedback, and safer two-level creative polishing.
This commit is contained in:
+58
-4
@@ -8,10 +8,59 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
## [Unreleased]
|
||||
|
||||
### Added
|
||||
- **English autocomplete & prediction**: English mode reuses the candidate bar for prefix completions, high-confidence autocorrect (with ⌫ / original-candidate undo), and next-word suggestions backed by an offline lexicon plus personal dictionary boosts. / **英文补全与预测**:英文模式复用候选栏,提供前缀补全、高置信自动纠错(⌫ / 原文候选可撤销)以及下一词建议;离线词表结合个人词典加权。
|
||||
- **Chinese more-candidates panel**: when composing Chinese with ≥2 candidates, a ▼ expands a same-height scrollable grid (~80 candidates) over the key area; selecting or ▲ collapses without growing the keyboard. / **中文更多候选面板**:中文组词且候选 ≥2 时,▼ 在同高度内展开可滚动候选网格(约 80 条)覆盖按键区;点选或 ▲ 收起,不增高键盘。
|
||||
- **Typing key sound & haptics**: letter / modifier / space / return / delete keys play system click sounds on press-down; Settings → General → Haptics offers Off / Light (default) / Strong role-based feedback. / **打字按键音效与震动**:字母 / 修饰 / 空格 / 回车 / 删除键按下即播系统咔嗒音;设置 → 通用 → 震动提供关 / 轻(默认) / 强 的角色分层触感。
|
||||
|
||||
### Changed
|
||||
- **Two-level polish intensity**: Light is the default and restores full fidelity, question, and insertion-context safeguards for fun styles; Heavy keeps the formatting-only creative path for Dating, Flex, Corp, Diba, and XHS. / **两档润色强度**:默认轻度,为趣味风格启用完整保真、问句与落点上下文守卫;重度保持直男癌、装逼、大厂、帝吧和小红书仅格式化后执行人格的创意链路。
|
||||
- **Built-in polish style JSON**: ship each built-in personality as `Resources/PolishStyles/*.json` plus a manifest; the loader strips the retired fun-foundation placeholder while the composer owns the single shared formatting layer. / **内置润色风格 JSON**:每个内置人格改为 `Resources/PolishStyles/*.json` + manifest;加载器移除已退役的趣味共享占位符,唯一共享格式化层由 Composer 负责。
|
||||
- **Dating V6 alignment**: restore heartbeat goals, action definitions, chat paragraphing, and the “吃饭了吗” example in `builtin.dating.json`; practical safeguards no longer override those Dating instructions. / **直男癌对齐 V6**:在 `builtin.dating.json` 恢复终极目标、心动动作定义、聊天分段与「吃饭了吗」示例;实用润色守卫不再覆盖 Dating 指令。
|
||||
- **Polish prompt pipeline**: restore builtin style personalities and per-style intensity guidelines; inject custom packs with priority over generic cleanup; keep sparse hard-brakes only in conservative/fallback modes; strengthen Clear Structure paragraphing guidance; remove unused `globalContract` wiring. / **润色提示词管线**:恢复内置风格人格与分风格力度细则;自定义包优先于泛化清理口吻;稀疏硬刹车仅在保守/降级模式注入;加强清晰结构分段指引;移除未使用的 `globalContract` 假接线。
|
||||
- **Bounded Flow latency**: ASR drain, batch recovery, and polish now use finite stage budgets; available raw transcription is inserted when optional polish cannot finish in time. / **Flow 有界延迟**:ASR 收尾、整段补偿与润色现采用分阶段时限;可选润色未及时完成时直接上屏已有原始转写。
|
||||
- **Dating polish quality**: route care, availability checks, concrete invites, praise, longing, apologies, and pressure separately; add controlled per-utterance variation and absolute short-message length budgets, with deterministic local fallbacks when the model violates intent. / **直男癌润色质量**:分别路由关心、档期询问、明确邀约、赞美、想念、道歉与施压场景;增加按单次语音变化的受控多样性和短消息绝对长度预算,模型改意图时由本地确定性兜底。
|
||||
|
||||
### Fixed
|
||||
- **Polish homophone repair**: strengthen shared T3 for contextual 同音/近音 fixes, enforce correct-then-style ordering in one LLM pass, and keep dictionary hints from replacing general correction rules. / **润色同音纠错**:加厚共享 T3 的上下文同音/近音修复,在单次 LLM 内强制先纠后润,并避免词典段顶掉一般纠错规则。
|
||||
- **Translation paragraph structure**: translation prompts enforce hard structure rules with few-shot correct/wrong examples so flat ASR enumerations become blank-line paragraphs and `1. 2. 3.` lists instead of one collapsed block. / **翻译段落结构**:翻译提示词改为硬结构规则 + 正误 few-shot 示例,使平铺 ASR 列举重建为空行分段与 `1. 2. 3.` 列表,避免压成单段。
|
||||
- **Bluetooth Flow capture**: serialize PiP/recording audio work off the main thread, wait for a stable input and first frame before ASR, and ignore format-stable route notifications instead of rebuilding every utterance. / **蓝牙 Flow 录音**:在主线程外串行执行 PiP/录音音频操作,等待输入路由与首帧稳定后再进入 ASR,并忽略格式未变化的路由通知,避免每次语音都重建引擎。
|
||||
- **Reliable Flow delivery**: preserve rapid start/stop commands, make utterance termination idempotent, and recover unacknowledged final results after keyboard-extension recreation. / **Flow 可靠交付**:保留快速按下/松开命令,确保单次语音仅有一个终态,并在键盘扩展重建后恢复未确认的最终结果。
|
||||
|
||||
## [1.6.0] - 2026-08-04
|
||||
|
||||
### Removed
|
||||
- **In-keyboard onboarding overlay**: first-run setup lives only in the host app; the keyboard no longer mounts the multi-step enable/permission guide. / **键盘内引导遮罩**:首次设置仅在主 App 完成;键盘不再挂载多步启用/权限引导。
|
||||
|
||||
### Changed
|
||||
- **Voice setup gate**: until host onboarding finishes, typing stays available; tapping mic (or Flow cold-start) shows a hint and opens OSGKeyboard. / **语音设置门禁**:主 App 引导完成前仍可打字;点麦克风(或 Flow 冷启动)会提示并跳转 OSGKeyboard。
|
||||
- **Host memory hybrid Flow**: after onboarding, Rime then CLM run serially under an RSS gate (~120 MB); ASR warms on first mic press instead of session activate. / **宿主混合 Flow 内存策略**:引导完成后按序执行 Rime→CLM 并受 RSS 门闩(约 120 MB)约束;ASR 改在首次按麦时预热,不再随会话激活叠峰。
|
||||
- **HostSupport framework split**: ASR / CLM / CloudASR / Charts / StoreKit move to `OSGKeyboardHostSupport`; the keyboard extension no longer links those SDKs or embeds the heavy Rime/CLM/license assets. / **HostSupport 框架拆分**:ASR / CLM / CloudASR / Charts / StoreKit 迁入 `OSGKeyboardHostSupport`;键盘扩展不再链接这些 SDK,也不再内嵌大型 Rime/CLM/许可证资源。
|
||||
- **Typing stack lazy load**: voice surface skips `TypingSessionController` until typing; engines and English lexicon load on enter and unload on leave. / **打字栈懒加载**:语音面不提前创建 `TypingSessionController`;引擎与英文词表进入打字面再加载,离开时卸载。
|
||||
- **Host↔extension coexistence**: App Group `hostHeavy` blocks typing prepare while the host is doing heavy work; Rime redeploy uses full integrity check only when forced. / **宿主与扩展共存**:宿主重活期间 App Group `hostHeavy` 阻止打字 prepare;Rime 仅在强制重部署时做完整校验。
|
||||
|
||||
### Fixed
|
||||
- **Volcengine ASR validate**: settings connection check handshakes only (no silence transcribe), so valid APP ID / Token no longer fail with “Socket is not connected”. / **火山 ASR 验证**:设置页连接检查仅握手鉴权(不再推静音转写),有效 APP ID / Token 不再误报「Socket 未连接」。
|
||||
- **Cold-start overlay above keyboard**: the bottom gradient and status copy now track keyboard overlap so “Voice could not start” stays on the opaque band instead of floating over Home content. / **冷启动浮层跟键盘**:底部渐变与状态文案随键盘 overlap 上移,「语音暂时无法启动」留在不透明渐变带上,不再裸叠首页内容。
|
||||
- **App Group under XCTest**: unsigned test hosts no longer `fatalError` on bare `AppGroupStore()`; speech-history cloud push skips when the suite is missing so one trap cannot abort the whole process. / **XCTest 下 App Group**:未签名测试宿主上裸构 `AppGroupStore()` 不再 `fatalError`;语音历史云推送在 suite 缺失时直接跳过,避免一次 trap 拖垮整进程。
|
||||
- **Keychain under unsigned XCTest**: when SecItem returns `errSecMissingEntitlement` (-34018) with XCTest loaded, fall back to a process-local map so Keychain/API-key tests stay hermetic. / **未签名 XCTest 下 Keychain**:SecItem 返回 `-34018` 且已加载 XCTest 时回退进程内映射,保证 Keychain/API Key 用例可稳定跑通。
|
||||
- **Polish output validation**: re-enable hard-violation retry + `minimalPolish` fallback (temporary diagnostic bypass removed). / **润色输出校验**:恢复硬违规重试与 `minimalPolish` 回退(移除临时诊断旁路)。
|
||||
- **English manual Shift priority**: autocapitalization no longer clears a user-armed Shift, so mid-sentence names stay capitalizable; letter keys show uppercase while Shift / Caps / hold is active. / **英文手动 Shift 优先**:自动大写不再清掉用户点亮的 Shift,句中人名可正常大写;Shift / Caps / 按住时字母键显示大写。
|
||||
- **Dual enterTypingMode**: typing prepare runs once from the keyboard controller (not again from `TypingRootView.onAppear`). / **双重 enterTypingMode**:打字 prepare 仅由键盘控制器触发一次,不再在 `TypingRootView.onAppear` 重复执行。
|
||||
- **Keyboard startup layout crash**: initialize cursor-layout dependencies before applying the preferred surface, make early layout callbacks safe, and remove startup `layoutIfNeeded()` re-entry that caused a deterministic `SIGTRAP`. / **键盘启动布局崩溃**:在应用首选界面前初始化光标布局依赖,安全处理提前到来的布局回调,并移除启动阶段 `layoutIfNeeded()` 重入,修复必现的 `SIGTRAP`。
|
||||
- **Foreground capture jetsam**: opening the host no longer auto-starts continuous mic capture; idle background capture is released so the keyboard can cold-start (`KVC.init`). / **前台录音 jetsam**:打开宿主不再自动开启连续麦克风采集;后台空闲时释放采集,让键盘能冷启动(出现 `KVC.init`)。
|
||||
- **Host CLM packaging + deferred warmup**: ship Custom Language Model assets in the iOS app bundle (folder reference) and delay Rime/CLM ~45s so they no longer race keyboard cold start. / **宿主 CLM 打包与延后预热**:CLM 资源以文件夹方式打进 iOS App,并将 Rime/CLM 延后约 45 秒,避免与键盘冷启动抢内存。
|
||||
|
||||
### Added
|
||||
- **Voice pipeline performance tests**: hermetic PCM→ASR→guard→polish→bridge stage timings (`./Scripts/run-tests.sh perf`); included in `all`, not in `pr`. / **语音管线性能测试**:合成 PCM→ASR→guard→润色→bridge 分阶段耗时(`./Scripts/run-tests.sh perf`);纳入 `all`,不进 `pr`。
|
||||
- **Grouped hermetic test suite**: `Tests/suite-manifest.json` plus `./Scripts/run-tests.sh` run presets (`pr` / `all` / `api` / `keyboard` / …) or atomic groups without duplicating XCTest classes; CI uses `pr` (includes ExtTests). / **分组固定测试集**:用 `Tests/suite-manifest.json` 与 `./Scripts/run-tests.sh` 按预设(`pr` / `all` / `api` / `keyboard` / …)或原子组运行,测试类不重复归属;CI 默认跑 `pr`(含 ExtTests)。
|
||||
- **Cloud ASR + Flow policy regressions**: streaming/HTTP fixtures, Alibaba vocabulary cache, moonshot local-fallback routing, and Shared Flow keyboard decision helpers (warming / re-adopt / command gate). / **云端 ASR 与 Flow 策略回归**:流式/HTTP fixture、阿里词汇缓存、Moonshot 本地回退路由,以及 Shared 层键盘 Flow 决策(warming / 重附着 / 命令门控)。
|
||||
- **Streaming ASR event parsers**: Bailian / OpenAI realtime reducers and Volcengine binary frame round-trip fixtures; translation chip 2.5s poll-protection policy is Shared-tested. / **流式 ASR 事件解析**:百炼 / OpenAI Realtime reducer 与火山二进制帧 round-trip fixture;翻译芯片 2.5 秒轮询保护策略下沉 Shared 并单测。
|
||||
- **Shift hold continuous caps**: press and hold Shift to type uppercase until release (does not enter Caps Lock). / **按住 Shift 持续大写**:按住 Shift 可持续输入大写,松手结束(不进入 Caps Lock)。
|
||||
- **English autocomplete & prediction**: English mode reuses the candidate bar for prefix completions, high-confidence autocorrect (with ⌫ / original-candidate undo), and next-word suggestions backed by an offline lexicon plus personal dictionary boosts. / **英文补全与预测**:英文模式复用候选栏,提供前缀补全、高置信自动纠错(⌫ / 原文候选可撤销)以及下一词建议;离线词表结合个人词典加权。
|
||||
- **Chinese more-candidates panel**: when composing Chinese with ≥2 candidates, a ▼ expands a same-height scrollable grid (~80 candidates) over the key area; selecting or ▲ collapses without growing the keyboard. / **中文更多候选面板**:中文组词且候选 ≥2 时,▼ 在同高度内展开可滚动候选网格(约 80 条)覆盖按键区;点选或 ▲ 收起,不增高键盘。
|
||||
- **Remember last input surface**: optional setting under Default to Text Input; when on, the keyboard reopens on the voice or typing surface left last time. / **记住上次输入界面**:在「默认进行文字输入」下新增可选开关;开启后,下次打开键盘保持上次离开时的语音或文字界面。
|
||||
|
||||
### Changed
|
||||
- **Chinese curly quotes on 123**: Simplified Chinese numbers page uses `“ ”`; corner brackets `「」` moved to `#+=`. / **中文弯引号**:简体中文 123 页使用 `“ ”`;直角引号 `「」` 移至 `#+=`。
|
||||
- **123 / #+= punctuation by language**: Chinese mode uses iOS Simplified Chinese punctuation (e.g. `:;()¥“”。,、?!【】「」《》`); English mode keeps the iOS US set and drops the extra Chinese-only fourth row. / **123 / #+= 标点按语言区分**:中文模式对齐 iOS 简体中文标点(如 `:;()¥“”。,、?!【】「」《》`);英文模式保持 iOS 美式键位,并去掉多余的中文第四行。
|
||||
- **Expanded candidate chrome**: drop per-cell fills for row hairlines, enlarge the ▼/▲ hit target, and disable layout animation on expand/collapse to reduce tap lag. / **展开候选样式**:去掉每格白底改行间细分割线,加大 ▼/▲ 热区,并关闭展开/收起布局动画以减轻点击卡顿。
|
||||
- **Expand/collapse responsiveness**: collapsed bar shows at most 10 candidates; ▼ sits in a `safeAreaInset` outside the horizontal ScrollView; QWERTY stays mounted under an opacity toggle so expand does not rebuild the key grid. / **展开/收起跟手**:收起顶栏最多 10 个候选;▼ 用 `safeAreaInset` 放在横滑外;QWERTY 以透明度显隐保留,避免展开时重建键区。
|
||||
- **Candidate expand UX**: ▼ uses a translation-style opaque white/dark chip in an HStack (no overlay on text); the expand panel is a recycled UIKit `UICollectionView` of plain labels instead of SwiftUI Buttons. / **候选展开体验**:▼ 改为翻译按钮式不透明白底圆片并放在 HStack 内(不再盖住文字);展开面板改用可复用的 UIKit 纯文字网格,替代大量 SwiftUI Button。
|
||||
@@ -27,7 +76,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
- **English idle next-word bar**: candidate suggestions no longer appear until at least one letter of the current word is typed. / **英文空闲下一词栏**:未输入字母时不再显示候选;至少输入一个字母后才出现补全。
|
||||
|
||||
### Fixed
|
||||
- **Defer CLM/Rime until after onboarding**: Custom LM compile and Rime deploy no longer run from `App.init` / welcome flow (host was hitting ~150 MB then signal 9). / **引导后再做 CLM/Rime**:Custom LM 编译与 Rime 部署不再在 `App.init`/欢迎流程执行(此前宿主约 150 MB 后被 signal 9 杀掉)。
|
||||
- **Keyboard idle cold-start**: opening the keyboard no longer auto-launches `startflow` when a stale Flow session dies without a mic press (host ASR warmup was jetsamming the extension). / **键盘空闲冷启动**:无麦克风意图时,残留 Flow 会话失效不再自动跳 `startflow`(避免宿主 ASR 预热把扩展 jetsam)。
|
||||
- **Gesture-delay scan scope**: `disableSystemGestureDelays` only walks the extension’s own view tree, not the host window. / **手势延迟扫描范围**:仅遍历扩展自身视图树,不再扫宿主 window。
|
||||
- **English autocapitalization**: Shift arms automatically at field start and after sentence terminators, respecting the host field’s autocapitalization type. / **英文自动大写**:在输入框开头与句末标点后自动点亮 Shift,并遵循宿主输入框的自动大写类型。
|
||||
- **Default text-input flash**: apply the preferred surface before mounting SwiftUI so “Default to Text Input” no longer briefly shows the voice UI first. / **默认文字输入闪跳**:在挂载 SwiftUI 前应用首选界面,开启「默认进行文字输入」后不再先短暂闪过语音界面。
|
||||
|
||||
## [1.5.0] - 2026-08-03
|
||||
|
||||
@@ -42,11 +95,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
- **True streaming cloud ASR**: Bailian, Volcengine, and OpenAI Realtime use one utterance-level WebSocket with live partials; Volcengine enables official two-pass (`enable_nonstream`) so interim text stays on-screen while definite ASR feeds polish. / **真流式云端 ASR**:百炼、火山与 OpenAI Realtime 按整句长连接推流并实时上屏;火山开启官方二遍识别(`enable_nonstream`),interim 仅上屏,definite 再送润色。
|
||||
- **Streaming ASR badge**: settings ASR provider chip shows 【流式识别】 for Bailian, Volcengine, and OpenAI. / **流式识别标签**:设置里 ASR 供应商对百炼、火山、OpenAI 显示【流式识别】。
|
||||
- **Fun polish styles**: new subcategory with Flex Guide, Corp Speak, and DiBa Logic alongside Dating Coach. / **趣味润色风格**:新增小分类,含装逼指南、大厂黑话、帝吧大神,并与直男癌拯救器同组。
|
||||
- **Xiaohongshu Sisters style**: fun polish pack that rewrites drafts into sisterly RED note body with Light/Medium/Heavy hooks (轻安利 / 种草感 / 爆款感). / **小红书集美风格**:趣味润色包,将草稿改写成姐妹向小红书笔记正文,并按轻安利 / 种草感 / 爆款感三档跳变。
|
||||
- **Xiaohongshu Sisters style**: fun polish pack that rewrites drafts into a strong, fact-grounded sisterly RED note with a topic hook and scannable short paragraphs. / **小红书集美风格**:趣味润色包,将草稿直接改写为强风格、事实保真的姐妹向小红书笔记,并使用贴题钩子与易扫读短段。
|
||||
- **Delete day in History**: each day header has a Delete action with confirmation to clear that day's transcripts only (iOS and Mac). / **历史按天删除**:日期行右侧提供删除按钮,确认后仅清除当天记录(iOS 与 Mac)。
|
||||
- **Mac Settings translation target**: polish-provider section includes “Polish then translate” with the same locale picker as Home / menu bar. / **Mac 设置翻译目标**:润色(LLM)分区新增「润色后翻译」,与首页 / 菜单栏同一套目标语言选择。
|
||||
|
||||
### Changed
|
||||
- **Strong polish by default**: remove the Light / Medium / Heavy setting and its persisted/cloud-synced state; every style now executes its strongest fact-safe interpretation in one prompt. / **默认强润色**:移除轻度 / 中度 / 深度设置及其本地与云同步状态;每种风格现在都在单个 Prompt 中执行事实安全范围内的最强版本。
|
||||
- **Unified keyboard chrome**: voice, Chinese, and English now share a 281-point height, aligned native action keys, a tappable OSG wordmark that opens the host app, a compact translation menu, and an adaptive green Send key. / **统一键盘外观**:语音、中文与英文现统一为 281 点高度及对齐的原生操作键;OSG 横向标志可点击打开主 App,翻译入口改为紧凑菜单按钮,发送键使用自适应绿色。
|
||||
- **Native-style typing keyboard**: voice, Chinese, and English now share one top-right segmented control that yields to active candidates; keys are taller, rounder, adapt to light/dark mode, use filled Shift state and native press feedback, while only the first candidate is highlighted. / **原生风格打字键盘**:语音、中文与英文共用右上角分段切换,组词时让位给候选栏;键帽更高、更圆并适配深浅模式,Shift 选中改为实心并增加原生按压反馈,仅首候选高亮。
|
||||
- **Platform-aware third-party licenses**: About now lists the complete iOS Rime/dictionary stack with readable bundled dependency notices, while iOS and macOS hide components they do not ship. / **分平台第三方许可**:「关于」现在完整列出 iOS Rime 与词库依赖及可阅读的传递依赖许可,并在 iOS、macOS 分别隐藏未随该平台分发的组件。
|
||||
@@ -55,7 +109,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
- **Website download actions**: App Store and source buttons now share a compact rounded-rectangle shape and matching height instead of mixing badge and pill silhouettes. / **官网操作按钮**:App Store 与源码按钮统一为等高的紧凑圆角矩形,不再混用徽章与胶囊轮廓。
|
||||
- **Layered bilingual polish prompts**: transcripts are sent once as user data; stable Chinese/English core rules, style policies, dictionaries, and runtime context now have explicit responsibilities for better consistency and provider prefix caching. / **分层双语润色提示词**:转写仅作为用户消息发送一次;稳定的中英文核心规则、风格策略、词典和运行时上下文职责明确,提升一致性并支持服务商前缀缓存。
|
||||
- **Two-tier short polish skip**: ultra-short (≤4 CJK) still skips the LLM; 5–10 CJK now skips only low-value acks/closings (e.g. “好的我知道了”), while questions and contentful shorts still polish. / **两级短句跳过润色**:≤4 字仍跳过 LLM;5–10 字仅对低价值确认/收束语跳过(如「好的我知道了」),问句与有内容短句仍走润色。
|
||||
- **ABE polish routing**: fun styles and daily chat use a local information-density gate, prompt hard-brakes, and style-specific degrade (e.g. DiBa without an opponent quote falls back to chat cleanup) without a second LLM call. / **ABE 润色路由**:趣味风格与日常聊天增加本地信息密度闸、提示词硬刹车与风格专属降级(如帝吧无对方原话时降级日常清理),不增加第二次 LLM 调用。
|
||||
- **Single-pass polish pipeline**: each selected style now contributes only its personality to one composed prompt; the obsolete router file, duplicated style-card prompts, embedded Core boilerplate, soft validation telemetry, style remapping, dedicated degrade blocks, and second LLM retries are removed. Ultra-short practical/chat acknowledgements may still use deterministic local cleanup without calling the model. / **单次润色链路**:用户选择的风格现在只向单个组合 Prompt 提供人格;移除废弃 Router 文件、重复风格卡 Prompt、内嵌 Core 样板、软校验遥测、风格重映射、专属降级块与第二次 LLM 重试。实用/日常风格的极短确认语仍可直接使用确定性本地清理,不调用模型。
|
||||
- **Practical polish prompts**: Light Clean / Structured / Formal / Daily Chat share a “transcript-only, not a chatbot” boundary; Structured gains active itemization, light semantic reorder, and paragraphing hard rules inspired by high-readability polish patterns. / **实用润色提示词**:轻度清理 / 清晰结构 / 正式表达 / 日常聊天统一「只整理转写、非聊天助手」边界;清晰结构加强积极分项、轻度语义重排与分段硬规则,提升长口述可读性。
|
||||
- **RED Note keeps the draft's audience**: the Xiaohongshu style no longer opens with 姐妹们/集美们 or adds comment CTAs unless the draft already addresses a group, and a positive draft can no longer be rewritten with an 避雷-style hook. / **小红书不再擅自加受众**:除非原文本身在对一群人说话,否则不再添加「姐妹们/集美们」开场与评论区互动话术;正面体验也不会被写成「真诚避雷」式钩子。
|
||||
- **Style-specific forbidden-items chapters**: every built-in polish prompt now has a dedicated `# 禁止事项` section modeled on Daily Chat—no interlocutor replies, no answering question drafts—with per-style bans (e.g. dating must not turn asks into verdicts; flex/corp must not answer as the other party; XHS must not invent product claims). / **风格专属禁止事项**:全部内置润色提示词均新增「# 禁止事项」章节,结构对齐日常聊天(禁接话、禁代答问句),并按风格补充专属禁令(如直男癌不得把征求意见改成评价;装逼/黑话不得替对方作答;小红书不得编造功效细节)。
|
||||
|
||||
Reference in New Issue
Block a user