Followup Suggestions
Qwen Code는 다음에 입력할 내용을 예측하고 입력 영역에 플레이스홀더 텍스트로 표시할 수 있습니다. 이 기능은 LLM 호출을 사용하여 대화 컨텍스트를 분석하고 자연스러운 다음 단계 제안을 생성합니다.
이 기능은 CLI에서 엔드투엔드로 작동합니다. WebUI에서는 hook과 UI 플럼빙을 사용할 수 있지만, 호스트 애플리케이션이 제안 생성을 트리거하고 제안이 나타나도록 followup 상태를 연결해야 합니다.
작동 방식
Qwen Code가 응답을 완료한 후, 짧은 지연(~300ms) 후에 제안이 입력 영역에 흐릿한 플레이스홀더 텍스트로 나타납니다. 예를 들어, 버그를 수정한 후 다음과 같이 표시될 수 있습니다:
> run the tests제안은 대화 기록을 모델에 전송하여 생성되며, 모델이 자연스럽게 다음에 입력할 내용을 예측합니다. 응답에 명시적 팁(예: Tip: type post comments to publish findings)이 포함되어 있으면, 제안된 동작이 자동으로 추출됩니다.
제안 수락
| 키 | 동작 |
|---|---|
Tab | 제안을 수락하고 입력에 채움 |
Enter | 제안을 수락하고 입력에 채움 |
Right Arrow | 제안을 수락하고 입력에 채움 |
| 아무 입력 | 제안을 해제하고 정상적으로 입력 |
Enter는 입력을 채우지만 제출하지 않으므로, 제안된 슬래시 명령어(예: /clear)를 수락해도 자동 실행되지 않습니다 — 두 번째 Enter로 직접 제출합니다.
제안이 나타나는 시기
제안은 다음 조건이 모두 충족될 때 생성됩니다:
- 모델이 응답을 완료했을 때 (스트리밍 중이 아님)
- 대화에서 최소 2번의 모델 턴이 발생했을 때
- 가장 최근 응답에 오류가 없을 때
- 보류 중인 확인 대화 상자가 없을 때 (예: 셸 확인, 권한)
- 승인 모드가
plan으로 설정되지 않았을 때 - 기능이 활성화되어 있을 때 (기본적으로 켜져 있음 —
ui.enableFollowupSuggestions를false로 설정하면 끄기)
제안은 비대화형 모드(예: 헤드리스/SDK 모드)에서는 나타나지 않습니다.
제안은 다음 상황에서 자동으로 해제됩니다:
- 입력을 시작할 때
- 새 모델 턴이 시작될 때
- 제안이 수락될 때
Fast 모델
기본적으로 제안은 메인 대화와 같은 모델을 사용합니다. 더 낮은 지연의 제안을 위해 전용 fast 모델을 구성하세요:
명령어를 통해
/model --fast qwen3-coder-flash또는 /model --fast(모델 이름 없이)를 사용하여 선택 대화 상자를 엽니다.
settings.json을 통해
{
"fastModel": "qwen3-coder-flash"
}fast 모델은 프롬프트 제안과 투기적 실행에 사용됩니다. 구성되지 않으면 메인 대화 모델이 폴백으로 사용됩니다.
비용 참고: fast 모델은 지연을 낮추지만 항상 비용을 낮추는 것은 아닙니다. 제안 생성은 대화의 프리픽스 캐시를 재사용합니다(
ui.enableCacheSharing을 통해, 기본적으로 켜져 있음) — 하지만 프리픽스 캐시는 모델별입니다.fastModel을 다른 모델로 지정하면 별도의 캐시로 포크되므로 전체 대화 기록이 fast 모델에서 캐시되지 않은 입력으로 다시 청구됩니다. 긴 대화에서는 기본값(메인 모델 + 공유 캐시)이 fast 모델보다 더 저렴할 수 있습니다. 대부분의 기록이 할인된 캐시 비율로 청구되기 때문입니다. 턴당 비용보다 지연이 더 중요할 때fastModel을 설정하세요.
생각/추론 모드는 모든 백그라운드 작업(제안 생성 및 투기)에 대해 자동으로 비활성화됩니다. 메인 모델의 생각 구성과 무관합니다. 이러한 작업에 필요하지 않은 내부 추론에 토큰을 낭비하지 않기 위함입니다.
구성
이 설정은 settings.json에서 구성할 수 있습니다:
| 설정 | 타입 | 기본값 | 설명 |
|---|---|---|---|
ui.enableFollowupSuggestions | boolean | true | followup 제안을 활성화 또는 비활성화 |
ui.enableCacheSharing | boolean | true | 비용을 줄이기 위해 캐시 인식 포크 쿼리 사용 (실험적) |
ui.enableSpeculation | boolean | false | 제출 전 제안을 투기적으로 실행 (실험적) |
fastModel | string | "" | 프롬프트 제안 및 투기적 실행에 사용할 모델 |
예시
{
"fastModel": "qwen3-coder-flash",
"ui": {
"enableFollowupSuggestions": true,
"enableCacheSharing": true
}
}모니터링
제안 모델 사용량은 /stats 출력에 나타나며, fast 모델이 제안 생성에 소비한 토큰을 보여줍니다.
fast 모델은 /about 출력의 “Fast Model” 아래에도 표시됩니다.
제안 품질
제안은 유용성을 보장하기 위해 품질 필터를 거칩니다:
- 2-12단어(CJK: 2-30자), 총 100자 이하
- 평가적일 수 없음 (“looks good”, “thanks”)
- AI 목소리를 사용할 수 없음 (“Let me…”, “I’ll…”)
- 여러 문장이거나 포맷(마크다운, 줄바꿈)을 포함할 수 없음
- 메타 코멘트일 수 없음 (“nothing to suggest”, “silence”)
- 오류 메시지나 접두사 레이블일 수 없음 (“Suggestion: …”)
- 한 단어 제안은 일반 명령어만 허용 (yes, commit, push 등)
- 슬래시 명령어(예:
/commit)는 항상 한 단어 제안으로 허용됨