소개
2-1. 이 편의 위치 — 5편이 비워 둔 자리
5편 Code as Gate
6편 GuardrailAgent
판정 대상
근거의 구조
문장의 내용
판정 방식
결정적 (if)
규칙 + 문맥 + (필요 시) 분류기
재현성
100% 보장
골든셋으로 관리
실패 시
차단
재생성 또는 차단
2-2. 왜 무조건 차단이 문제인가 — 두 계통의 태도 차이
계통
4어(격국·용신·기신·희신)에 대한 태도
근거
①탈XX 4관법
절대 차단 — 잘못된 해석 체계의 잔재
gwanbeop_ppt 1,593건 중 긍정 맥락 0건
②박청화 강의
재정립 — "쓰지 마라"가 아니라 "이렇게 다시 이해하라"
춘하추동 冬편 86~87강, 신사주학 통합본 §3.4
박청화 선생은 冬편 86강에서 기존 격국용신론의 5분류(억부·병약·조후·전황·통관)를 정면으로 해체하고 희기동소(喜忌同所) 개념으로 재구성합니다. 87강에서는 10대 격국(정관격·편관격·정재격·편재격·정인격·편인격·식신격·상관격·양인격·건록격)의 특성을 하나씩 풀어놓습니다.
무조건 차단은 이 강의 전체를 검색 결과에서 지웁니다. 금기어를 지키려다 스승의 핵심 강의를 잃는 것입니다.
2-3. 그런데 v1.0 초안도 여전히 위험했다
python
if any(ctx in text for ctx in ALLOW_CONTEXT):
continue # ← text 전체에서 찾는다text가 A4 3~5매짜리 전체본이면, 1문단의 "희기동소" 한 번이 9문단의 "당신의 용신은 甲木입니다"까지 전부 통과시킵니다. 허용 목록이 문맥 판정 장치가 아니라 만능 통과 열쇠가 됩니다.
초안 소개문에는 "문맥 윈도우 기반으로 정밀화했습니다"라고 적혀 있었는데 코드에는 윈도우가 없었습니다. 문서와 코드가 다른 말을 하면 언제나 코드가 이깁니다.
진행 방법
3-1. 사용 도구
도구
용도
확정 여부
Python re
처방형 단정 패턴 4종
확정
문맥 윈도우 (±N자)
허용 판정 범위 제한
N값 미확정
인용 블록 마킹
근거 원문 vs 자기 발화 분리
리포트 조립부 수정 필요
소형 LLM 분류기
3단 — 완화 전용
미구현
골든셋 50건 + CI
지표 산출
미작성
3-2. Eval Contract — 실행 전에 고정한다
v2.0의 핵심 추가분입니다.
필드
내용
GOAL
금기어 4어의 무조건 차단을 문맥 기반 차단으로 바꾸되, 처방형 단정은 하나도 놓치지 않는다
CRITERIA
① FN(놓친 단정) = 0건 ② FP(과잉차단률) ≤ 0.10 ③ 동일 입력 3회 동일 판정 ④ 1·2단 < 50ms
BASELINE
현행 무조건 차단 상태를 같은 골든셋 50건에 돌린 값. 예상: FN 0 / FP 0.40 (B·C·E-② 30건이 전부 차단될 것)
FAIL CONDITION
① FN ≥ 1 ② D 유형 10건 중 1건이라도 통과 ③ 같은 입력에 다른 판정 ④ 게이트 예외가 통과로 처리됨
METHOD
1차 사람 수동 → 2차 골든셋 자동 → 3차 독립 경로(미구현, §3-9)
BASELINE을 예상값으로 적어 둔 이유 — 실측 전이므로 "예상"이라고 명시합니다. 그리고 개선 보고는 실측 baseline과 대조한 뒤에만 합니다. 예상값과 비교해서 좋아졌다고 말하는 것은 자기 채점입니다.
FP 0.40은 결코 작은 수가 아닙니다. 정당한 인용 열 건 중 네 건이 막힌다는 뜻이고, 그것이 지금 운영 중인 상태입니다.
3-3. Skill 인터페이스 카드 — guardrail-eval
필드
내용
이름
GuardrailAgent Eval
역할
헤르메스가 스스로 만든 문장에 처방형 단정이 있는지 판정한다
Use when
합성 결과가 나온 뒤, 5편 게이트의 G-TB-001 자리에서
Input
draft(텍스트), lineage(계통)
Output
verdict(통과/수정/보류), reason, meta(pattern_id·span·allow_hits)
RETURN
통과 → 게이트로. 수정 → 재생성 1회 후 재검사. 보류 → BLOCKED
실패·되돌림
재생성 후에도 위반 → 보류. 분류기 장애 → 보류 유지
MUST NOT
인용 블록을 검사하지 않는다. 문장을 스스로 고치지 않는다. 허용어를 스스로 추가하지 않는다. 차단을 LLM에게 맡기지 않는다.
MUST NOT의 마지막 줄이 §3-9와 연결됩니다.
3-4. 3단 판정 구조
text
헤르메스 생성 문장
│
├─[0단] 인용 분리 — <quote> 블록은 검사 대상 제외
│ 근거 원문의 "용신"은 박청화 선생이 쓴 것이지 헤르메스의 단정이 아니다
│
├─[1단] 처방형 단정 패턴 매칭 (결정적)
│ 해당 없음 → 통과 (대부분 여기서 끝난다)
│
├─[2단] 문맥 윈도우 + 계통 정책 (결정적)
│ 매칭 지점 ±N자 안에 강한 허용 토큰 → 통과
│ ①계통이면 허용 토큰이 있어도 → 보류
│
└─[3단] 소형 LLM 분류기 — 1·2단이 보류로 남긴 소수만
"허용"으로 판정될 때만 완화. 장애·타임아웃 → 보류 유지3단이 완화 방향으로만 작동하는 것이 핵심입니다. LLM이 죽으면 자동으로 안전측(보류)에 머뭅니다. 반대로 LLM이 차단을 거는 구조였다면, LLM이 죽은 날 전부 무사통과합니다.
3-5. 1단 — 처방형 단정 패턴
pattern_id