Pertanyaan interaktif
Extension question menyediakan wizard terminal untuk mengajukan satu atau lebih pertanyaan bertipe ke user. Mendukung single-select, multiselect, dan free-form text, dengan navigasi keyboard dan filtering. Di luar TUI (misalnya host RPC/VS Code), pertanyaan yang sama dijawab melalui dialog extension UI host.
Dibundel bersama Selesai
Dimuat otomatis bersama Selesai; tidak diperlukan npm install per ekstensi.
Penyiapan dan prasyarat
- Extension ini dibundel bersama Selesai. Dimuat otomatis; tidak perlu diinstal terpisah.
- Memerlukan permukaan UI. Di mode terminal TUI pertanyaan dirender sebagai wizard layar penuh; di host RPC/VS Code dirender sebagai dialog
extension_ui_request(select,input,multiselect). Tidak dapat digunakan di mode tanpa UI. - Agent memanggil tool; user menjawab melalui TUI.
Yang disiapkan
- Di mode TUI terminal tool merender wizard batch question layar penuh. Di mode non-TUI (misalnya RPC) pertanyaan diajukan satu per satu melalui dialog extension UI host; membatalkan satu pertanyaan membatalkan seluruh batch.
- Pertanyaan multiselect mempertahankan multi-seleksi penuh jika host mendukung method UI
multiselect; host lama beralih ke satu pilihan. - Setiap pertanyaan memiliki
idyang stabil,label, stringquestion,type, danoptionssertacontextopsional. - Jawaban dikembalikan sebagai hasil terstruktur dengan status
answered,skipped, danunanswered.
Yang dapat dikonfigurasi
Tool question didorong schema. Pertanyaan dikonfigurasi per pemanggilan tool; tidak ada pengaturan user persisten.
Lokasi dan preseden konfigurasi
- Schema per pemanggilan tool
question({ questions: [...] })
Semua opsi diberikan oleh agent di dalam pemanggilan tool.
Pengaturan
| Kunci / path | Tipe, default, dan nilai | Deskripsi |
|---|---|---|
questions[].id | string Default: q1, q2, ... | Id jawaban yang stabil. Dibuat otomatis bila dihilangkan. |
questions[].label | string Default: Q1, Q2, ... | Label halaman singkat yang ditampilkan di wizard. |
questions[].question | string Default: — | Teks pertanyaan yang ditampilkan ke user. |
questions[].context | string Default: — | Konteks plain-text opsional yang ditampilkan sebelum pertanyaan. |
questions[].type | string Default: — Nilai yang diizinkan: "select", "multiselect", "text" | Tipe pertanyaan. image dan info tidak didukung. |
questions[].options | array Default: — | Wajib untuk select dan multiselect. Setiap opsi memiliki value, label, dan description opsional. |
questions[].allowOther | boolean Default: false | Izinkan jawaban teks kustom untuk select/multiselect. |
Kontrol command, tool, dan shortcut
| Kunci / path | Deskripsi |
|---|---|
question({ questions }) | Wizard batch dengan layar review dan submission. |
Bukti source
src/extensions/question/schemas.ts
Yang dapat dilakukan
- Mengajukan keputusan independen yang harus dibuat user secara langsung.
- Menampilkan pertanyaan select, multiselect, atau free-form text.
- Menyediakan
valueopsi yang stabil terpisah darilabelyang human-readable. Pertanyaan pilihan selalu menyertakan opsi Other sehingga user dapat menjawab bebas; gunakanallowOther: falseuntuk memaksa opsi yang terdaftar.
Perintah, tool, dan shortcut
Tidak ada slash command. Tool dipanggil oleh agent:
question({ questions: [ { id: "target_db", label: "Database", type: "select", question: "Which database should we use?", options: [ { value: "sqlite", label: "SQLite" }, { value: "postgres", label: "PostgreSQL" } ], allowOther: true }, { id: "skip_cache", label: "Skip cache", type: "text", question: "Why skip the cache?" } ]})Tipe pertanyaan yang didukung: select, multiselect, text.
Mengonfirmasi jawaban select, multiselect, text, atau custom akan berpindah otomatis. Satu pertanyaan yang terjawab langsung dikirim. Batch dengan beberapa pertanyaan tetap memiliki layar review akhir; Enter mengirim semua jawaban secara atomik, sedangkan Tab/Shift+Tab atau tombol panah tetap tersedia untuk navigasi dan penyuntingan manual.
Batasan dan keamanan
-
Tool memerlukan UI. Tool melempar error saat tidak ada UI host (sesi headless atau non-interaktif).
-
Pertanyaan seharusnya adalah keputusan independen yang harus dibuat user; agent harus memeriksa fakta sendiri daripada menanyakan informasi yang dapat ditemukan kepada user.
-
Entri text kosong dicatat sebagai
skipped; agent harus menangani status skipped dan unanswered secara eksplisit.