Show GN: 5대 고전 원전 기반 사주명리 엔진을 바이브코딩으로 만들었습니다
(1fate.ai)Steve Yegge가 "소프트웨어 서바이벌 3.0"에서 말한 "통찰 압축(Insight Compression)" — Git이나 Kubernetes에는 수십 년의 시행착오가 압축되어 있어 LLM이 쉽게 재현하지 못한다는 이야기가 있습니다. 사주명리학도 비슷하다는 생각에서 출발했습니다.
LLM에 사주를 맡기면 생기는 일
요즘 많이 하시듯 사주 데이터를 LLM에 넣으면 그럴듯한 결과가 나옵니다. 문제는 "그럴듯함"과 "정확함"의 괴리입니다.
GPT-5, GPT-4o, Claude, DeepSeek V3 등 여러 모델에 structured output과 few-shot을 조합해 테스트했습니다. 체계적인 오류 지점이 있었습니다. 종강격(從強格)인 사주에 억부(抑扶) 논리만 적용해서 화(火)를 용신으로 도출하는 식입니다. 원전의 "촉노강신 대흉(觸怒強神 大凶)" 원칙을 위반하는 판정을, 프롬프트로는 완전히 예방할 수 없었습니다.
그 외에도 특정 학파 해석에 앵커링되어 원문을 왜곡하거나, 안 좋은 풀이를 과도하게 미화하거나 반대로 불안감을 증폭하는 경향도 있었습니다. 규칙 판정을 LLM의 패턴 매칭에 맡기는 건, 산술을 언어 모델에 시키는 것과 같은 류의 문제였습니다.
호작엔진: 규칙은 코드로, 설명만 LLM으로
그래서 레이어드 구조를 설계했습니다.
호(虎) — 규칙 엔진. 명리학 계산 로직을 코드로 구현합니다. 5대 고전 원전(적천수·자평진전·궁통보감·삼명통회·연해자평)의 갈리는 해석 중 어떤 것을 기준으로 삼을지 영역별로 확립한 뒤, 그 판정을 코드에 고정했습니다.
작(鵲) — LLM 설명 레이어. 엔진이 계산한 구조화된 데이터를 자연어로 풀어주는 부분만 LLM에 맡깁니다.
LLM이 재현하기 어려운 것은 코드가 아니라, 수천 년간 다듬어진 판정 기준이었습니다.
바이브코딩의 한계가 온 지점
처음엔 순조로웠습니다. LLM이 한문 원전 분석, 학파 정리, 천문 계산 코드 초안까지 빠르게 도왔습니다. 한계는 학파 간 규칙이 상충하는 지점에서 왔습니다.
예를 들어 격국(格局) 판정에서, 적천수는 일간 강약을 먼저 보고 자평진전은 월령 투출을 먼저 봅니다. 같은 사주인데 어떤 원전을 따르느냐에 따라 판정이 뒤집히는 케이스가 나왔고, 이 우선순위는 LLM이 정해줄 수 있는 영역이 아니었습니다.
결국 5대 원전을 직접 확보하고 대조해야 했습니다. 일부 누락본이나 판독 불가한 부분이 있어 여러 판본을 교차 검증하는 과정을 거쳤습니다. 알고 보니 국가사업으로 고전 보존 노력이 상당했는데, LLM 도움 없이는 개인이 감당하기 어려운 작업이었습니다. Claude Max x20을 거의 3개월간 한도 가득 썼습니다.
흥미로운 점은, 원문을 잘못 옮긴 경우가 대부분 사람(학자) 쪽이었다는 것입니다. 적천수의 "旺者宜泄, 唯有情有力者可克"을 어떻게 읽느냐에 따라 알고리즘 분기 자체가 달라지는데, LLM은 오히려 여러 학자의 번역과 원문 주석을 교차 대조하는 데 유용했습니다.
시간 정밀도: 1분이 판정을 바꾼다
명리학에서 시간 1분 차이로 핵심 판정이 바뀔 수 있습니다. 자시(子時)와 축시(丑時) 경계에서 시주가 바뀌면 격국 판정 자체가 달라집니다.
호작엔진은 NASA/JPL 기반 Fourier 급수 균시차(±13초 정밀도), IANA tzdata 기반 글로벌 DST 판정, 163,400개+ 도시 경도 데이터베이스를 조합합니다. 한국의 경우 1908년부터 4차례 표준경도 변경과 12년간의 써머타임 이력을 반영합니다.
조선 관상감의 공식 기록(서운관지)에서 현재 코드와 동일한 경도 보정 수식을 발견한 것은 개인적으로 인상적인 경험이었습니다.
검증 현황
절기 계산은 한국천문연구원(KASI) 공식 데이터 2000–2050년 구간과 대조해 100% 일치합니다. 균시차는 NASA/JPL Horizons 기반 ±13초 정밀도를 확보했습니다. 신살은 정통 십이신살(삼명통회 기반)을 정해 만세력과 대조해 100% 일치하며, 귀인살·특수살은 원전 교차 검증 후 orthodox / disputed / reference 3단계로 분류 적용했습니다.
기술 스택
엔진은 Python FastAPI + PostgreSQL + SQLAlchemy 2.0(async), 프론트는 Next.js 15 + React 19 + TypeScript + Tailwind CSS입니다. AI는 OpenRouter 경유 멀티모델(GPT-4o, Claude, DeepSeek V3)을 설명 레이어에만 사용합니다. 배포는 Fly.io(Blue-Green) + Vercel, 결제는 토스페이먼츠 + PayPal입니다.
현재 사주팔자 분석 30,000+자, 연간 분석 20,000+자 규모의 구조화된 리포트를 생성하며, 출생 데이터는 암호화 저장됩니다.
마치며
명리학의 예측 유효성에 대해서는 다양한 시각이 있습니다. 이 프로젝트는 그 논쟁보다 "만약 이 체계를 사용한다면 그 의도대로 정확한 기준으로 일관되게 계산하자"는 엔지니어링 과제에 집중했습니다.
시작은 바이브코딩으로 가볍게 출발했지만, 결국 5대 원전 고서를 분석하고 NASA/JPL 균시차 코드까지 살펴보게 됐습니다. Yegge의 표현을 빌리면, 이 도메인에 압축된 통찰의 밀도가 예상보다 훨씬 높았습니다.
기술적인 질문이나 피드백 환영합니다.