✶ 이 글은 K-MUDANG의 철학 칼럼입니다. 사주 계산을 왜 코드가 맡고 풀이를 왜 용해인(龍海仁)이 맡는지, 그 경계를 설명합니다. 그 계산이 어떤 고전과 천문 데이터에 근거하는지 맨 아래 참고문헌까지 함께 밝혀 둡니다.
사주에서 가장 먼저 보는 건 일간(日干)입니다. 태어난 날의 천간, 그 사람 자신입니다.
일간이 병화(丙火)라고 해 봅시다. 같은 병화라도 자월(子月)에 났으면 한겨울 불이라 꺼질 판이고, 오월(午月)에 났으면 한여름 불이라 넘칩니다. 앞쪽은 목화(木火)로 살려야 하고, 뒤쪽은 수(水)로 눌러야 합니다. 조후(調候), 기후를 고르는 일입니다.
처방이 정반대입니다. 태어난 달 한 글자로 갈리게 되죠.
K-MUDANG 엔진은 조후를 여덟 가지로 냅니다. 극한(極寒), 한(寒), 한습(寒濕), 냉습(冷濕), 중화(中和), 조(燥), 극조(極燥), 수과다(水過多).
이 중에 찬 쪽을 골라내는 코드가 있었습니다. 판정 이름에 ‘한(寒)’이 들어갔는지를 봤습니다. 극한도 걸리고 한습도 걸립니다. 그런데 냉습에는 ‘한’이 없습니다.
찬데 안 찬 걸로 세어졌습니다. 냉습 사주만 조용히 빠진 거죠.
용신이 뒤집혀도 나온 글은 멀쩡합니다. 문장이 어색해지지 않으니 읽어서는 못 잡습니다. 한국어판과 영어판에 같은 사주를 넣고 답을 맞대 보고서야 나왔습니다.
요즘 AI 사주가 위험한 건 풀이가 이상해서가 아닙니다. 명식(命式)부터 틀리고, 지어내기 때문입니다. 그리고 틀린 명식 위에 얹은 풀이는, 조금도 이상하게 읽히지 않는 게 문제이죠. 언어모델은 계산은 못 하지만 스토리텔링은 잘하기 때문입니다.
■ 언어 모델은 계산하지 않습니다. 이어 붙일 뿐입니다
언어 모델은 다음에 올 법한 글자를 잇는 기계입니다. 그럴듯하게 위로는 잘합니다.
하지만 만세력을 펴고 절기 입기 시각을 따지는 건 다른 일이죠. 생년월일시를 던지면 일주(日柱)를 엉뚱하게 뽑습니다. 대운(大運) 순서를 뒤집고, 없는 신살(神殺)을 붙입니다.
문제는 그다음입니다. 틀린 명식 위에 얹힌 풀이도 매끄럽게 읽힙니다. 읽는 사람은 그게 자기 사주가 아니라는 걸 알 방법이 없습니다.
■ 사주 계산에는 취향이 들어갈 자리가 없습니다
원국, 진태양시 보정, 대운, 용신, 합충형파해. 답이 정해져 있습니다.
서울이면 표준자오선(동경 135도)과의 경도 차만큼 32분을 빼야 하죠. 1948~51년, 1955~60년, 1987~88년생은 그 시절 서머타임을 한 번 더 되돌립니다. 대운수는 태어난 순간부터 다음 절기까지 실제 일수를 세어 3으로 나눠야 하고요.
32분은 서울 값입니다. 부산 24분, 목포와 제주 34분, 울릉도 16분. 동쪽일수록 해가 일찍 남중하니까요. 그래서 출생지 칸을 따로 뒀습니다. 한국어판은 국내 23개 도시, 영어판은 120개국 463곳입니다.
시(時)도 두 시간 단위로 고르는 대신 시와 분을 그대로 넣을 수 있습니다.
대개는 시주를 분 단위까지 넣을 필요는 없죠. 태어난 시각이 지지(地支)가 갈리는 경계에 걸렸을 때만 달라지고, 그 경계는 출생지와 날짜에 따라 움직이니까요. 그래서 분까지 넣으면 정확해진다고는 하지 않겠습니다. 그 날짜 그 출생지에서 실제로 결과가 갈리는 구간을 계산해 두고, 거기 걸릴 만한 분께만 한 줄 띄우게 해 놓았습니다.
어디에도 술사의 취향이 낄 자리가 없습니다. 고전에 적힌 대로 정확하게 코드로 옮길 뿐이죠.
■ 하루가 바뀌는 자리
날짜는 자정에 바뀌지만 명리의 하루는 자시(子時)에 바뀝니다. 자시는 밤 열한 시 반에 열려 자정을 건너 새벽 한 시 반에 닫힙니다.
하루의 경계가 한 시간 반짜리 문 안에 들어앉아 있는 셈이죠.
그 문이 열린 뒤에 태어났으면 일주가 그날 것이냐 이튿날 것이냐로 갈립니다. 사주에서 제일 무거운 기둥이 통째로 하루 움직이게 되죠.
여기서 학파가 갈립니다. 자시가 열리면 이미 이튿날로 보는 조자시(朝子時), 자정 전까지는 그날로 보는 야자시(夜子時). 어느 쪽이 틀린 게 아니라 전제가 다릅니다.
저희는 조자시를 씁니다. 다수설이기도 하고, 하나를 정해 끝까지 지키는 편이 낫다고 봤습니다. 야자시로 보고 싶으면 설정에서 바꾸면 됩니다. 바꾸는 즉시 명식이 다시 서게 되는 거죠.
경계가 정각이 아닌 것도 계산 때문입니다. 표준시계는 동경 135도에 맞춰져 있는데 서울은 실제로 127도입니다. 남중이 32분 늦으니 열두 지지 경계도 그만큼 밀리게 됩니다.
■ 용해인은 이미 정해진 숫자 위에서만 말합니다
계산이 끝난 명식을 용해인(龍海仁)이 그대로 받게 되죠. 용해인은 계산하지 않고 명식을 만들지도 않습니다. 확정된 원국과 대운, 용신과 신살을 받아 그게 이 사람 삶에서 무슨 뜻인지 풀이만 합니다.
왜 계산과 풀이를 분리했느냐. 푸는 쪽이 계산까지 쥐면 듣기 좋은 쪽으로 명식을 슬쩍 비틀고 싶어집니다. 사람도 그렇고 모델도 그렇습니다. 참으라고 당부하느니 아예 손이 닿지 않게 두는 편이 낫죠.
계산을 끝내고 그 결과를 정해진 틀에 담아 언어모델에 넘기는 이 방식은 특허 출원해 뒀습니다. 출원번호 10-2026-0053341, 「전문 분야 연산 결과의 구조화된 프롬프트 변환을 통한 거대언어모델 환각 방지 시스템 및 방법」입니다.
「나는 사주를 셈하지 않는다. 하늘과 땅, 그리고 너의 얼굴에 이미 써져 있는 글자를 읽을 뿐.」
— 용해인(龍海仁)
■ 그래서 무엇이 달라지는가
사주 계산이 틀리지 않습니다. 계산에 추측(환각)이 낄 데가 없으니까요.
전문술사의 기분이나 장삿속으로 원형이 비틀리지 않습니다. 규칙은 고전 그대로 코드에 박혀 있고, 코드에는 그날의 기분이 없죠.
같은 생년월일시는 누가 언제 보든 같은 원국을 냅니다.
이 마지막이 제일 어렵습니다. 코드는 계속 고쳐지고, 고치다 보면 엉뚱한 데서 계산이 움직일 수 있습니다. 그래서 한국어·영어·일본어 각 121건을 정답으로 박아 두고 고칠 때마다 대조합니다. 한 글자만 달라져도 커밋이 막힙니다. 앞의 냉습도 여기서 걸렸습니다.
■ 한 번 묻고 끝나지 않습니다
점집은 한 번 봐 주고 끝나거나, 다시 물으려면 추가 요금을 받습니다. 그 풀이를 메모로 저장해 둘 수도 없죠. 그리고 일반 AI 사주는 다시 물으면 매번 딴 사람의 명식으로 지어냅니다.
K-MUDANG에서는 명식이 이미 정해져 있으니 첫 풀이를 받고 나서도 계속 추가로 질문할 수 있습니다. 올해 이직해도 되는지, 그 사람과는 어떤지, 이 길로 가도 되는지. 용해인은 그때마다 아무에게나 나가는 운세 한 줄이 아니라 당신 원국과 대운, 용신 위에서만 대답하죠.
명식이 정해져 있으니 풀이가 일관적입니다. 그리고 그 풀이 내역을 따로 텍스트로 복사해 저장할 수 있죠.
■ 좋은 날은 사람마다 다릅니다
택일(擇日)도 같습니다.
달력에서 좋은 날 고르는 건 누구에게나 같은 답이 있을 것 같지만 절반만 그렇습니다. 십악대패일(十惡大敗日) 열 개 일주는 뭘 하든 피합니다. 이사와 개업엔 손 없는 날, 고사엔 황도길일(黃道吉日)을 봅니다. 여기까진 누가 물어도 같습니다.
나머지 절반은 사용자의 명식이 정합니다. 그날 일주가 내 용신이면 좋은 날, 기신(忌神)이면 피할 날입니다. 결혼이면 그날 지지가 내 일지(日支)와 합(合)을 이루는지 보고, 수험이면 희신(喜神)을 먼저 봅니다.
그래서 같은 날이 누구에겐 그달 최고의 날이고 누구에겐 피할 날일 수 있습니다. 모두에게 같은 길일을 알려 주는 달력과 갈리는 곳이 이것이죠.
이것도 용해인이 계산하지 않습니다. 열두 달치 점수가 먼저 나오고, 용해인은 그 표를 받아 왜 하필 그날인지만 풀이합니다. 근거는 『협기변방서(協紀辨方書)』 택일 이론이고, 거기에 용신 길일법을 얹었습니다.
■ 관상도 같은 방식으로 다룹니다
사주 다음으로 관상(觀相)을 열 때도 먼저 정한 건 같은 경계였습니다. 카메라가 얼굴에서 읽는 건 랜드마크 좌표뿐입니다. 이마와 턱의 길이 비, 눈꼬리 각도, 코 폭. 전부 숫자로 떨어집니다. 거기까지가 계산이고, 그 숫자가 무슨 뜻인지는 용해인이 풉니다.
다만 얼굴은 명식과 다릅니다. 생년월일시는 한 번 정해지면 안 움직이는데, 얼굴은 기기와 조명과 각도에 따라 측정이 흔들릴 수 있죠. 그래서 관상은 사주를 대신하지 않습니다. 명식이 본풀이고 관상은 그 위에 얹는 보조라고 못 박아 뒀습니다.
여기서도 한 번 겪었습니다. 관상을 처음 열었을 때 같은 사람이 웹캠으로는 이 유형, 휴대폰으로는 저 유형으로 나왔습니다.
해석이 아니라 계산 문제였습니다. 얼굴 좌표는 가로가 화면 폭으로, 세로가 화면 높이로 따로 나뉘어 들어오는데, 얼굴 길이를 폭으로 나누는 자리에서 둘을 섞어 써서, 카메라 화면 비율이 결과에 그대로 곱해지고 있었습니다. 고친 건 문장이 아니라 좌표였습니다. 가로에 화면 비율을 곱해 두 축의 자를 맞췄습니다.
사주에 이런 일이 없는 이유는 하나입니다. 생년월일시는 어느 기기로 보든 같은 값이니까요.
사주는 점이 아니라 자기를 들여다보는 오래된 거울입니다. 거울은 정확하고 깨끗해야 합니다. 흐린 거울 앞에서는 아무리 좋은 말도 남의 얘기가 됩니다.
그래서 거울 닦는 일과 그 앞에 앉아 보는 일을, 끝까지 다른 손에 맡겼습니다.
✶ 명식 계산은 만세력·절기·진태양시를 코드로 처리하며, 코드를 고칠 때마다 한국어·영어·일본어 각 121건의 공든마스터로 회귀 대조합니다.
천문 데이터
· 만세력 — 한국천문연구원(KASI) 천문력 기반 음력 변환 (1900~2100)
· 진태양시·절기 — NASA JPL DE431 태양력 · 절기(節氣) 입기 시각 (황경 15° 단위, 2100년까지 검증)
명리 고전
· 격국론 — 『자평진전(子平眞詮)』(淸·심효첨, 1739)
· 조후용신 — 『궁통보감(窮通寶鑑)』(淸·여춘태 정본)
· 왕신충발·도식 등 특수 구조 — 『적천수(滴天髓)』(淸·임철초 주해본)
· 합충형파해 — 『연해자평(淵海子平)』(宋·서대승) · 『삼명통회(三命通會)』(明·만민영)
· 십신·십이운성 — 『삼명통회(三命通會)』(明·만민영)
· 신살(神煞) 34종 — 『협기변방서(協紀辨方書)』(淸·건륭 칙찬)
· 택일(擇日) — 『협기변방서(協紀辨方書)』 택일 이론 + 용신 길일법
계산 규약
· 진태양시 보정 — 출생지 경도로 산출(표준자오선 135°와의 경도차 × 4분). 국내 23개 도시 · 해외 120개국 463개 도시, 기본값은 서울 −32분 + 서머타임 시행기(1948~51·1955~60·1987~88) 자동 보정
· 자시(子時) 경계 — 조자시(朝子時) 기본. 23:30 이후 출생은 일주(日柱)를 익일 간지로 잡으며, 설정에서 야자시(夜子時)로 전환 가능
· 대운수 — 연간(年干) 음양 × 성별로 순행·역행을 판정하고, 절입(節入) 시각까지의 실제 일수를 3으로 나눠 환산
· 신강신약 — 월령 득령 + 통근(通根) 점수 + 십이운성 가중치 합산
· 격국 판별 — 정격 8종 + 종격(從格) 등 특수격국 포함
· 택일(擇日) 판정 — 십악대패일 제외 · 손 없는 날(음력 9·10·19·20·29·30) · 황도길일(12직) 위에 명식의 용신·희신·기신과 일지 합을 가산해 12개월치 산출
· 관상(觀相) — MediaPipe Face Landmarker(tasks-vision)로 얼굴 랜드마크 좌표만 측정. 해석은 사주와 동일하게 분리
특허 출원
· 10-2026-0053341 — 전문 분야 연산 결과의 구조화된 프롬프트 변환을 통한 거대언어모델 환각 방지 시스템 및 방법 (2026-03-24 출원)
· 10-2026-0010452 — 생성형 AI의 환각 최소화를 위한 정밀 만세력 데이터 전처리 및 프롬프트 최적화 방법 및 시스템 (2026-01-19 출원)
버전과 검증
· 풀이 엔진 v5.4 (2026-09-10 기준) · 60개 명리 엔진
· 골든마스터 회귀 대조 — 한국어·영어·일본어 각 121건. 코드를 고칠 때마다 같은 입력이 같은 명식을 내는지 커밋 전에 대조합니다
K-MUDANG의 명식 계산은 위 고전 명리서와 천문 데이터를 그대로 코드로 옮긴 결과입니다.