Steve Yegge’nin "Software Survival 3.0"da sözünü ettiği "içgörü sıkıştırması (Insight Compression)" — Git veya Kubernetes’te onlarca yıllık deneme-yanılmanın sıkıştırılmış olması ve bu yüzden LLM’lerin bunu kolayca yeniden üretememesi — fikrinden yola çıktım. Saju-myeongri için de benzer bir durum olduğunu düşündüm.
Saju’yu LLM’e bırakırsanız ne olur
Bugünlerde birçok kişinin yaptığı gibi saju verilerini LLM’e verdiğinizde kulağa makul gelen sonuçlar çıkıyor. Sorun, "makul görünme" ile "doğruluk" arasındaki fark.
GPT-5, GPT-4o, Claude, DeepSeek V3 gibi çeşitli modelleri structured output ve few-shot kombinasyonuyla test ettim. Sistematik hata noktaları vardı. Örneğin jongganggyeok (從強格) bir sajuya yalnızca eokbu (抑扶) mantığı uygulanıp ateşin (火) yararlı unsur olarak çıkarılması gibi. Klasik kaynaktaki "choknogangsin daehyung (觸怒強神 大凶)" ilkesini ihlal eden bu tür yargıları prompt ile tamamen önlemek mümkün olmadı.
Bunun dışında belirli bir ekol yorumuna anchoring olup özgün metni çarpıtma, olumsuz yorumları aşırı yumuşatma ya da tersine kaygıyı büyütme eğilimleri de vardı. Kural temelli yargıları LLM’in pattern matching yeteneğine bırakmak, aritmetiği bir dil modeline yaptırmakla aynı türden bir sorundu.
Hojak Engine: kurallar kodda, açıklama sadece LLM’de
Bu yüzden katmanlı bir yapı tasarladım.
Ho (虎) — kural motoru. Myeongri hesaplama mantığını kodla uygular. 5 büyük klasik kaynakta (Jeokcheonsu·Japyeongjinjeon·Gungtongbogam·Sammyeongtonghoe·Yeonhaejapyeong) ayrışan yorumlar arasında hangi alanlarda hangisini temel alacağımı belirledim ve bu kararları koda sabitledim.
Jak (鵲) — LLM açıklama katmanı. Motorun hesapladığı yapılandırılmış veriyi doğal dile döken kısmı yalnızca LLM’e bırakır.
LLM’lerin yeniden üretmekte zorlandığı şey kod değil, binlerce yılda rafine edilmiş karar ölçütleriydi.
Vibe coding’in sınıra dayandığı nokta
Başlangıçta her şey yolunda gidiyordu. LLM; klasik Çince kaynak analizi, ekollerin düzenlenmesi ve astronomik hesaplama kodunun ilk taslaklarında hızlıca yardımcı oldu. Sınır, ekoller arasındaki kuralların çeliştiği yerde ortaya çıktı.
Örneğin gyeokguk (格局) değerlendirmesinde, Jeokcheonsu önce gün efendisinin gücüne bakarken Japyeongjinjeon önce aylık komutanın görünür olup olmadığına bakıyor. Aynı saju için hangi kaynağı izlediğinize bağlı olarak sonucun tersine döndüğü durumlar çıktı ve bu öncelik sırasını LLM’in belirleyebileceği bir alan değildi.
Sonunda 5 ana kaynağı doğrudan temin edip karşılaştırmak zorunda kaldım. Eksik nüshalar ve okunamayan bölümler olduğu için farklı baskıları çapraz doğrulama sürecinden geçirdim. Sonradan bunun klasiklerin korunmasına yönelik güçlü bir kamu çalışmasıyla desteklendiğini gördüm; yine de LLM yardımı olmadan bireysel olarak üstlenmesi çok zor bir işti. Claude Max x20’yi neredeyse 3 ay boyunca limitine kadar kullandım.
İlginç olan şu ki, özgün metni hatalı aktaran taraf çoğunlukla insanlardı (akademisyenler). Jeokcheonsu’deki "旺者宜泄, 唯有情有力者可克" ifadesini nasıl okuduğunuza göre algoritmanın dallanması bile değişiyor; LLM ise farklı akademisyen çevirileriyle özgün metin açıklamalarını çapraz karşılaştırmada aksine faydalı oldu.
Zaman hassasiyeti: 1 dakika hükmü değiştirir
Myeongri’de 1 dakikalık zaman farkı temel değerlendirmeyi değiştirebilir. Jasi (子時) ile Chuksi (丑時) sınırında saat sütunu değişirse gyeokguk değerlendirmesinin kendisi de değişir.
Hojak Engine; NASA/JPL tabanlı Fourier serisi denklem-zamanı hesabını (±13 saniye hassasiyet), IANA tzdata tabanlı küresel DST tespitini ve 163.400+ şehirlik boylam veritabanını birleştirir. Kore için 1908’den bu yana yapılan 4 standart boylam değişikliğini ve 12 yıllık yaz saati uygulaması geçmişini yansıtır.
Joseon dönemi Gwansanggam’ın resmî kaydında (Seoungwanji), mevcut koddakiyle aynı boylam düzeltme formülünü bulmam kişisel olarak etkileyici bir deneyimdi.
Doğrulama durumu
Güneş dönemleri hesabı, Kore Astronomi ve Uzay Bilimi Enstitüsü’nün (KASI) 2000–2050 arası resmî verileriyle karşılaştırıldığında %100 eşleşiyor. Denklem-zamanı hesabında NASA/JPL Horizons tabanlı ±13 saniye hassasiyet sağlandı. Sin-sal hesapları için ortodoks On İki Sin-sal sistemi (Sammyeongtonghoe tabanlı) seçilip almanaklarla karşılaştırıldığında %100 eşleşme elde edildi; guiinsal ve teuksusal ise klasik kaynaklar arasında çapraz doğrulandıktan sonra orthodox / disputed / reference olmak üzere 3 aşamalı sınıflandırmayla uygulanıyor.
Teknoloji yığını
Motor Python FastAPI + PostgreSQL + SQLAlchemy 2.0(async), ön yüz ise Next.js 15 + React 19 + TypeScript + Tailwind CSS kullanıyor. Yapay zeka tarafında OpenRouter üzerinden çoklu model (GPT-4o, Claude, DeepSeek V3) yalnızca açıklama katmanında kullanılıyor. Dağıtım Fly.io (Blue-Green) + Vercel, ödeme ise Toss Payments + PayPal ile yapılıyor.
Şu anda saju-palja analizinde 30.000+ karakterlik, yıllık analizde ise 20.000+ karakterlik yapılandırılmış raporlar üretiyor ve doğum verileri şifrelenmiş şekilde saklanıyor.
Kapanış
Myeongri’nin öngörü geçerliliği hakkında farklı görüşler var. Bu proje, o tartışmadan çok "eğer bu sistemi kullanacaksak, onu amaçlandığı biçimde doğru ölçütlerle ve tutarlı şekilde hesaplayalım" diyen bir mühendislik problemine odaklandı.
Başlangıçta vibe coding ile hafifçe yola çıktım ama sonunda 5 büyük klasik kaynağı inceleyip NASA/JPL denklem-zamanı koduna kadar bakar hale geldim. Yegge’nin ifadesiyle söylersek, bu alana sıkıştırılmış içgörü yoğunluğu beklediğimden çok daha yüksekti.
Teknik sorulara veya geri bildirimlere açığım.
3 yorum
Büyük şans dönemi pek iyi görünmediği için biraz üzücü ama... Kader dizilişi genel olarak saat, gün, ay, yıl sırasındadır; bu hizmette ise bunun tersi olduğu için biraz kafa karıştırıcı bir yönü vardı. Özel bir niyetiniz yoksa bunu genel kabul gören dizilişe çevirmeniz nasıl olur?
Belirttiğiniz üzere hemen gün/ay/yıl sıralamasından yıl/ay/gün düzenine geçirdim. Başka bir işle uğraştığım için dağıtımı ancak şimdi topluca yapabildim. Teşekkür ederim.
İncelediğimde, gerçekten de sajuya zaten ilgi duyan kişilerin içeriğe daha derin bir bağ kurduğunu ve hizmeti de daha uzun süre kullandığını gördüm. Başta "sajuyu bilmeyenler de kolayca" anlayabilsin diye dizilimi değiştirmem yanlış bir kararmış. Geri bildiriminiz sayesinde yönü hemen düzeltebildim. Bir kez daha teşekkür ederim.
Dizi sırası konusundaki yorumunuz doğru. Başlangıçta, sajuya aşina olmayan kişilerin kendi doğum yıl-ay-gün-saat bilgilerini sezgisel biçimde görebilmesi için bunu kronolojik sıraya göre (yıl-ay-gün-saat) yerleştirmiştim; ancak düşündüğümden daha fazla kişinin zaten saju dizilimine alışık olduğu için bunun aksine kafa karışıklığına yol açmış gibi görünüyor.
Klasik kaynaklarda da doğru dizilim saat-gün-ay-yıl olduğundan, değişikliği ciddi biçimde değerlendireceğim. Gerçekten gerekli bir geri bildirimdi,
geri bildiriminiz için teşekkür ederim!
Ayrıca, büyük şans döngüsünün kolay olmayan bir dönem olduğunu söylemiştiniz; ancak Myeongri'de büyük şans döngüsü ana akıştır ve onun içinde yıllık akışın (歲運) değişimleri vardır. Zor bir büyük şans döngüsünün içinde bile faydalı unsuru karşılayacağınız zaman mutlaka gelir; o zaman fırsatı iyi yakalamanızı dilerim.