chansong.crowny.org — 최찬송 목사 상담 집사
개요
최찬송 목사(저서 꿀만 빨 것인가 꿈을 꿀 것인가)의 마음·가치관·화법을 잇는 AI 커뮤니케이션 서비스. 청년(용사)을 입시·생존(꿀만 빨기)에서 꿈·소명으로 부르는 상담 집사. 포트 9952, crowny.org UX 복제.
- 메인:
chansong.crowny.org(상담 집사 대화) - 관리자:
chansong.crowny.org/admin(목사님 전용 — API키·상담규칙·질문학습·미래비전) - 가이드:
chansong.crowny.org/guide(서비스 취지 + Gemini API 발급/입력 안내) - A레코드 등록됨 → 112.144.147.144, 게이트웨이 라우팅 완료.
무엇을 했는지
1. 책 학습 (OCR → 정수화)
[3쇄]D02-최찬송-꿀만빨것인가-140-205-확정-out-검판.pdf(196p, 이미지 PDF) → tesseract kor OCR(data/책_원문.txt, 4,531줄).- 울트라 워크플로우(opus distill)로 책정수 구조화: 핵심메시지 12·가치관 12·상담원칙 15·화법특징·핵심용어 14(자기여행·일시정지·달란트·군대를잡아먹자·호불호빅데이터 등)·대표인용. →
data/책정수.json.
2. 콘텐츠 생성 (울트라 에이전트 워크플로우, 15 에이전트)
- 페르소나 시스템프롬프트(4,189자) →
data/persona.txt - 6561 질문 시드 325개(9영역 트리, 의미어코드 더블보관) →
data/질문은행.json+data/의미어코드.json(717개) - /guide 본문(3,060자) →
data/guide.md - 첫방문 축복 메시지 12변형 →
data/blessings.json - 미래비전 질문지 7섹션 24질문 →
data/미래비전질문.json - 상담규칙 시드 29개 →
data/상담규칙.json
3. 서버 결선 (crowny-ai 복제 → 9952)
- 페르소나 =
chansong.getPersona()항상 적용(모든 대화에 최찬송 페르소나) - Gemini API 키 =
.env대신 관리자 입력(data/admin-config.json), 런타임 가변 - 9턴 넛지: 비로그인 9번째 대화에 "혹시 회원가입하시겠어요?(기억을 위해)" 시스템프롬프트 주입 — 영업 아님, 용사 기억용
- 첫방문 맞춤 축복:
/api/welcome+ 환영화면 부제 표시 - 목사 학습 컨텍스트(상담규칙+직접답변) 상담 시 자동 주입
4. 관리자 콘솔 (/admin)
- 로그인
chansong또는chansong@crowny.org/chansong1234(scrypt, 7일 토큰) - Gemini 키 등록 → 즉시 런타임 반영
- 오늘의 질문 20개 답변 → 학습(의미어코드 더블보관), 목표 6561
- 상담규칙 DB CRUD, 미래비전 질문지, 페르소나 편집, 비번변경, 뱅크 귀속 수동트리거
5. 크라우니뱅크(:9400) 실연동 — 크라우니달러=CRD
- 회원가입 → 뱅크 계좌 생성 + CRD 24,000 지급 + 가입선물 CRD 2(행운의 2달러) + chansong 그룹(상위 flexible) 배정
- 월 2,000 CRD KPS 귀속(상환), 12개월 총 24,000 상한 — 스케줄러 매월 1일 자동
- ⚠️ 뱅크 세션토큰이 729 한글 계좌번호 포함(
CBK_<ms>_<한글>) → HTTP 헤더 비ASCII 금지. UTF-8 바이트를 latin1로 실어 전송(Buffer.from(...,'utf8').toString('latin1'))으로 해결.
6. 자동화
- 인프로세스 스케줄러(6h): 매일 질문 증식(미답변<80 → 책정수 재조합 규칙기반, 0토큰), 뱅크 보류 재시도, 매월 KPS 귀속
- 영속화:
launchctl com.crowny.chansong(KeepAlive)
7. 한선씨 동반 (판정 코어, 컴파일 검증)
뱅크연동.한선— 가입총지급/귀속액/그룹/출금 판정상담집사.한선— 9턴넛지/증식/하루20/진척도/관리자정규화 판정
관련 파일 경로
/Users/ef/chansong.crowny.org/
├── server.js # 9952, 페르소나·키·넛지·축복·admin API·스케줄러
├── engine/chansong.js # 관리자인증·키·페르소나·축복·질문학습·증식·넛지·의미어코드
├── engine/bank-connect.js # 뱅크 실연동(계좌·지급·선물·그룹·귀속)
├── public/admin.html # 관리자 콘솔
├── public/guide.html # 가이드(마크다운 렌더)
├── public/index.html # 상담 UI(crowny.org UX, 최찬송 브랜딩+축복)
├── 뱅크연동.한선 / 상담집사.한선 # 판정 코어 동반
├── scripts/content-workflow.js # 울트라 콘텐츠 생성 워크플로우
└── data/ # persona.txt, 질문은행.json, 상담규칙.json, blessings.json,
# 미래비전질문.json, 의미어코드.json, admin-config.json, wallets.json, kps-account.json
게이트웨이: crowny-gateway/gateway.yaml crowny-chansong 엔트리(httpOnly, websocket, health, cors).
검증 결과 (전부 통과)
- /api/health, /api/welcome(맞춤 축복), /guide, /admin, / — 게이트웨이 경유 200
- 관리자 로그인(chansong & chansong@crowny.org), status, 오늘의 질문 20, 답변학습+의미어코드, 미래비전
- 회원가입 → 뱅크 CRD 24,000+2, chansong→flexible 그룹(실계좌 생성 확인)
- 월 귀속 2,000 → KPS 계좌(흥힐긋) 실이체
- 한선씨 동반 2종 컴파일+실행 통과
잔여 이슈
- 실제 상담 응답 검증은 목사님이 /admin에서 Gemini 키 등록 후 가능(현재 키 미등록 → 503 "준비 중" 안내).
- 6561 질문: 현재 시드 325 + 매일 자동 증식(규칙기반). 품질 향상 원하면 증식분도 LLM 배치 생성 가능.
- 메인 UI 에이전트 카드(프렌즈/집사 등)는 crowny UX 유지차 잔존하나 백엔드는 항상 최찬송 페르소나로 동작.
TLS 인증서 (2026-06-26 추가)
- 증상:
https://chansong.crowny.org→ ERR_CERT_COMMON_NAME_INVALID (cert에 chansong 미포함). - cert-manager.sh add는 119도메인 일괄 갱신이 LE 100-identifier 한도 초과로 실패 → 단독 cert 발급:
certbot certonly --webroot -w /Users/ef/crowny-gateway/webroot -d chansong.crowny.org --config-dir /Users/ef/crowny-data/certs/certbot --cert-name chansong.crowny.org (production, ~2026-09-24 만료).
- ⚠️ 공개 443 엣지 =
한선게이트웨이/stunnel-live.conf(accept 0.0.0.0:8443, 라우터가 공개443→로컬8443 포워드).stunnel-live-443.conf(로컬:443, PID 다름)는 엣지 아님. SNI 슬레이브를 stunnel-live.conf에 추가해야 외부 반영. - 추가 슬레이브(master명=
https):[chansong.crowny.org] / sni=https:chansong.crowny.org / connect 127.0.0.1:8080 / cert=.../live/chansong.crowny.org/...→kill -HUP <stunnel-live.conf PID>. - 검증: 외부 cert CN=chansong.crowny.org, https / /admin /guide /api/welcome 모두 200. docs/crowny.org 회귀 없음.
- 내구성: 두 conf는 SNI생성기.한선 자동생성. chansong이 gateway.yaml+live cert에 있으므로 다음 regen에 포함될 것. regen이 누락시 수동 슬레이브 재추가 필요.
Haiku CLI 폴백 (2026-06-27 추가)
제미나이 키가 없거나 작동 안 할 때 로컬 claude CLI(Haiku)로 자동 폴백 → 키 없이도 상담 작동. 우선순위: ①Gemini(키 등록 시) ②Claude CLI Haiku.engine/claude-cli.js: spawnclaude -p(ANTHROPIC_API_KEY 제거 → claude.ai 로그인),--disallowed-tools(위험도구 전부)+샌드박스 cwd+--max-turns 1, stream-json 파싱.stream()/complete().- server.js 결선: 스트리밍 onError + 잡모드(
/api/ask) 양쪽에 폴백 추가. 503 가드는 CLI 있으면 통과. - ⚠️ launchd 영속화: GUI/Aqua 세션 bootstrap이라야 키체인 접근(
LimitLoadToSessionType=Aqua+launchctl bootstrap gui/$uid).load -w면 인증 행. - ⚠️ 게이트웨이 SSE 불가 → 프론트(public/index.html)를
/api/ask+/api/ask-result폴링(1.5s)으로 전환. 로컬 SSE는 정상, 게이트웨이만 버퍼링. - 검증: 공개 HTTPS /api/ask→폴링 ~30s에 최찬송 페르소나 응답(model=claude-haiku-4-5). 학습=[[feedback_claude_cli_service_engine]].
- 주의: 개인 claude.ai 구독 소모(임시 폴백). 정식 운영은 /admin Gemini 키 권장.
4상 상담 + 전량 기록 + 점진 스트리밍 (2026-06-27 추가)
- 점진 스트리밍: 게이트웨이 SSE 불가 → 잡모드가 CLI 토큰을 부분 reply로 누적, 프론트가 0.6s 폴링하며 늘어난 텍스트를 줄줄이 렌더(▍ 커서). 첫 글자 ~11s(콜드스타트) 후 흘러나옴. CLI 시작단축
--no-session-persistence --disable-slash-commands(--bare는 claude.ai 로그인 깨져 미사용). - 4상 분별(신앙 상담 예민): 시스템프롬프트
fourPhaseGuidance()— 티=확신 답변 / 옴=불확실시 겸손("확실히 알진 못하지만") / 음=민감(교리판단·이단·구원·의료/법률 위급)·에러시 목사님 이관. 응답 끝 숨은 태그<<티|옴|음>>→ 서버parsePhase()가 떼어내고 phase 기록. - 전량 기록: 모든 (owner,user,reply,phase) →
data/상담기록.jsonl. 관리자 /admin "상담기록" 탭. - 음 이관: phase 음 또는 생성 에러 →
data/이관.jsonl티켓 + 용사에게 "목사님께 전달, 따로 회신" 안내(ESCALATION_REPLY). /admin "이관(음)" 탭에서 목사님이 회신 저장(resolve). 대시보드 배지. - 검증: "꿈 어떻게 찾나요"→옴 기록 / "교회 이단인지 판단·구원 잃었나"→음 이관+핸드오프 / 목사 회신 저장→대기 0. admin 탭 서빙 확인.
- API: GET /api/admin/conversations·/escalations, POST /api/admin/escalations/resolve.