|
|
@@ -815,6 +815,26 @@ watch(
|
|
|
},
|
|
|
)
|
|
|
|
|
|
+// 自动播放:AI 消息流式 done 后,合成并播一次。
|
|
|
+// 用 Set 去重防止 watcher 因为不相关重渲染重复触发。
|
|
|
+const autoPlayedIds = new Set<string>()
|
|
|
+watch(
|
|
|
+ () => engine.messages.value.map(m => `${m.id}:${m.status}`).join('|'),
|
|
|
+ () => {
|
|
|
+ for (const m of engine.messages.value) {
|
|
|
+ if (
|
|
|
+ m.role === 'ai' &&
|
|
|
+ m.status === 'done' &&
|
|
|
+ m.content &&
|
|
|
+ !autoPlayedIds.has(m.id)
|
|
|
+ ) {
|
|
|
+ autoPlayedIds.add(m.id)
|
|
|
+ player.play(m.id, { kind: 'tts', text: m.content })
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+)
|
|
|
+
|
|
|
// AI 消息 done 后,延迟 600ms 显示 "在等你的回答..."
|
|
|
watch(
|
|
|
() => {
|