← 목록
기타 2026-06-26 9KB 읽기 10분

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: spawn claude -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.