Türkçe teknik makale yazım denetleyicisi — yerel LLM + RAG ile.
Muharrir, Türkçe teknik makalelerin dilini ve ifade biçimini yerel LLM (Ollama) ve RAG (Retrieval-Augmented Generation) kullanarak denetler ve iyileştirme önerileri sunar. Verileriniz makinenizden çıkmaz.
brew tap alpozcan/muharrir
brew install muharrirmint install alpozcan/muharrirgit clone https://github.com/alpozcan/muharrir.git
cd muharrir
swift build -c release
cp .build/release/muharrir /usr/local/bin/Muharrir, Ollama'nın yerel olarak çalışmasını gerektirir:
brew install ollama
brew services start ollama
ollama pull gemma3:4b # Metin üretimi
ollama pull nomic-embed-text # Embedding'lerMakaleleri corpus'a ekleyerek RAG bağlamı oluşturun:
# Yerel markdown dosyaları ekle
muharrir add makale.md diger-makale.md
# Web'den Türkçe teknik makaleleri tara
muharrir scrape https://example.com/swift-makale
# Seed URL'lerden otomatik keşif
muharrir scrape --discover# Paragraf paragraf dil kontrolü (RAG destekli)
muharrir check makale.md
# RAG olmadan kontrol
muharrir check makale.md --no-rag
# Bütünsel makale incelemesi
muharrir review makale.md
# Somut kelime/ifade iyileştirme önerileri
muharrir improve makale.md# Corpus'ta anlamsal arama
muharrir search "Swift macro kullanımı"
# Sonuç sayısını belirle
muharrir search "async defer" -n 10
# Corpus ve model istatistikleri
muharrir stats┌─────────────┐ ┌──────────────────┐ ┌─────────────┐
│ Makaleler │────▶│ Embedding Model │────▶│ Vector Store│
│ (.md) │ │ (nomic-embed) │ │ (JSON disk) │
└─────────────┘ └──────────────────┘ └──────┬──────┘
│
┌─────────────┐ ┌──────────────────┐ │ RAG
│ Analiz │ ◀───│ LLM Model │◀───────────┘
│ Çıktısı │ │ (gemma3:4b) │
└─────────────┘ └──────────────────┘
- Corpus: Türkçe teknik makaleler chunk'lara bölünür ve
nomic-embed-textile embedding'leri oluşturulur - RAG: Kontrol edilen makaleye en benzer chunk'lar cosine similarity ile bulunur
- LLM: Referans metinlerle birlikte
gemma3:4bmodeline gönderilir ve Türkçe yazım önerileri üretilir
Tüm işlem yerel makinenizde gerçekleşir — veri dışarı çıkmaz.
| Bileşen | Teknoloji |
|---|---|
| Dil | Swift 6.0, macOS 13+ |
| CLI Framework | swift-argument-parser |
| LLM İstemci | ollama-swift |
| HTML Ayrıştırma | SwiftSoup |
| Terminal Renkleri | Rainbow |
| Metin Modeli | gemma3:4b |
| Embedding Modeli | nomic-embed-text |
| Vector Store | Actor-tabanlı, cosine similarity, JSON disk |
| Chunking | 500 karakter, 100 karakter overlap |
| CI/CD | GitHub Actions (build + test + SwiftLint) |
| Testler | 70 birim testi |
| Komut | Açıklama |
|---|---|
muharrir add <dosyalar...> |
Yerel dosyaları corpus'a ekle |
muharrir scrape [url'ler...] |
Web'den makale tara ve indeksle |
muharrir check <makale> |
Paragraf paragraf dil denetimi |
muharrir review <makale> |
Bütünsel makale incelemesi |
muharrir improve <makale> |
RAG tabanlı iyileştirme önerileri |
muharrir search <sorgu> |
Corpus'ta anlamsal arama |
muharrir stats |
Corpus ve model istatistikleri |
MIT
# Derleme
swift build
# Testleri çalıştır
swift test
# Lint kontrolü
swiftlint --strictKatkılarınızı bekliyoruz! Detaylar için CONTRIBUTING.md rehberine bakın.
Kısaca: issue açın, fork'layın, değişiklik yapın, swift test ve swiftlint --strict ile doğrulayın, PR gönderin.