alpozcan/yazman
Türkçe teknik makale yazım denetleyicisi — yerel LLM + RAG ile. Turkish technical article wording checker powered by local LLM and RAG.
Kurulum
Homebrew
brew install alpozcan/yazman/yazmanMint
mint install alpozcan/yazmanKaynaktan Derleme (Swift Package Manager)
git clone https://github.com/alpozcan/yazman.git
cd yazman
swift build -c release
cp .build/release/yazman /usr/local/bin/Gereksinimler
Yazman'in çalışması için Ollama'nın yerel olarak kurulu ve çalışır durumda olması gerekir:
brew install ollama
brew services start ollama
ollama pull gemma3:4b # Metin üretimi modeli
ollama pull nomic-embed-text # Embedding modeliKullanım
Corpus Oluşturma
Makaleleri corpus'a ekleyerek RAG bağlamını oluşturun:
yazman add makale.md diger-makale.md
# Web'den Türkçe teknik makaleleri tara
yazman scrape https://example.com/swift-makale
# Seed URL'lerden otomatik keşfet
yazman scrape --discoverDil Denetimi
# Paragraf paragraf dil kontrolü (RAG destekli)
yazman check makale.md
# RAG olmadan kontrol
yazman check makale.md --no-rag
# Bütünsel makale incelemesi
yazman review makale.md
# Somut kelime ve ifade iyileştirme önerileri
yazman improve makale.mdArama ve İstatistikler
# Corpus'ta anlamsal arama
yazman search "Swift macro kullanımı"
# Sonuç sayısını belirle
yazman search "async defer" -n 10
# Corpus ve model istatistikleri
yazman statsSistem Mimarisi
┌──────────────────────────────────────────────────────────────────────┐
│ CLI Katmanı (Sunum) │
│ │
│ check ∙ review ∙ improve ∙ search ∙ add ∙ scrape ∙ stats │
│ ── swift-argument-parser ile AsyncParsableCommand ── │
└──────────────────────────┬───────────────────────────────────────────┘
│
┌───────────────┼───────────────┐
▼ ▼ ▼
┌─────────────────┐ ┌────────────┐ ┌──────────────────┐
│ İçerik Girdi │ │ Denetim │ │ RAG Boru Hattı │
│ │ │ Motoru │ │ │
│ Scraper │ │ │ │ VectorStore │
│ ├ URL fetch │ │ Checker │ │ ├ Parçalama │
│ ├ HTML parse │ │ ├ Paragraf │ │ │ (500k/100k) │
│ │ (SwiftSoup) │ │ │ çıkarma │ │ ├ Embedding │
│ └ Makale cache │ │ ├ RAG bağ- │ │ │ (nomic-embed) │
│ │ │ │ lam inşa │ │ ├ SIMD cosine │
│ Add (yerel .md) │ │ └ LLM akış │ │ │ (Accelerate) │
│ │ │ çıktısı │ │ └ JSON disk │
└────────┬────────┘ └─────┬──────┘ └────────┬─────────┘
│ │ │
│ │ Benzer │
│ Makale │ Parçalar │
│ Metni │ ◀───────────────┘
│ │
└───────────┐ │
▼ ▼
┌──────────────────────────┐
│ Ollama (Yerel) │
│ │
│ gemma3:4b nomic- │
│ (üretim) embed-text │
│ (embedding) │
│ │
│ Lifecycle: brew svc │
│ start/stop + sinyal │
└──────────────────────────┘
│
▼
┌──────────────────────────┐
│ Terminal Çıktısı │
│ │
│ Spinner animasyonu │
│ İlerleme çubuğu │
│ Renkli çıktı (Rainbow) │
│ OSLog yapısal log │
└──────────────────────────┘Katman Açıklamaları
| Katman | Açıklama | |--------|----------| | CLI | 7 alt komut sunan giriş noktası; argüman ayrıştırma ve iş akışı yönetimi | | İçerik Girdi | Web'den (SwiftSoup ile HTML parse) ve yerel dosyalardan makale toplama, ~/.yazman/corpus/ altında JSON önbellek | | Denetim Motoru | Markdown'dan paragraf çıkarma, RAG bağlamı oluşturma, LLM'e akış (streaming) sorguları gönderme | | RAG Boru Hattı | Actor tabanlı VectorStore: metin parçalama → embedding üretimi → SIMD hızlandırmalı cosine similarity arama | | Ollama | Yerel LLM sunucusu; Lifecycle bileşeni Homebrew servisleri ile otomatik başlatma/durdurma ve sinyal yönetimi sağlar | | Terminal Çıktısı | Braille spinner, kelime kelime açılma efekti, ilerleme çubuğu, renkli biçimlendirme ve yapısal loglama |
Veri Akışı
- Corpus: Türkçe teknik makaleler parçalara (chunk) bölünür ve
nomic-embed-textile embedding vektörleri oluşturulur - RAG: Denetlenen makaleye en benzer parçalar 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ıya çıkmaz.
Komutlar
| Komut | Açıklama | |-------|----------| | yazman add <dosyalar...> | Yerel dosyaları corpus'a ekler | | yazman scrape [url'ler...] | Web'den makale tarar ve indeksler | | yazman check <makale> | Paragraf paragraf dil denetimi yapar | | yazman review <makale> | Bütünsel makale incelemesi yapar | | yazman improve <makale> | RAG tabanlı iyileştirme önerileri sunar | | yazman search <sorgu> | Corpus'ta anlamsal arama yapar | | yazman stats | Corpus ve model istatistiklerini gösterir |
Teknik Ayrıntılar
| Bileşen | Teknoloji | |---------|-----------| | Dil | Swift 6.0, macOS 13+ | | CLI Çatısı | swift-argument-parser | | LLM İstemcisi | ollama-swift | | HTML Ayrıştırma | SwiftSoup | | Terminal Renklendirme | Rainbow | | Metin Modeli | gemma3:4b | | Embedding Modeli | nomic-embed-text | | Vektör Deposu | Actor tabanlı, cosine similarity, JSON disk | | Parçalama | 500 karakter, 100 karakter örtüşme | | Sürekli Entegrasyon | GitHub Actions (derleme + test + SwiftLint) | | Testler | 70 birim testi |
Geliştirme
# Derleme
swift build
# Testleri çalıştır
swift test
# Lint kontrolü
swiftlint --strictKatkıda Bulunma
Katkılarınızı bekliyoruz! Ayrıntılar için CONTRIBUTING.md rehberine göz atın.
Kısaca: bir issue açın, fork'layın, değişikliklerinizi yapın, swift test ve swiftlint --strict ile doğrulayın, PR gönderin.
Lisans
Package Metadata
Repository: alpozcan/yazman
Stars: 1
Forks: 0
Open issues: 0
Default branch: main
Primary language: swift
License: MIT
Topics: cli, lint, linting, llm, macos, nlp, ollama, rag, swift, swiftui, turkish, writing-assistant
README: README.md