Problem: fazla bilgi, az cevap

Donanım izleme araçları çok sayıda sensör değeri gösteriyor ancak kullanıcı çoğu zaman “oyun neden yavaşladı?” sorusuna kısa bir cevap arıyor. Amacım sürekli ekranda duran yoğun grafikler yerine arka planda sakin çalışan ve yalnızca gerekli olduğunda öneri veren bir asistan oluşturmaktı.

Akıllı Donanım Asistanı kontrol merkezi ve canlı sistem ölçümleri
Kontrol Merkezi, canlı CPU, GPU ve RAM durumunu sade kartlarda gösteriyor. Son uyarılar ile en çok bellek kullanan süreçler aynı ekranda, ancak yalnızca karar vermeye yarayan bilgiler öne çıkıyor.

Analiz motoru ve ekranları ayırmak

Çözümü iki projeye ayırdım. HardwareAssistant.Core sensör okuma, süreç denetimi ve darboğaz kurallarını içeriyor. HardwareAssistant.App ise WPF kontrol panelini, sistem tepsisi menüsünü ve oyun üstü overlay'i yönetiyor. Bu ayrım analiz motorunun arayüzden bağımsız test edilebilmesini sağlıyor.

Core projesi .NET 9 üzerinde LibreHardwareMonitor 0.9.6 ve PerformanceCounter kullanıyor. CPU/GPU yükü ve sıcaklığı, RAM baskısı ve en çok bellek kullanan süreçler ortak bir anlık görüntü modelinde toplanıyor.

Sensörleri güvenilir okumak

Her bilgisayar aynı sensör adlarını veya değerleri sunmuyor. Bu nedenle verileri isim, donanım türü ve SensorType üzerinden filtreliyorum. Geçersiz sıcaklık ve yük değerlerini eliyor, birden fazla aday olduğunda anlamlı olanı seçiyorum. Bazı anakart ve GPU sensörleri için yönetici yetkisi gerekebiliyor.

Sensörleri 2,5 saniyede bir okuyacak şekilde ayarladım. Daha sık okuma görsel olarak akıcı olabilir fakat bu aracın amacı benchmark yapmak değil, arka planda düşük maliyetle sorun yakalamak.

Darboğaz ve uyarı kuralları

Analiz motoru CPU darboğazı, yüksek sıcaklık, RAM baskısı ve GPU sınırı gibi durumları inceliyor. Aynı uyarının sürekli görünmesini engellemek için 45 saniyelik uyarı bekleme süresi kullanıyorum. Sık karşılaşılan olaylarda bir yapay zekâ modeline istek göndermek yerine hazır Türkçe mesaj şablonları dönüyor; böylece araç çevrimdışı ve öngörülebilir çalışıyor.

Tasarım ilkesi

Bir sensör değeri tek başına uyarı sebebi değil. Uyarı, kullanıcıya uygulanabilir bir öneri verebildiğinde gösteriliyor.

Oyun üstü WPF overlay

Overlay saydam, TopMost ve click-through bir WPF penceresi. Uyarı geldiğinde görünür oluyor, sekiz saniye sonra kapanıyor ve fare girişini oyundan çalmıyor. Ana pencere kapatılmak yerine sistem tepsisine indirilebiliyor; kullanıcı paneli tepsi menüsünden yeniden açabiliyor.

Paketleme ve antivirüs gerçeği

İlk dağıtımda tek dosya self-contained paket pratik görünüyordu. Ancak sıkıştırılmış ve kendini açan EXE yapıları bazı antivirüslerde yanlış pozitif üretebiliyor. Bu nedenle framework-dependent, sıkıştırılmamış ve kütüphaneleri yanında taşıyan temiz bir win-x64 paketi hazırladım.

Sonuç ve devamı

FPS ve yüzde 1 low alanları veri modelinde hazır; gerçek değerler için ileride RTSS veya PresentMon entegrasyonu gerekiyor. Bu projede öğrendiğim en önemli şey, masaüstü aracında yalnızca algoritmanın değil dağıtım biçiminin ve kullanıcı güveninin de ürün tasarımına dâhil olduğuydu.

Mülakatta sorulabilecek bir soru

Uyarıları yapay zekâ modeli mi üretiyor?

Bu sürümde uyarılar tanımlı kurallar ve hazır Türkçe mesajlarla üretiliyor. Böylece sık yapılan ölçümler için her seferinde model çağrısı gerekmiyor.

Kısa Özet

Bilgisayarın işlemci, ekran kartı, sıcaklık ve bellek bilgilerini izleyip anlaşılır uyarılar gösteren bir masaüstü aracı geliştirdim. C# ve .NET ile analiz kısmını, WPF ile arayüzü hazırladım. LibreHardwareMonitor üzerinden sensörleri okuyup belirli kurallarla değerlendirdim. Aynı uyarının sürekli çıkmasını bekleme süresiyle engelledim. Bu projede sensör verisini okumak kadar onu kullanıcıya anlamlı bir öneri olarak sunmayı öğrendim.