단원 — 4 요소 ④ 검증 (시간이 지날수록 좋아지는 시스템)
별칭: 4 요소 검증 단원 · hooks 단원 · 가소성 단원 · PostSampling 단원
한 줄 명제
검증은 가소성의 전제이고, 가소성은 지식 성장의 조건이다. 좋은 시스템은 시간이 지날수록 좋아진다 — 검증이 그 효과를 만든다.
강의 흐름 (12 분)
① 가소성 — 지식이 자라는 조건 (2 분)
검증은 에이전트의 건강검진. 자기 자신과 자기가 만든 결과물을 점검하는 메커니즘.
검증 없이 도는 에이전트 — 잘못된 코드 위에 잘못된 코드를 쌓는다. 한 번 만든 코드는 틀린 채로 굳고, 한 번 내린 결정은 잘못된 채로 누적. 검증 메커니즘이 작동해야 비로소 잘못 됐다가 발견 되고, 발견되어야 갱신 된다.
검증의 본질 = 가소성. 신경망에서 빌려온 용어. 에이전트 맥락에서는 — 기존 지식·결정·산출물이 새 정보에 의해 갱신될 수 있는 능력. 검증 없이는 가소성도 없다. 가소성 없이는 지식이 자라지 않는다.
검증은 가소성의 전제이고, 가소성은 지식 성장의 조건이다.
시간 차원의 효과:
| 검증 부재 | 검증 작동 |
|---|---|
| 잘못 발견 ❌ → 잘못 위에 잘못 쌓임 → 한 번 굳으면 안 갱신 → 지식 안 자람 → 시스템이 시간 지날수록 망가짐 | 잘못 발견 → 갱신 → 가소성 작동 → 지식 자람 → 시스템이 시간 지날수록 좋아짐 |
상세: term/plasticity
② 건강검진과 가드레일 (1.5 분)
검증은 두 얼굴 을 갖는다.
| 얼굴 | 값 |
|---|---|
| 건강검진 | 정합성·일관성·목표 지향 — 코드가 의도한 대로 짜였는가, 모듈 간 인터페이스 일관되는가, 지난 한입의 결정이 이번 한입과 충돌하지 않는가, 작업이 원래 목표 방향으로 가는가 |
| 가드레일 | 막강한 AI 도구가 방향성 있게 일하도록 보호 — rm -rf / 같은 위험 명령 차단, 비밀키 외부 유출 차단, 사용자 명시 룰 강제, 권한 없는 작업 막음 |
가드레일은 막는 일. 건강검진은 점검하는 일. 둘 다 검증.
그리고 한 가지 더 — 검증 자체도 계층적·구조화 되었는지를 검증. 검증의 메타 차원. 검증 시스템이 잘 짜였는가를 검증. 이게 시간 지날수록 검증 시스템 자체가 자라나게 만드는 메커니즘.
상세: concept/multi-layer-guardrail · term/health-check · term/guardrail-context
③ Hooks — 검증의 사용자 통제점 (3 분)
Claude Code 의 Hooks 는 검증 요소의 사용자 통제점. 공간 요소에서 CLAUDE.md 가 사용자 통제점이라면, 검증 요소에서는 Hooks.
6 이벤트 × 3 카덴스:
| 카덴스 | 이벤트 | 호출 시점 |
|---|---|---|
| 세션 | SessionStart, SessionEnd | 세션 시작·종료 한 번씩 |
| 턴 | UserPromptSubmit, Stop | 사용자 메시지 보낼 때 / Claude end_turn 한 후 |
| 도구 | PreToolUse, PostToolUse | 모든 도구 실행 직전·직후 (매 턴 도구 5 개 쓰면 10 번 호출) |
Hooks 인자: JSON 으로 도구명, 도구 인자, 세션 ID, transcript 경로. 우리가 만든 외부 스크립트가 그 JSON 을 받아서 처리.
Hooks 반환값: additionalContext 가 다음 도구 결과에 prepend. 즉 Hook 으로 Claude 가 다음 턴에 더 많은 정보를 보게 만들 수 있다. 검증이 단순 차단이 아니라 컨텍스트 보강까지 한다.
Hooks 의 강한 점 — Anthropic 의 권한 시스템보다 강하다. PreToolUse 훅이 allow 반환하면 Claude Code 의 권한 시스템을 bypass. 우리가 박은 룰이 최종 권한.
실용 패턴 4 가지:
| Hook | 역할 |
|---|---|
| PreToolUse(Edit) | 변경 전 git stash 백업. 가소성: 잘못된 변경 되돌림 |
| PostToolUse(Edit) | 변경 후 prettier, eslint 자동. 성장: 매 변경 검증 후 누적 |
| PostToolUse(Bash) | 위험 명령 감지 시 알림. 가소성 보호 |
| Stop | 턴 종료 시 대화 요약을 외부 파일에 추가. 성장: 세션 간 지식 누적 |
④ 부재 vs 과잉 — 성장 정지 vs 진행 정지 (1.5 분)
검증 요소가 깨지는 모습은 양 극단.
| 극단 | 값 |
|---|---|
| 검증 부재 = 성장 정지 | 가드레일 ❌ → rm -rf 실행, 비밀키 노출. 자기검증 ❌ → 잘못된 결과 위에 계속 쌓아 올림. 가소성 제로 → 한 번 굳으면 안 갱신. 지식이 자라지 않는다 |
| 검증 과잉 = 진행 정지 | 정상 작업까지 매번 승인 요청. 모든 호출이 막힘. 가소성은 있지만 활용 안 됨 |
처방: permission_mode 를 작업 위험도에 맞게 분리:
| Mode | 용도 |
|---|---|
acceptEdits | 읽기 전용 작업 — 자동 진행 |
default | 일반 코딩 — 위험 작업만 승인 |
default (강) | 배포·삭제 — 모든 destructive 작업 승인 |
bypassPermissions | 디버그 격리 — sandbox 내 자유 실행 |
검증의 시간 차원이 가장 중요: 1 턴, 5 턴에서는 차이 안 보인다. 30 턴, 100 턴 가야 드러난다. 그래서 검증 요소가 가장 자주 무시된다 — 즉시 보상이 없으니까. 그러나 6 개월 가면 — 검증 박은 사람과 안 박은 사람의 차이가 결정적.
⑤ PostSampling — 시스템 측 마지막 레이어 (3 분)
검증 요소의 마지막 레이어 는 시스템 측에 있다 — PostSampling. Anthropic 이 경쟁사의 distillation 학습을 막기 위해 박은 메커니즘.
메커니즘 셋:
| 메커니즘 | 값 |
|---|---|
| Fake Tool Definitions | 시스템 프롬프트에 실재하지 않는 도구 일부 섞음. 정상 사용에서는 모델이 안 부르도록 학습됐다. 누가 응답을 그대로 학습 시키면 그 가짜 도구가 같이 학습 됨 → 거기서 잡힌다 |
| Summarized Reasoning | 모델의 전체 reasoning 을 다 보여주지 않음. PostSampling 단계에서 축약 요약으로 치환 |
| Watermark | 응답에 통계적 시그니처 삽입. 다른 모델이 학습하면 추적 가능 |
시사점: 검증 요소는 사용자 측 (Hooks) 과 시스템 측 (PostSampling) 의 양 끝에서 작동. Hooks 는 우리가 기록하는 검증, PostSampling 은 Anthropic 이 기록하는 검증. 두 검증 사이에 모델 응답이 있다.
좋은 시스템은 시간이 지날수록 좋아진다. 그게 검증 요소가 가져오는 효과다.
⑥ 검증 요소의 한 줄 (0.5 분)
4 요소를 한 장씩 박았다. 이제 — 이 넷을 어떻게 한 손에 쥐는가. Part 3 — 실전 적용 단원으로.
4 엔지니어링 통합 기록
본 단원은 검증 = 하네스 + 에이전틱 을 기록:
- 하네스 엔지니어링: 본 단원의 주 무대. Hooks / PostSampling / permission_mode
- 에이전틱 엔지니어링: 자기 검증·가소성 = 에이전트의 결정 진화
- 컨텍스트 엔지니어링: Hooks
additionalContext가 다음 턴 컨텍스트 보강 — 컨텍스트 진화 메커니즘 - 프롬프트 엔지니어링: Hooks 가 기록하는 additionalContext = 컨텍스트 보강 프롬프트
→ 4 분야 모두 검증 요소 위에서 기록됨. concept/4-engineering-disciplines 통합 기록 규칙 정합.
다음 단원으로
lesson/4elements-hiao-balance (7장 — HIAO + 한입 + 가드레일 균형 = 4 요소를 한 손에 쥐는 일).
출처
60_service/6006 booklet-vibe-coding-4-elements/_combined_book.md §454~512 (6 장 — 검증 — 시간이 지날수록 좋아지는 시스템).