Host · Chat
질문 카드 — AskUserQuestionCard
에이전트가 사용자에게 되묻거나 다중 선택을 요청할 때 단순 텍스트 응답 대신 인터랙티브 카드로 표시합니다. 컴포넌트: src/ui/renderer/components/AskUserQuestionCard.tsx:159.
실제 타입 (verbatim)
// src/ui/renderer/components/AskUserQuestionCard.tsx:30-73
export interface AskUserQuestionItem {
question: string;
choices?: string[];
recommendedIndex?: number;
altIndices?: number[];
allowFreeText: boolean;
allowMultiple?: boolean;
placeholder?: string;
summaryHint?: string;
suggestedAnswers?: string[]; // @deprecated
}
export interface AskUserQuestionRequest {
id: string;
questions: AskUserQuestionItem[];
createdAt: number;
}언제 카드가 나오나요?
- 사용자 의도가 모호할 때 — 「어떤 메일을 정리할까요?」
- 여러 후보 중 선택이 필요할 때 — 「세 곳의 회의실 중 어디로?」
- 위험한 액션 직전 확인 —
agentApproval.request의 사용자 다이얼로그 변형. - 플러그인이 후속 액션을 제안할 때 — 「액션 아이템을 TODO에 추가할까요?」
선택 → 액션
- 호스트 또는 plugin 이 ask-user-question 요청 발사 (도구 응답 또는 LLM 출력에 포함).
- ChatView 가 카드 렌더.
recommendedIndex가 있으면 highlight,altIndices는 alt 후보. allowMultiple가 true 면 multi-select, false 면 single.allowFreeText가 true 면 입력 박스.- 선택/입력 결과가 다음 대화 턴의 user message 로 들어가고, 카드는 잠긴 상태로 히스토리에 보존.
recommendedIndex / altIndices 활용
에이전트는 default 추천을
recommendedIndex 로 표시하고 (예: 회의실 추천), 동등하게 좋은 다른 후보를altIndices 로 marking. UI 는 추천을 강조하면서도 alt 들을 동등 비중으로 보여줍니다.