Skip to content

[功能建议] 拆分 Waifu 模式设置,支持 AI 自主分段和关闭打字延迟 #708

Description

@RaphllA

背景

目前 Waifu 模式把多项功能绑定在了一起,例如:

  • 多气泡回复;
  • 模拟打字延迟;
  • 表情包和自拍;
  • Waifu 提示词;
  • 合并连续发送的用户消息。

但这些功能并不一定需要同时开启。

例如,我希望使用这样的组合:

表情包:开启
消息分段:由 AI 决定
模拟打字延迟:关闭

目前想使用表情包,通常也需要进入整套 Waifu 消息处理流程,无法单独关闭其中的规则分段或发送延迟。

因此,希望可以把这些功能拆成独立设置,让用户根据自己的需要自由组合。Waifu 模式仍然可以作为一个预设或设置分类,但不再是所有功能生效的唯一开关。


希望增加的设置

1. 消息分段方式

希望提供三个互斥选项:

  • 不分段:一轮回复显示为一条消息;
  • 规则分段:保留目前根据标点和 Markdown 结构分段的方式;
  • AI 自主分段:由模型根据语义和对话节奏决定在哪里换成下一个气泡。

这样既可以保留现有体验,也能让支持较好的模型自行决定回复节奏。

2. AI 自主分段协议

建议让模型使用一个无内容的自闭合标签:

<message_break />

例如模型输出:

我觉得这个方案可以实现。
<message_break />
不过 Tool Call 的兼容问题还需要单独处理。
<message_break />
可以先从回复完成后分段开始做。

最终显示为三条气泡:

我觉得这个方案可以实现。

不过 Tool Call 的兼容问题还需要单独处理。

可以先从回复完成后分段开始做。

这里建议使用自闭合标签,而不是用标签包裹正文。因为断点只代表“从这里开始下一条消息”,本身不需要包含内容,也不会因为模型漏写结束标签而影响后面的回复或 Tool Call。

希望模型遵循这些基本规则:

  • 短回复通常不需要分段;
  • 不要机械地一句一段;
  • 不要在开头、结尾或连续插入断点;
  • 不要在代码块、表格、公式、链接和 Tool Call 参数中插入断点;
  • 没有输出断点时,整轮回复就作为一条消息;
  • 标签只用于宿主解析,不向用户解释。

<message_break /> 本身不应出现在最终消息、复制内容或 TTS 文本中。

3. 气泡显示时机

希望提供两个选项:

  • 边生成边显示
  • 回复完成后统一显示

“边生成边显示”可以在收到完整的 <message_break /> 后立即显示前一段内容,体验更接近真人聊天。

“回复完成后统一显示”则等待本轮回复、Tool Call 和重试全部结束,再根据最终内容生成气泡。这个方式实现起来更稳定,也可以作为 AI 自主分段的默认选项。

如果流式模式暂时难以兼容回滚机制,也可以先实现“回复完成后统一显示”,后续再完善流式气泡。

4. 模拟打字延迟独立开关

希望把模拟打字延迟从 Waifu 模式中单独拆出来。

关闭后:

  • 流式模式识别到断点就立即显示;
  • 完成后模式直接显示所有分段;
  • 不再根据字符数额外等待。

开启后则继续使用现有的字符延迟设置。


表情包与消息分段解耦

希望表情包不再依赖规则分段或模拟打字延迟。

例如下面的组合也应该可以正常工作:

消息分段:关闭
模拟打字延迟:关闭
表情包:开启

表情包仍然可以作为独立图片消息显示,只是不再要求用户同时启用整套 Waifu 消息处理逻辑。

自拍、Waifu 提示词和连续消息合并等功能,如果方便的话,也可以采用类似方式拆成独立选项。


Tool Call 和流式回滚

AI 回复过程中可能发生:

  • Tool Call;
  • 工具结果注入;
  • 重试;
  • SAVEPOINT / ROLLBACK
  • 已生成内容被修改。

如果一个气泡在流式阶段就被永久保存,后续发生回滚时可能无法正确撤销。

因此希望:

  • 回复完成后显示:只处理最终确认的回复;
  • 边生成边显示:生成的气泡先作为临时状态,并能跟随回滚一起删除或更新,回合完成后再正式保存。

另外,模型可能把标签拆成多个流式片段:

<message_
break
/>

因此解析时需要保留未完成的标签,等完整收到后再判断,而不是只检查单个流式片段。

代码块、Tool Call 参数或其他结构化内容中的 <message_break /> 不应触发分段。


兼容现有用户

希望保留当前规则分段方式,不需要直接替换已有实现。

旧用户升级后可以继续保持类似当前的行为:

消息分段:规则分段
显示方式:边生成边显示
模拟打字延迟:开启

新增设置也希望能够跟随角色卡或角色组一起保存、复制和切换。


期望结果

  • 表情包可以独立开启,不依赖规则分段和模拟延迟;
  • 模拟打字延迟可以单独关闭;
  • 消息分段可以选择关闭、规则分段或 AI 自主分段;
  • AI 自主分段使用自闭合的 <message_break />
  • 可以选择边生成边显示,或回复完成后统一显示;
  • 断点标签不会出现在消息、复制内容和 TTS 中;
  • 代码块和 Tool Call 中的标签不会被错误解析;
  • Tool Call、重试和流式回滚不会留下错误气泡;
  • 现有用户升级后可以继续保持原来的使用方式。

这个建议并不是希望移除现有的 Waifu 模式,而是希望把其中的功能从固定组合变成可以自由搭配的选项。

这样既能保留现在的 Waifu 聊天体验,也可以支持“只开表情包”“关闭打字延迟”或“让 AI 自己决定消息节奏”等更灵活的用法。

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions