← 목록
기타 2026-07-07 11KB 읽기 10분

양심게이트 배선 — 관찰모드 1단계 runbook

개요

크라우니 헌법 6561의 집행체 libs/양심지표.한선(브레이크게이트: 행위설명+8트릿 축벡터 → 티/옴/타/음 판정+감사로그)을 실제 LLM 도구호출에 통과시키는 배선. 1단계 = 관찰모드 (판정·로그만, 차단 없음). 19+ 동시세션 환경이라 차단 오작동은 전 세션 마비 리스크 — 그래서 이번 배선은 어디서도 실행을 막지 않는다(전부 fail-open, 관찰모드는 항상 exit 0).

산출물

파일줄수역할
/Users/ef/CrownyOS/crownyc/data/헌법6561/행위규칙.psv39 (헤더+38규칙)패턴\축id\트릿 — 결정론 매칭 데이터
/Users/ef/CrownyOS/crownyc/libs/행위분류.한선132행위설명 → 8축 벡터(T/O/A×8) 결정론 분류기
/Users/ef/CrownyOS/crownyc/apps/양심게이트러너.한선46환경변수 GATE_ACT/GATE_MODE 읽어 행위분류→브레이크게이트 호출
/Users/ef/.claude/scripts/양심게이트.sh93bash 얇은 래퍼(캐시 컴파일+fail-open+2초 상한+exit code)
/Users/ef/CrownyOS/crownyc/data/헌법6561/양심게이트러너.toau(캐시)첫 실행 시 자동 생성, 소스보다 오래되면 자동 재컴파일
/Users/ef/CrownyOS/crownyc/data/헌법6561/양심감사.log(append)판정 1행씩 감사기록(브레이크게이트 내부에서 기록)

데이터 흐름

GATE_ACT(행위설명) ──▶ 행위분류.한선 ──▶ 8자 축벡터(T/O/A×8)
                                            │
                                            ▼
                        양심지표.한선:브레이크게이트(행위, 벡터, 로그경로, 모드)
                                            │
                        ┌───────────────────┼────────────────────┐
                        ▼                   ▼                    ▼
                   하드트립검사        간섭판정(Re/Im)        옴이면 재조회 1회
                 (관찰=경고만)        (사분면판정→티/옴/타)     (그래도 옴→음)
                        └───────────────────┴────────────────────┘
                                            │
                                            ▼
                        감사기록추가(양심감사.log 1행 append)
                                            │
                                            ▼
                   출력: 판정|축벡터|구조점수|등급  (예: 티|OTOOTOTT|760|C)

검증 결과 (5종, 실제 판정값)

bash$ ~/.claude/scripts/양심게이트.sh "rm -rf /tmp/테스트디렉토리 강제 삭제"
음|OTOOAAAT|691|C          # exit=0 (관찰모드)

$ ~/.claude/scripts/양심게이트.sh "백업 후 테스트 실행"
티|OTOOTOTT|760|C          # exit=0

$ ~/.claude/scripts/양심게이트.sh "정체불명행위 xyz"
음|OOOOOOOO|0|O            # exit=0 — 전축 O(모름 전파) 확인

  • 감사로그 append 확인: 양심감사.log에 3개 테스트 각 1행씩 정상 추가(총 라인수 증가 확인).
  • fail-open 검증: .toau 캐시 삭제 → 자동 재컴파일 후 정상 판정(exit 0). 컴파일러 바이너리를
임시로 이름변경(hanseonc_high 부재 시뮬레이션) → "양심게이트: 컴파일러 바이너리 없음(fail-open)" stderr 출력 + exit 0 확인. 복구 후 정상 재확인 완료.
  • enforce 모드 확인: 양심게이트.sh "<행위>" enforce → 음 판정 시 exit 4, 티 판정 시 exit 0
(옴=2, 타=3 매핑도 스크립트에 구현됨, 실사례에서 옴/타 케이스는 별도로 유도 확인 필요 — 미검증 항목).
  • 캐시 히트 시 속도: 재실행 0.074s (전체 2초 상한 대비 여유 충분). 콜드(컴파일 포함) 첫 실행 ~0.7s.

PreToolUse(Bash) 훅 등록 스니펫 (관찰모드 — 등록은 메인 세션 몫)

아래는 ~/.claude/settings.json(또는 project .claude/settings.json)의 hooks.PreToolUse참고용으로만 추가할 스니펫이다. 이 세션은 라이브 설정 파일을 수정하지 않았다 — 등록 여부는 메인 세션/사용자가 판단.

json{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          {
            "type": "command",
            "command": "act=$(printf 'Bash: %s' \"$(echo \"$CLAUDE_TOOL_INPUT\" | head -c 500)\"); ~/.claude/scripts/양심게이트.sh \"$act\" >> ~/.claude/logs/양심게이트훅.log 2>&1 || true"
          }
        ]
      }
    ]
  }
}

  • 관찰모드이므로 훅 명령이 어떤 exit code를 반환해도(|| true로 추가 보강) 도구 실행을 막지 않는다.
  • $CLAUDE_TOOL_INPUT은 실제 훅 payload 스키마에 맞춰 조정 필요(Bash 도구의 command 필드 추출 등 —
Claude Code 훅 스펙은 claude-code-guide 에이전트로 정확한 payload 키를 확인 후 반영 권장).
  • 로그는 stdout을 별도 파일로 리다이렉트(관찰모드 판정을 트랜스크립트에 매번 노출하지 않기 위함),
훅 자체 실패도 || true로 무조건 무해화.

enforce 전환 절차 (미래, 신중하게)

  1. 최소 수 주간 관찰모드 로그 축적양심감사.log grep으로 판정분포 확인:
bash   awk -F'|' '{print $6}' /Users/ef/CrownyOS/crownyc/data/헌법6561/양심감사.log | sort | uniq -c
   
  1. 오탐률 확인 — 옴/타/음으로 잘못 걸린 정상 행위가 있는지 육안 샘플 검토(포함하나 부분매칭
특성상 오탐 가능성 있음, 아래 "정직 한계" 참조).
  1. 행위규칙.psv 튜닝 — 오탐 패턴을 더 구체화(예: "rm -rf" 대신 "rm -rf /" + 화이트리스트
경로 예외 추가)하거나 축 배정을 재조정.
  1. enforce는 부분 도입부터 — 전 세션 동시 강제 대신, 신규/저위험 세션 1~2개에서
양심게이트.sh "$act" enforce를 시험 적용하고 exit code 기반 실제 차단 동작 확인.
  1. 하드트립 축(생명존엄·진실·청지기·자유) 우선 강제 — 나머지 축(약자보호·사랑·안식·초월겸손)은
당분간 관찰만 유지해도 헌법 제3부 취지(회로차단기)는 상당 부분 충족.
  1. 폭주검사 임계 확인 — 현재 N=3(연속 3회 타 판정 시 음 격상). 세션이 짧게 자주 재시작되면
폭주검사가 무력화될 수 있음(로그가 세션 경계 없이 전역 공유되므로 실제로는 오히려 보수적).

게이트웨이/에이전트허브 결선 지점 제안

  • 크라우니 게이트웨이(/Users/ef/crowny-gateway): 외부 POST/대량발송 라우트 핸들러 진입점에서
체계("양심게이트.sh \"게이트웨이: " + 요청요약 + "\"") 형태로 관찰 로깅. 현재 행위규칙.psv에 curl|자유|O, 대량발송|자유|O 등 관련 규칙 이미 존재.
  • 에이전트허브(project_crowny_agent_hub.md 참조, 6제공자 자동라우팅): 서브에이전트
디스패치 직전(허브.한선 4상 판정 지점)에 병행 호출 — 허브 자체 4상 판정과 헌법 8축 판정을 같은 로그에 이중 기록해두면, 추후 두 판정기 간 상관관계(허브의 옴 판정 ↔ 헌법 옴 판정)를 분석해 게이트 신뢰도를 검증할 수 있음.
  • Workflow/Agent 서브에이전트 가드레일(~/.claude/templates/한선씨-가드레일.md): 서브에이전트
프롬프트 주입 블록에 "행위마다 양심게이트.sh 관찰 호출" 문구를 추가하는 것은 이번 작업 범위 밖 (라이브 무접촉 원칙) — 별도 승인 후 진행 권장.

로그 확인법

bashtail -f /Users/ef/CrownyOS/crownyc/data/헌법6561/양심감사.log
awk -F'|' '{print $6}' /Users/ef/CrownyOS/crownyc/data/헌법6561/양심감사.log | sort | uniq -c   # 판정분포
grep '|음|' /Users/ef/CrownyOS/crownyc/data/헌법6561/양심감사.log | tail -20                      # 사람 이관 필요 사례

미해결·정직 한계

  1. 부분 문자열 매칭의 오탐 가능성행위분류.한선포함하나() 기반 부분 문자열 매칭이다.
"테스트디렉토리" 안의 "테스트"처럼 의도치 않은 매칭이 발생한다(실측: rm -rf 테스트 케이스에서 진실축·초월겸손축이 "테스트" substring 때문에 T로 잡혔다가 다른 축의 A가 우선순위로 눌러 최종 결과엔 영향 없었지만, 항상 그렇게 상쇄된다는 보장은 없음). 형태소 분석이나 의도 파악이 아니라 "결정론 1차 신호 수집" 계층임을 명확히 한다.
  1. 셀코어 병행 표현은 실행 불가 상태libs/셀코어.han_비교()==,>=,<=,>,<,!= 6개
연산자만 지원하고 "포함"(부분문자열) 연산자가 없다. 행위분류.한선 하단에 셀코어 룰 구조를 문서적으로만 남겼고, 실제로 룰엔진에 태우려면 셀코어에 연산자를 추가해야 하는데 이는 188개 모듈 공유 라이브러리 수정이라 이번 범위에서 하지 않았다(libs/CLAUDE.md "건드리지 마라").
  1. enforce 모드의 옴/타 실사례 미검증 — 검증 5종은 관찰모드 위주(+enforce 음/티 각 1건)였고,
enforce에서 옴(exit 2)·타(exit 3) 실제 사례는 별도로 유도해 확인하지 않았다. 로직상 verdict 값에 따라 case문으로 분기하므로 동작 원리는 동일하지만, 실측 확인은 남은 작업이다.
  1. PreToolUse 훅 스니펫은 미등록 — runbook 텍스트로만 제시했고, 실제 settings.json 편집은
라이브 무접촉 원칙에 따라 메인 세션/사용자 몫으로 남겼다. $CLAUDE_TOOL_INPUT 같은 훅 payload 변수명도 실제 Claude Code 훅 스펙과 대조 검증이 필요하다(가정으로 작성).
  1. 행위규칙.psv 커버리지는 초기 시드 수준(38규칙) — 실제 도구호출 다양성(파일 수정, 네트워크,
프로세스 제어 등)에 비하면 좁다. 관찰모드로 로그를 축적하며 규칙을 점진 확장하는 것을 전제로 설계했다(등급/구조점수는 규칙 커버리지와 무관하게 항상 계산되므로 시스템 자체는 처음부터 완전 동작한다 — 정확도만 규칙 수에 비례해 개선됨).
  1. 자기 재귀 문제(미해결, 문서화만): 양심게이트.sh 자신의 실행(체계() 호출, 파일 컴파일 등)이
장차 다른 게이트 관찰 대상이 될 경우 무한 재귀 로깅 우려가 있다. 현재는 게이트 자신의 내부 동작을 관찰 대상으로 삼지 않는 구조라 문제없지만, 향후 "모든 Bash 호출 관찰"로 훅을 걸면 게이트 스스로의 컴파일/실행 커맨드도 잡힐 수 있어 훅 matcher에서 양심게이트.sh 자기 자신은 제외하는 가드가 필요하다(등록 시 반영 필요, 이번 runbook 스니펫에는 미반영 — 후속 작업).

크라우니코드

  • lookup HIT 0건 / MISS 3건("행위분류8축", "행위규칙psv", "게이트러너관찰모드" 계열 — 사전 조회
결과 기존 패턴 없음 확인) / learn 추가 2건(crownycode-brain.sh learn "행위분류8축" libs/행위분류.한선, crownycode-learn.sh add "행위분류8축벡터"/"양심게이트러너관찰모드").