提示 04:流式聊天响应
目标: 实现塔罗解读的 AI 驱动流式聊天响应。
设计需求:
- 暗黑/极简风格: 干净的气泡,微妙的阴影(无边框),深靛蓝/黑色主题。
- 流式 UI: 文本应以打字机效果出现。使用
react-native-markdown-display等库进行格式化。 - 仪式节奏:
- 聊天不应大量涌出文本。应感觉有节制(打字速度:每字符 20-30ms)。
- 如果用户中断,停止流式输出。
- 音频:
- 如果用户点击"收听",需要播放响应的音频流(来自我们的 TTS API)。
- 处理后台音频播放(应适当地暂停/恢复)。
技术规范:
- 流式传输: 使用
fetch(配合ReadableStream或text()轮询,采用 Web 应用当前使用的方式——目前在 Web 上使用ReadableStream)。 - Markdown: 使用
react-native-markdown-display。 - 触觉反馈: 每个流式 token/字符产生微小的"滴答"震动,或降低强度(每 5 个字符一次)。
- 状态:
currentMessageIndex、chatMessages(数组)。
上下文:
- Web 应用使用自定义的
TypewriterMarkdown.tsx。 - 聊天输入(
ChatUserInput.tsx)处理消息发送/重试逻辑。
交付物:
src/components/Chat/ChatBubble.tsxsrc/components/Chat/TypewriterText.tsxsrc/components/Chat/ChatInput.tsx