支持让 AI 根据固定格式来提问,优化用户体验

This commit is contained in:
2026-06-10 21:31:27 +08:00
parent cdb22d4ddb
commit c0f15050d0
8 changed files with 500 additions and 8 deletions
@@ -73,8 +73,10 @@
:key="m.id"
:message="m"
:savable="!readonly"
:answer-disabled="readonly || session.isStreaming.value"
@retry="session.retryMessage"
@save="onSaveMessage"
@answer-question="onAnswerQuestion"
/>
</div>
<div
@@ -133,6 +135,10 @@ import { chatApi, type ChatMessage, type Conversation } from '@/api/chat'
import type { Artifact, ArtifactPhase, Requirement } from '@/api/projects'
import { useConversationSession } from '@/composables/useConversationSession'
import { buildRequirementSystemPrompt } from '@/constants/requirementPhasePrompts'
import {
formatInteractiveQuestionAnswer,
type InteractiveQuestionAnswer,
} from '@/utils/interactiveMessage'
import MessageBubble from '@/views/chat/components/MessageBubble.vue'
import ModelSelector from '@/views/chat/components/ModelSelector.vue'
import SaveArtifactModal from './SaveArtifactModal.vue'
@@ -227,6 +233,11 @@ async function send() {
await session.sendMessage(body)
}
async function onAnswerQuestion(answer: InteractiveQuestionAnswer) {
if (props.readonly || session.isStreaming.value) return
await session.sendMessage(formatInteractiveQuestionAnswer(answer))
}
function onSaveMessage(id: number) {
const msg = session.messages.value.find((m) => m.id === id)
if (!msg) return