양심게이트 배선 — 관찰모드 1단계 runbook
개요
크라우니 헌법 6561의 집행체 libs/양심지표.한선(브레이크게이트: 행위설명+8트릿 축벡터 →
티/옴/타/음 판정+감사로그)을 실제 LLM 도구호출에 통과시키는 배선. 1단계 = 관찰모드
(판정·로그만, 차단 없음). 19+ 동시세션 환경이라 차단 오작동은 전 세션 마비 리스크 —
그래서 이번 배선은 어디서도 실행을 막지 않는다(전부 fail-open, 관찰모드는 항상 exit 0).
산출물
| 파일 | 줄수 | 역할 | ||
|---|---|---|---|---|
/Users/ef/CrownyOS/crownyc/data/헌법6561/행위규칙.psv | 39 (헤더+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/양심게이트.sh | 93 | bash 얇은 래퍼(캐시 컴파일+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
- 캐시 히트 시 속도: 재실행 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-guide 에이전트로 정확한 payload 키를 확인 후 반영 권장).
- 로그는 stdout을 별도 파일로 리다이렉트(관찰모드 판정을 트랜스크립트에 매번 노출하지 않기 위함),
|| true로 무조건 무해화.enforce 전환 절차 (미래, 신중하게)
- 최소 수 주간 관찰모드 로그 축적 —
양심감사.loggrep으로 판정분포 확인:
bash awk -F'|' '{print $6}' /Users/ef/CrownyOS/crownyc/data/헌법6561/양심감사.log | sort | uniq -c
- 오탐률 확인 — 옴/타/음으로 잘못 걸린 정상 행위가 있는지 육안 샘플 검토(포함하나 부분매칭
- 행위규칙.psv 튜닝 — 오탐 패턴을 더 구체화(예: "rm -rf" 대신 "rm -rf /" + 화이트리스트
- enforce는 부분 도입부터 — 전 세션 동시 강제 대신, 신규/저위험 세션 1~2개에서
양심게이트.sh "$act" enforce를 시험 적용하고 exit code 기반 실제 차단 동작 확인.
- 하드트립 축(생명존엄·진실·청지기·자유) 우선 강제 — 나머지 축(약자보호·사랑·안식·초월겸손)은
- 폭주검사 임계 확인 — 현재 N=3(연속 3회 타 판정 시 음 격상). 세션이 짧게 자주 재시작되면
게이트웨이/에이전트허브 결선 지점 제안
- 크라우니 게이트웨이(
/Users/ef/crowny-gateway): 외부 POST/대량발송 라우트 핸들러 진입점에서
체계("양심게이트.sh \"게이트웨이: " + 요청요약 + "\"") 형태로 관찰 로깅. 현재 행위규칙.psv에
curl|자유|O, 대량발송|자유|O 등 관련 규칙 이미 존재.
- 에이전트허브(
project_crowny_agent_hub.md참조, 6제공자 자동라우팅): 서브에이전트
- Workflow/Agent 서브에이전트 가드레일(
~/.claude/templates/한선씨-가드레일.md): 서브에이전트
로그 확인법
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 # 사람 이관 필요 사례
미해결·정직 한계
- 부분 문자열 매칭의 오탐 가능성 —
행위분류.한선은포함하나()기반 부분 문자열 매칭이다.
- 셀코어 병행 표현은 실행 불가 상태 —
libs/셀코어.han의_비교()는==,>=,<=,>,<,!=6개
행위분류.한선 하단에 셀코어 룰 구조를
문서적으로만 남겼고, 실제로 룰엔진에 태우려면 셀코어에 연산자를 추가해야 하는데 이는 188개
모듈 공유 라이브러리 수정이라 이번 범위에서 하지 않았다(libs/CLAUDE.md "건드리지 마라").
- enforce 모드의 옴/타 실사례 미검증 — 검증 5종은 관찰모드 위주(+enforce 음/티 각 1건)였고,
verdict 값에 따라 case문으로 분기하므로 동작 원리는 동일하지만, 실측 확인은 남은 작업이다.
- PreToolUse 훅 스니펫은 미등록 — runbook 텍스트로만 제시했고, 실제
settings.json편집은
$CLAUDE_TOOL_INPUT 같은 훅 payload
변수명도 실제 Claude Code 훅 스펙과 대조 검증이 필요하다(가정으로 작성).
- 행위규칙.psv 커버리지는 초기 시드 수준(38규칙) — 실제 도구호출 다양성(파일 수정, 네트워크,
- 자기 재귀 문제(미해결, 문서화만): 양심게이트.sh 자신의 실행(
체계()호출, 파일 컴파일 등)이
양심게이트.sh 자기 자신은
제외하는 가드가 필요하다(등록 시 반영 필요, 이번 runbook 스니펫에는 미반영 — 후속 작업).크라우니코드
- lookup HIT 0건 / MISS 3건("행위분류8축", "행위규칙psv", "게이트러너관찰모드" 계열 — 사전 조회
crownycode-brain.sh learn "행위분류8축" libs/행위분류.한선,
crownycode-learn.sh add "행위분류8축벡터"/"양심게이트러너관찰모드").