IssueMapper AI adalah ekstensi Visual Studio Code (VS Code) yang dirancang khusus untuk mempermudah alur kerja pemelihara (maintainers) proyek sumber terbuka (open source). Ekstensi ini menjembatani jurang antara platform GitHub dan editor lokal Anda dengan memetakan deskripsi issue GitHub secara otomatis ke file kode terkait di dalam workspace menggunakan kecerdasan buatan (AI).
Saat mengelola proyek perangkat lunak, pemelihara sering kali menghabiskan banyak waktu hanya untuk melakukan triase masalah:
- Membaca laporan bug/masalah dari pengguna di web GitHub.
- Membuka IDE lokal dan mencari file mana yang kemungkinan besar bertanggung jawab atas bug tersebut.
- Menulis komentar respons awal secara manual.
IssueMapper AI menyelesaikan masalah ini dengan menghadirkan antarmuka sidebar interaktif di VS Code. Ekstensi ini mengambil issue GitHub yang aktif, menganalisis repositori lokal Anda secara efisien, mengidentifikasi lokasi kode penyebab masalah dengan AI, memandu navigasi one-click langsung ke file tersebut, dan menghasilkan draf jawaban balasan instan.
- Two-Stage Context Retrieval:
- Tahap 1 (Pemetaan Berkas): Memindai seluruh path relatif workspace proyek (menyaring folder seperti
node_modules/,.git/, dll. hingga batas maksimal 1000 file) untuk dikirim ke LLM. LLM menganalisis kecocokan semantik antara teks issue dengan nama berkas/struktur folder, lalu merekomendasikan Top 3 berkas terkait beserta tingkat keyakinannya (HIGH/MEDIUM/LOW) dan alasannya. - Tahap 2 (Draf Jawaban Terkonteks): Mengambil potongan kode dari dokumen aktif yang sedang Anda edit (
vscode.window.activeTextEditor) sebagai konteks instan bagi AI untuk merumuskan draf komentar tanggapan yang akurat.
- Tahap 1 (Pemetaan Berkas): Memindai seluruh path relatif workspace proyek (menyaring folder seperti
- UI sidebar interaktif yang dibangun menggunakan React 19 + Vite yang di-bundle menjadi berkas tunggal tanpa pemisahan kode (zero code-splitting).
- Menyesuaikan tema warna (color tokens) native VS Code secara dinamis (mendukung Dark/Light/High Contrast theme) agar terlihat menyatu dengan editor.
- Filter label GitHub, kolom pencarian teks instan, navigasi satu klik ke berkas kode lokal, pengiriman komentar, serta penutupan issue langsung dari sidebar.
- Seluruh kredensial sensitif seperti Kunci API (OpenAI, Gemini, Groq) disimpan secara terenkripsi menggunakan VS Code SecretStorage API (terintegrasi dengan hardware keychain OS Anda seperti Windows Credential Manager / macOS Keychain).
- Kunci API diproses murni di sisi Extension Host (backend lokal ekstensi) dan tidak pernah dikirim ke webview React, menjamin keamanan tingkat tinggi dari serangan injeksi pihak ketiga.
Ekstensi ini mendukung integrasi dengan berbagai penyedia AI terkemuka secara fleksibel:
-
OpenAI Adapter: Menggunakan model
gpt-4odengan fallback otomatis kegpt-4o-minisaat API sibuk. -
Google Gemini Adapter: Rantai fallback berlapis:
gemini-3-flash$\rightarrow$ gemini-2.5-flash$\rightarrow$ gemini-3.1-flash-lite$\rightarrow$ gemini-2.5-flash-lite. -
Groq Cloud Adapter: Integrasi cepat model open source:
deepseek-r1-distill-llama-70b$\rightarrow$ llama-4-scout-17b-16e-instruct$\rightarrow$ mixtral-8x7b-32768$\rightarrow$ llama3-8b-8192. -
Ollama Adapter: Dukungan penuh untuk model LLM lokal yang berjalan di localhost (misalnya model kustom
llama3). -
Resiliensi Tangguh: Dilengkapi deteksi otomatis HTTP status
429(Rate Limit) dan5xx(Server Overload) untuk memicu fallback model secara otomatis sebelum mengirim error ke UI. -
Robust JSON Parser: Algoritma parser tangguh yang mampu membersihkan tanda kurung kode markdown (
json ...) dari LLM, mendeteksi struktur JSON dengan regex{}jika parsing utama gagal, dan memvalidasi tipe data output.
Alur interaksi dan komunikasi data antara Webview React, Extension Host (VS Code), dan AI Provider dapat digambarkan sebagai berikut:
sequenceDiagram
participant Webview as Webview React (Sidebar)
participant Host as Extension Host (Node.js)
participant Storage as VS Code SecretStorage
participant AI as AI API (OpenAI/Gemini/Groq/Ollama)
Webview->>Host: Memicu 'analyzeIssue' (Nomor Issue & Detail)
Host->>Host: Panggil workspace scanner (Daftar File Relatif)
Host->>Storage: Ambil API Key secara aman
Storage-->>Host: Kembalikan Kunci API
Host->>AI: Kirim Deskripsi Issue + Daftar Berkas + API Key
Note over AI: Analisis kecocokan semantik<br/>dan keluarkan output JSON
AI-->>Host: Respons JSON mentah (Mungkin terbungkus Markdown)
Host->>Host: Jalankan parseAIResponse() (Pembersihan & Validasi JSON)
Host-->>Webview: Kirim 'analysisResult' (Top 3 File & Ringkasan)
Webview->>Webview: Perbarui UI (Buka berkas / Isi Komentar)
Ekstensi ini terbagi menjadi dua bagian besar: Host Extension (TypeScript/Node.js) dan Webview Frontend (Vite + React + TypeScript).
βββ .vscode/ # Konfigurasi workspace & tugas debugging
βββ out/ # Hasil kompilasi akhir kode Host (CommonJS)
βββ src/ # Kode Sumber Host Extension
β βββ ai/
β β βββ AIClient.ts # Definisikan IAIProvider, OpenAI/Gemini/Groq/Ollama Adapters & parseAIResponse
β βββ providers/
β β βββ SidebarProvider.ts # Handler utama view sidebar, listener IPC (analyzeIssue, openFile, quickSuggest)
β βββ utils/
β β βββ github.ts # Dynamic loader Octokit GraphQL/REST client untuk sinkronisasi issues
β β βββ storageManager.ts# Pengelolaan kredensial (SecretStorage) & state (globalState/workspaceState)
β β βββ workspaceScanner.ts # Pemindai berkas workspace asinkron dengan pola pengecualian
β βββ extension.ts # Titik masuk utama (Entry Point) aktivasi ekstensi VS Code
βββ tsconfig.json # Konfigurasi TypeScript compiler dengan pemuatan tipe global node & mocha
βββ webview/ # Kode Sumber UI Sidebar (React App)
β βββ dist/ # Hasil build produksi bundle tunggal (bundle.js, bundle.css)
β βββ src/
β β βββ App.tsx # Komponen UI utama, parser markdown ringan, form komentar & komunikasi IPC
β β βββ index.css # Desain CSS tema native VS Code
β βββ vite.config.ts # Pengaturan bundler Vite untuk menghasilkan output single-file
β βββ package.json
βββ package.json # Manifest ekstensi, kontribusi view, command, dependensi & script build
- Instalasi Node.js (LTS v18 atau v20+)
- Instalasi Git CLI
- VS Code terinstal di komputer Anda
- Klon repositori ini ke komputer lokal Anda.
- Buka direktori root proyek menggunakan VS Code.
- Jalankan perintah instalasi dependensi di terminal:
# Install dependensi untuk Host Extension npm install # Install dependensi untuk Webview Frontend cd webview npm install cd ..
Gunakan skrip yang telah disediakan di root package.json untuk melakukan proses build:
# Kompilasi TypeScript host sekaligus mem-build webview menjadi bundle tunggal
npm run build:allSkrip ini akan mengeksekusi dua proses:
tsc -p ./untuk mengompilasi kode TypeScript host ke folderout/.cd webview && npm run builduntuk mengemas React Webview ke dalamwebview/dist/bundle.js.
- Buka berkas src/extension.ts atau file typescript lainnya.
- Tekan tombol F5 pada keyboard Anda (atau masuk ke menu Run and Debug di VS Code dan klik Launch Extension).
- VS Code baru (jendela Extension Development Host) akan terbuka secara otomatis dengan membawa ekstensi IssueMapper AI aktif di dalamnya.
- Klik ikon Issues (ikon berbentuk lingkaran peringatan di Activity Bar kiri) untuk membuka panel sidebar.
Saat pertama kali dibuka, ekstensi akan mendeteksi repositori lokal Anda dan melakukan otentikasi GitHub secara native. Untuk mengaktifkan analisis AI, Anda dapat mengonfigurasi kunci API secara aman melalui tab setelan ekstensi:
- Klik tombol roda gigi Pengaturan (Settings) di sudut kanan atas panel ekstensi.
- Pilih penyedia AI yang ingin Anda gunakan, berikut adalah panduan masing-masing:
- Google Gemini (Direkomendasikan):
- Dapatkan Kunci API gratis di Google AI Studio.
- Tempelkan kunci API ke input setelan Gemini di ekstensi.
- Model default:
gemini-3-flash. Rantai fallback otomatis akan mencoba model cadangan sepertigemini-2.5-flashjika terjadi rate limit.
- OpenAI:
- Dapatkan Kunci API di OpenAI Platform.
- Masukkan Kunci API OpenAI (
sk-...). - Model default:
gpt-4o. Fallback otomatis:gpt-4o-mini.
- Groq Cloud:
- Dapatkan Kunci API gratis di Groq Console.
- Model default:
deepseek-r1-distill-llama-70b(Distilled DeepSeek model). - Rantai fallback otomatis:
llama-4-scout-17b-16e-instruct->mixtral-8x7b-32768.
- Ollama (Local LLM):
- Pastikan Ollama berjalan di latar belakang (misalnya lewat perintah
ollama run llama3). - Tentukan Host URL lokal Anda (default:
http://localhost:11434). - Masukkan nama model lokal yang terinstal (misalnya:
llama3ataumistral).
- Pastikan Ollama berjalan di latar belakang (misalnya lewat perintah
- Google Gemini (Direkomendasikan):
- Klik Save Settings. Kunci API akan langsung disimpan ke dalam secure keychain sistem operasi Anda secara terenkripsi melalui VS Code
SecretStorage.
Jika Anda ingin menguji ekstensi ini dalam mode produksi atau membagikannya tanpa mempublikasikan langsung ke VS Code Marketplace, Anda dapat mengemasnya menjadi file biner .vsix:
Pastikan Anda telah menginstal CLI @vscode/vsce secara global:
npm install -g @vscode/vsceJalankan perintah berikut di root direktori proyek untuk melakukan kompilasi bundel final webview & backend host sekaligus mengemasnya:
# Compile and build bundle
npm run build:all
# Lakukan packaging menjadi berkas .vsix
vsce packageCatatan: Jika ada peringatan lisensi atau README, Anda dapat menekan y untuk melanjutkan. Perintah ini akan menghasilkan file bernama issue-mapper-0.0.1.vsix di root direktori proyek Anda.
Untuk menginstal file .vsix secara manual ke editor VS Code Anda:
- Buka VS Code.
- Masuk ke panel Extensions (
Ctrl+Shift+XatauCmd+Shift+X). - Klik ikon tiga titik (...) di sudut kanan atas panel Extensions.
- Pilih menu Install from VSIX....
- Pilih file
issue-mapper-0.0.1.vsixyang baru saja dihasilkan dan klik Install. - Ekstensi IssueMapper AI akan terinstal secara lokal dan siap digunakan!
Untuk mempublikasikan ekstensi secara publik ke VS Code Marketplace:
- Buat akun organisasi/penerbit di Microsoft Partner Center / Visual Studio Marketplace Publisher.
- Dapatkan Personal Access Token (PAT) dari Azure DevOps dengan cakupan
Marketplace (Publish). - Login melalui terminal menggunakan perintah:
vsce login <nama_publisher_anda>
- Publikasikan ekstensi dengan perintah:
vsce publish
Proyek ini didistribusikan di bawah lisensi MIT. Silakan lihat berkas LICENSE untuk informasi selengkapnya.