Contents

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/yazman

Mint

mint install alpozcan/yazman

Kaynaktan 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 modeli

Kullanı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 --discover

Dil 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.md

Arama 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 stats

Sistem 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ışı

  1. Corpus: Türkçe teknik makaleler parçalara (chunk) bölünür ve nomic-embed-text ile embedding vektörleri oluşturulur
  2. RAG: Denetlenen makaleye en benzer parçalar cosine similarity ile bulunur
  3. LLM: Referans metinlerle birlikte gemma3:4b modeline 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 --strict

Katkı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

MIT

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