Steve Yegge từng nói về "nén tri thức (Insight Compression)" trong "Software Survival 3.0" — rằng trong Git hay Kubernetes có nén lại hàng chục năm thử sai nên LLM không thể dễ dàng tái hiện. Tôi bắt đầu từ suy nghĩ rằng saju mệnh lý học cũng tương tự.
Điều gì xảy ra khi giao saju cho LLM
Dạo này nhiều người làm như vậy: đưa dữ liệu saju vào LLM thì sẽ ra kết quả khá thuyết phục. Vấn đề là khoảng cách giữa "có vẻ đúng" và "chính xác".
Tôi đã thử nghiệm nhiều mô hình như GPT-5, GPT-4o, Claude, DeepSeek V3 bằng cách kết hợp structured output và few-shot. Có những điểm lỗi mang tính hệ thống. Chẳng hạn, với một lá số thuộc jongganggyeok (從強格), mô hình lại chỉ áp dụng logic eokbu (抑扶) để suy ra hỏa(火) là dụng thần. Những phán định vi phạm nguyên tắc trong nguyên điển là "xúc nộ cường thần, đại hung (觸怒強神 大凶)", và không thể ngăn chặn hoàn toàn chỉ bằng prompt.
Ngoài ra còn có xu hướng bị neo vào cách diễn giải của một học phái cụ thể rồi làm méo nghĩa nguyên văn, hoặc tô hồng quá mức các lời giải không tốt, hay ngược lại là khuếch đại cảm giác bất an. Giao việc phán định theo quy tắc cho pattern matching của LLM cũng là một vấn đề cùng loại với việc bắt mô hình ngôn ngữ làm số học.
Hojak Engine: quy tắc viết bằng code, chỉ giao phần diễn giải cho LLM
Vì vậy tôi đã thiết kế cấu trúc nhiều lớp.
Ho (虎) — rule engine. Logic tính toán của mệnh lý học được triển khai bằng code. Sau khi xác lập theo từng phạm vi rằng sẽ lấy cách hiểu nào làm chuẩn giữa các diễn giải khác nhau của 5 nguyên điển kinh điển (Jeokcheonsu, Japyeongjinjeon, Gungtongbogam, Sammyeongtonghoe, Yeonhaejapyeong), tôi cố định phán định đó vào code.
Jak (鵲) — lớp diễn giải bằng LLM. Chỉ phần chuyển dữ liệu có cấu trúc mà engine đã tính thành ngôn ngữ tự nhiên mới được giao cho LLM.
Điều LLM khó tái hiện không phải là code, mà là các tiêu chuẩn phán định đã được mài giũa suốt hàng nghìn năm.
Điểm mà giới hạn của vibe coding xuất hiện
Ban đầu mọi thứ khá suôn sẻ. LLM hỗ trợ rất nhanh từ phân tích nguyên điển chữ Hán, sắp xếp các học phái, cho đến bản nháp code tính toán thiên văn. Giới hạn xuất hiện ở những điểm mà quy tắc giữa các học phái xung đột với nhau.
Ví dụ trong phán định cách cục (格局), Jeokcheonsu ưu tiên xem cường nhược của nhật can trước, còn Japyeongjinjeon lại ưu tiên xem nguyệt lệnh thấu xuất trước. Có những trường hợp cùng một lá số nhưng phán định bị đảo ngược tùy theo lấy nguyên điển nào làm chuẩn, và thứ tự ưu tiên này không phải thứ LLM có thể quyết định giúp.
Cuối cùng tôi buộc phải trực tiếp thu thập và đối chiếu 5 nguyên điển. Vì có một số bản bị thiếu hoặc có đoạn không đọc được, tôi đã phải trải qua quá trình kiểm chứng chéo giữa nhiều dị bản. Sau đó mới biết rằng đã có nỗ lực bảo tồn cổ điển ở quy mô quốc gia, nhưng nếu không có sự hỗ trợ của LLM thì đây là công việc mà cá nhân rất khó gánh nổi. Tôi gần như dùng kín hạn mức Claude Max x20 trong suốt gần 3 tháng.
Điểm thú vị là phần lớn các trường hợp chép sai nguyên văn lại đến từ phía con người (các học giả). Cách đọc câu trong Jeokcheonsu là "旺者宜泄, 唯有情有力者可克" có thể làm thay đổi hẳn nhánh thuật toán, và ở điểm này LLM lại hữu ích hơn trong việc đối chiếu chéo giữa bản dịch của nhiều học giả và chú giải nguyên văn.
Độ chính xác thời gian: 1 phút có thể đổi cả phán định
Trong mệnh lý học, chênh lệch 1 phút có thể làm thay đổi phán định cốt lõi. Nếu trụ giờ đổi ở ranh giới giữa giờ Tý (子時) và giờ Sửu (丑時), bản thân phán định cách cục cũng sẽ thay đổi.
Hojak Engine kết hợp phương trình thời gian dạng chuỗi Fourier dựa trên NASA/JPL (độ chính xác ±13 giây), phán định DST toàn cầu dựa trên IANA tzdata, và cơ sở dữ liệu kinh độ của hơn 163.400 thành phố. Với Hàn Quốc, hệ thống phản ánh 4 lần thay đổi kinh độ tiêu chuẩn từ năm 1908 và 12 năm lịch sử giờ mùa hè.
Việc tìm thấy trong ghi chép chính thức của Gwansanggam thời Joseon (Seoungwanji) công thức hiệu chỉnh kinh độ giống hệt code hiện tại là một trải nghiệm rất ấn tượng với cá nhân tôi.
Tình trạng kiểm chứng
Tính toán tiết khí được đối chiếu với dữ liệu chính thức của Viện Nghiên cứu Thiên văn Hàn Quốc (KASI) trong giai đoạn 2000–2050 và khớp 100%. Phương trình thời gian đạt độ chính xác ±13 giây dựa trên NASA/JPL Horizons. Thần sát dùng hệ thập nhị thần sát chính thống (dựa trên Sammyeongtonghoe), đối chiếu với lịch vạn niên và khớp 100%; còn quý nhân sát và đặc thù sát được phân loại áp dụng theo 3 mức orthodox / disputed / reference sau khi kiểm chứng chéo nguyên điển.
Tech stack
Engine dùng Python FastAPI + PostgreSQL + SQLAlchemy 2.0(async), frontend dùng Next.js 15 + React 19 + TypeScript + Tailwind CSS. AI sử dụng multi-model (GPT-4o, Claude, DeepSeek V3) qua OpenRouter nhưng chỉ cho lớp diễn giải. Triển khai bằng Fly.io (Blue-Green) + Vercel, thanh toán dùng Toss Payments + PayPal.
Hiện hệ thống tạo báo cáo có cấu trúc ở quy mô hơn 30.000 ký tự cho phân tích saju palja và hơn 20.000 ký tự cho phân tích hằng năm; dữ liệu khai sinh được lưu trữ dưới dạng mã hóa.
Kết
Có nhiều góc nhìn khác nhau về hiệu lực dự báo của mệnh lý học. Dự án này không tập trung vào cuộc tranh luận đó mà tập trung vào bài toán kỹ thuật: "nếu đã dùng hệ thống này thì hãy tính toán một cách nhất quán theo đúng tiêu chuẩn mà nó định hướng".
Khởi đầu là một dự án vibe coding khá nhẹ nhàng, nhưng cuối cùng tôi đã đi đến việc phân tích 5 cổ thư nguyên điển và cả xem code phương trình thời gian của NASA/JPL. Mượn cách diễn đạt của Yegge, mật độ tri thức được nén trong domain này cao hơn rất nhiều so với dự đoán của tôi.
Rất hoan nghênh các câu hỏi kỹ thuật hoặc phản hồi.
3 bình luận
Vận đại vận có vẻ không được tốt nên cũng hơi buồn... Thông thường bát tự được sắp theo thứ tự giờ, ngày, tháng, năm, nhưng dịch vụ này lại làm ngược lại nên có chỗ hơi gây bối rối. Nếu không có chủ đích gì đặc biệt thì liệu đổi sang cách sắp xếp thông thường có được không?
Ngay sau khi nhận được góp ý, tôi đã đổi lại ngay sang thứ tự ngày-tháng-năm. Vì còn bận làm việc khác nên đến giờ tôi mới gộp lại để phát hành. Cảm ơn bạn.
Sau khi phân tích, tôi nhận ra rằng trên thực tế, những người vốn đã quan tâm đến tứ trụ lại đồng cảm sâu hơn với nội dung và cũng sử dụng dịch vụ lâu hơn. Ban đầu, vì mong muốn “ngay cả người không biết về tứ trụ cũng thấy dễ hiểu” nên tôi đã đổi cách sắp xếp, và đó là một phán đoán sai lầm. Nhờ phản hồi của bạn, tôi đã có thể kịp thời điều chỉnh lại định hướng. Một lần nữa xin cảm ơn.
Bạn nói đúng về thứ tự của mảng. Ban đầu, để những người chưa quen với tứ trụ có thể trực quan kiểm tra năm-tháng-ngày-giờ sinh của mình, tôi đã sắp xếp theo trình tự thời gian (năm-tháng-ngày-giờ), nhưng có vẻ như nhiều người đã quen với cách sắp xếp của tứ trụ hơn tôi nghĩ, nên điều đó ngược lại đã gây ra chút bối rối.
Ngay cả trong các nguyên điển kinh điển, thứ tự chuẩn cũng là giờ-ngày-tháng-năm, nên tôi sẽ tích cực xem xét việc thay đổi. Đây đúng là một phản hồi rất cần thiết,
Cảm ơn bạn đã góp ý!
Và bạn có nói rằng đây là một giai đoạn đại vận không dễ dàng, nhưng trong mệnh lý, đại vận là dòng chảy lớn, và bên trong đó có những thay đổi của tuế vận. Ngay cả trong một đại vận khó khăn, rồi cũng sẽ có lúc gặp được dụng thần, nên mong bạn nắm bắt tốt cơ hội khi thời điểm ấy đến.