Purwarupa aplikasi desktop on-device AI untuk klasifikasi tingkat risiko penghapusan file pada Windows 11, berbasis JavaFX dan Small Language Model Qwen2 1.5B.
WINDEXER (Windows Indexer) adalah purwarupa (prototype) aplikasi desktop yang memanfaatkan kecerdasan buatan (Artificial Intelligence) untuk menganalisis dan mengklasifikasikan tingkat risiko penghapusan file pada sistem operasi Windows 11. Aplikasi ini menggabungkan antarmuka grafis berbasis JavaFX dengan Small Language Model (SLM) Qwen2 1.5B yang dijalankan sepenuhnya secara lokal (on-device) melalui runtime Ollama, menggunakan format model GGUF dengan kuantisasi Q8_0.
Sistem bekerja dengan mengekstrak metadata filesystem — seperti nama file, ekstensi, lokasi path, ukuran, atribut hidden/system — lalu mengirimkannya sebagai prompt ke model SLM yang telah di-fine-tune menggunakan template Alpaca. Model kemudian memberikan asesmen berupa tingkat risiko penghapusan (skala 1–5) beserta analisis teknis yang mencakup alasan, konteks sistem, dan rekomendasi tindakan.
Seluruh proses inferensi dilakukan offline tanpa koneksi internet. Tidak ada data pengguna yang dikirim ke server eksternal mana pun. Proyek ini dikembangkan sebagai bagian dari tugas akhir (skripsi) program studi S1.
- Fitur Utama
- Arsitektur / Tech Stack
- Struktur Folder
- Prasyarat Sistem
- Panduan Instalasi & Menjalankan Aplikasi
- Cara Penggunaan
- Arsitektur Alur Data
- Disclaimer / Peringatan
- Lisensi
- Klasifikasi risiko penghapusan file secara real-time — Analisis berbasis AI yang memberikan skor risiko 1–5 beserta penjelasan teknis komprehensif.
- Inferensi sepenuhnya lokal/offline — Model SLM berjalan di perangkat pengguna melalui Ollama, tanpa memerlukan koneksi internet.
- Antarmuka desktop JavaFX bergaya Windows 11 — UI modern dengan tema gelap (dark mode), tipografi Segoe UI, dan rounded corners.
- Privasi data terjamin — Tidak ada data file atau metadata yang dikirim ke cloud atau server eksternal.
- Eksplorasi direktori sistem Windows — Mendukung navigasi lazy-loading pada direktori kritis:
C:\Windows,C:\Program Files,C:\Program Files (x86),C:\ProgramData, danC:\$Recycle.Bin. - Analisis non-blocking — Proses inferensi AI berjalan di background thread, sehingga UI tetap responsif selama analisis berlangsung.
- Parsing hasil terstruktur — Output model diparsing menjadi komponen terpisah: tingkat risiko, label kategori, dan analisis teknis detail.
| Komponen | Teknologi |
|---|---|
| Bahasa Pemrograman | Java 17 (maven.compiler.release=17) |
| UI Framework | JavaFX 21.0.2 |
| LLM Runtime | Ollama (lokal) v0.1.48 atau lebih tinggi |
| Model AI | Qwen2 1.5B Instruct — GGUF, kuantisasi Q8_0 |
| JSON Processing | Jackson Databind 2.17.0 |
| Build Tool | Apache Maven 3.9.6 (dengan Maven Wrapper) |
| Build Plugin | javafx-maven-plugin 0.0.8 |
| OS Target | Windows 11 |
| Protokol Komunikasi | HTTP lokal (localhost:11434/api/generate) |
Windexer_github/
├── .gitignore # Aturan pengabaian file untuk Git
├── .mvn/
│ └── wrapper/
│ └── maven-wrapper.properties # Konfigurasi Maven Wrapper
├── README.md # Dokumentasi proyek (file ini)
├── build.bat # Script build alternatif (tanpa Maven)
├── build_jpackage.bat # Script packaging jpackage
├── icon/
│ ├── Icon.ico # Ikon aplikasi (Windows ICO format)
│ └── Icon.png # Ikon aplikasi (PNG format)
├── model/
│ └── Modelfile # Konfigurasi manifes model Ollama (template prompt)
├── mvnw.cmd # Maven Wrapper untuk Windows
├── pom.xml # Konfigurasi build Maven (dependencies, plugins)
├── run.bat # Script untuk menjalankan aplikasi
└── src/
└── main/
├── java/
│ ├── module-info.java # Deklarasi module Java (JPMS)
│ └── com/winindexer/
│ ├── AIAnalysisPanel.java # Panel kanan — tampilan hasil analisis AI
│ ├── FileExplorerPanel.java # Panel kiri — TreeView file explorer
│ ├── LoadingAnimation.java # Animasi loading (wave dots)
│ ├── Main.java # Entry point aplikasi + layout utama
│ ├── OllamaClient.java # HTTP client untuk komunikasi dengan Ollama API
│ └── WindexerParser.java # Parser output terstruktur dari model AI
└── resources/
├── icon/
│ └── Icon.png # Ikon aplikasi (untuk JavaFX runtime)
└── styles/
└── app.css # Stylesheet tema Windows 11 dark mode
| Kebutuhan | Spesifikasi |
|---|---|
| JDK | Versi 17 atau lebih tinggi |
| Maven | Versi 3.8+ (atau gunakan mvnw.cmd yang disertakan) |
| Ollama | Versi 0.1.48 atau lebih tinggi (berjalan sebagai service lokal) |
| Model GGUF | windexer-qwen-1.5b-q8.gguf (~1.53 GB ruang disk) |
| RAM | Minimal 8 GB (Model Qwen2 1.5B Q8_0 membutuhkan alokasi VRAM/RAM pasif hanya ~1.8 GB saat inferensi) |
| Ruang Disk | ~2.5 GB (Model GGUF ~1.53 GB + runtime + dependensi Maven) |
| Sistem Operasi | Windows 11 |
| Koneksi Internet | Diperlukan hanya saat instalasi awal untuk mengunduh dependensi Maven & repositori model dari Hugging Face. |
git clone <URL-REPOSITORY-GITHUB-ANDA>
cd Windexer_githubUnduh dan instal Ollama untuk Windows dari situs resmi: https://ollama.com/download
Setelah instalasi selesai, pastikan aplikasi Ollama telah berjalan di latar belakang (dapat diverifikasi via system tray atau membuka perintah ollama serve).
File biner model tidak disertakan di dalam repository ini karena batasan ukuran file Git. Unduh model secara manual melalui repositori Hugging Face resmi proyek ini:
Unduh file model qwen2-1.5b-instruct.Q8_0.gguf dari repositori berikut: https://huggingface.co/Michael-dvs/Windexer-Qwen2-1.5B-q8-GGUF
Letakkan file yang telah diunduh ke dalam direktori model/ di root proyek Anda, sehingga strukturnya menjadi:
model/
├── Modelfile
└── qwen2-1.5b-instruct.Q8_0.gguf
Buka terminal/PowerShell pada root direktori proyek, lalu jalankan perintah berikut untuk meregistrasikan model ke dalam periferal manifest Ollama lokal:
cd model
ollama create windexer_q8 -f ModelfileVerifikasi keberhasilan pembuatan model melalui perintah:
ollama list
# Output harus menampilkan baris data: windexer_q8Jalankan perintah Maven berikut pada root direktori proyek untuk mengompilasi kode dan mengeksekusi siklus antarmuka grafis aplikasi:
# Menggunakan Maven Wrapper bawaan proyek
.\mvnw.cmd javafx:runSetelah aplikasi berhasil dijalankan, antarmuka terbagi menjadi dua panel: panel kiri menampilkan file explorer dengan navigasi tree view untuk 5 direktori sistem Windows, dan panel kanan menampilkan hasil analisis AI.
Untuk menganalisis sebuah file:
- Navigasikan file explorer pada panel kiri dan pilih berkas target.
- Klik kanan pada berkas tersebut, lalu pilih menu "✨ Deteksi AI".
- Aplikasi akan menampilkan animasi gelombang loading dinamis selama pemrosesan data luring berlangsung.
- Hasil asesmen keamanan berupa tingkat risiko (1–5) beserta narasi ulasan forensik akan disajikan pada panel kanan secara otomatis.
[Pengguna] → Klik kanan file → Context Menu → "✨ Deteksi AI"
↓
FileExplorerPanel.handleDeteksiAI(file)
↓ Ekstraksi metadata (nama, path, ukuran, hidden, system)
↓ Format prompt sesuai template Alpaca
↓
OllamaClient.sendRequest(prompt, callback) ← Background thread (ExecutorService)
↓
Ollama API: http://localhost:11434/api/generate
↓ JSON response
↓
WindexerParser.parse(response) ← Parsing terstructured
↓
callback.onSuccess(parsedResult)
↓ Platform.runLater()
AIAnalysisPanel.showResult(fileName, result) ← JavaFX Application Thread
WINDEXER adalah purwarupa riset akademik (research prototype) yang dikembangkan untuk keperluan tugas akhir (skripsi). Aplikasi ini BUKAN produk produksi dan tidak direkomendasikan untuk digunakan sebagai satu-satunya dasar keputusan dalam menghapus file sistem tanpa verifikasi manual tambahan oleh pengguna.
Seluruh proses inferensi berjalan sepenuhnya offline/on-device. Tidak ada data pengguna, metadata file, atau informasi sistem apa pun yang dikirim ke server eksternal.
Hasil klasifikasi risiko yang dihasilkan oleh model AI bersifat prediktif dan probabilistik — dapat mengandung kesalahan (false positive/negative).
Pengguna bertanggung jawab penuh atas setiap tindakan penghapusan file yang dilakukan berdasarkan rekomendasi aplikasi ini.
Pengembang tidak bertanggung jawab atas kerusakan sistem, kehilangan data, atau konsekuensi lain yang mungkin timbul dari penggunaan aplikasi ini.
Proyek purwarupa akademik ini dilisensikan di bawah ketentuan Lisensi Apache 2.0. Lihat berkas LICENSE untuk informasi hak cipta dan batasan hukum lebih lanjut.