AI 활용 노트Last reviewed · 2026-06← 목록

결론을 만드는 AI, 의심하는 AI

도구는 Claude Code 하나만 쓴다. 그런데 위험한 작업에서는 두 번째 의견이 어디선가 나온다. 그 구조를 적었다.

1전체 구도 — 대화 창구는 하나

왼쪽 화살표는 항상 움직이고, 오른쪽 화살표는 조건이 맞을 때만 움직인다. 나는 왼쪽 화살표만 본다.

한 도구만 보고,
한 도구에게만 말한다

사령탑 — Claude Code

작업 수행, 결론 생성,
검토 호출 여부 판정, 최종 판단 책임

검토자 — Codex CLI

받은 브리프 범위 안에서
독립적으로 second opinion

2두 역할은 무엇이 다른가

같은 일을 두 번 시키는 게 아니다. 권한과 책임이 비대칭이다.

사령탑

· 사용자와 대화하는 유일한 창구
· 내 작업 맥락(기억 시스템)에 전부 접근
· 파일을 읽고 쓸 수 있다
· 검토자를 부를지 말지 스스로 판정
· 받은 의견을 거르고, 최종 판단에 책임진다

검토자

· 사용자에게 직접 응답하지 않는다
· 매 호출에 전달된 브리프만 본다(맥락 최소화)
· 파일을 읽을 수만 있다, 수정 권한은 없다
· 의견을 낼 뿐, 채택 여부는 사령탑 소관
· 호출되지 않으면 존재하지 않는 것과 같다

3이 구조를 지탱하는 네 가지 규칙

창구는 하나

나는 도구 하나만 쓴다. 검토자는 도구 안에서 자동으로 움직이는 부품이지, 내가 따로 관리하는 두 번째 도구가 아니다.

검토자는 보이지 않는다

검토자의 응답이 나에게 직접 도달하는 일은 없다. 항상 사령탑이 자기 결론과 비교하고 가공한 결과만 온다.

차이만 노출

"검토를 받았다"는 보고 자체가 잡음이다. 두 결론이 같으면 아무 말도 하지 않고, 다를 때만 그 차이를 한 줄로 짚는다.

자동 채택 금지

검토자의 의견이라고 자동으로 따르지 않는다. 의견이 둘이 되는 순간 누가 판단에 책임지는지가 흐려진다. 책임은 끝까지 사령탑에 둔다.

4언제 부르나 — 위험도 기반 조건부

모든 작업에 검토를 붙이면 비용이 두 배가 되고 의견 잡음도 두 배가 된다. 그래서 언제 부를지를 명시적인 목록으로 박아 뒀다. 위험과 영향이 큰 케이스만 부른다.

부른다 — 위험이 큰 작업

  • 같은 버그의 수정 시도가 3회 연속 실패했을 때
  • 작업 완료 보고 직전의 종합 점검(평가체계 편의 10축 점검)
  • 운영 중인 서비스에 장애·이상이 보일 때의 진단 초기
  • 권한·개인정보·결제 등 민감한 코드·설정 변경
  • DB 스키마·마이그레이션·데이터 삭제·변환처럼 데이터가 걸린 변경
  • 배포·백업·알림·cron 같은 운영 자동화의 동작 변경
  • 대형 정책·설계·운영 문서의 변경

안 부른다 — 일상 작업

  • 문구 다듬기
  • import 정리
  • 이름 변경, 코드 포맷팅
  • 주석 추가
  • 테스트명 변경
  • 문서 단순 정리
  • 1~2회 실패한 일반 디버깅 (3회부터가 신호)

※ 내가 명시적으로 "검토 받아 봐"라고 하면 목록과 무관하게 호출한다. 반대 방향의 예외는 없다. 게이트(7번의 스위치)가 닫혀 있으면 명시 요청도 거부된다.

5호출 한 번의 생애주기

트리거가 발동해도 곧장 호출되지는 않는다. 호출 전후에 고정된 절차가 있다. 매번 손으로 지키는 대신 래퍼 스크립트 하나에 전부 박아서, 어떤 호출도 우회할 수 없게 했다.

매 작업

트리거 판정

이 작업이 "부른다" 목록에 해당하는가를 사령탑이 스스로 판정.

호출 전

관문 검사

통합 전체의 on/off 스위치 확인 + 검토자 쪽 로그인 상태 확인. 하나라도 실패하면 호출 자체가 없다.

호출

브리프 전달

고정된 소형 메타 브리프 + 이번 작업 요약만 전달. 읽기 전용 모드로 실행.

직후

기록

호출 시각·소요·트리거 종류는 로그로, 주고받은 원문은 보관소로(일정 기간 후 자동 삭제).

보고 전

비교 · 필터

사령탑이 자기 결론과 대조해 의미 있는 차이만 추린다. 다음 6번의 세 갈래로.

긴 자료를 여러 번 검토시킬 때 — baseline + delta

큰 설계 문서를 고칠 때마다 전체를 다시 보내면 토큰과 시간이 매번 통째로 든다. 그래서 최초 1회만 전문을 보내고, 이후엔 요약과 이번 변경분, 검토 포인트만 보낸다. 검토자 입장에서도 매번 처음 읽는 것보다 판단이 일관된다. 사람끼리 하는 변경분 리뷰와 같은 원리다.

6받은 의견은 세 갈래로 갈린다

두 번째 의견이란 게 자칫하면 그냥 의견 생성기가 된다. 그걸 막으려고 검토자의 모든 발언이 아니라, 사령탑의 결론과 다른 부분만 분류돼 나에게 온다.

사령탑의 결론 vs 검토자의 의견 — 차이가 있는가?
동일 · 사소한 차이

아무 언급 없이 평소처럼 보고.
검토가 있었다는 사실조차 안 보인다.

의미 있는 차이

"검토 결과 ○○ 부분이 달라 ○○로 정정(또는 유지)" 식으로 한 줄로 짚는다.

크고, 어느 쪽이 맞는지 불확실

양쪽 입장을 짧게 요약해서
나에게 판단을 넘긴다.

필터의 세부 규칙

· 검토자가 브리프에 근거 없는 사실을 추가하면 폐기한다. 그럴듯한 추측이 제일 위험하다.

· 검토자가 더 보수적인 의견을 낼 때, 위험 근거가 명확하면 우선 검토한다.

· 두 결론이 충돌하면 차이, 각자의 근거, 사용자 결정이 필요한지의 세 항목으로 정리한다.

7안전장치 — 보이지 않는 자동화라서 더 단단하게

눈에 안 보이는 자동 호출은 잘못돼도 한참 동안 모를 수 있다. 그래서 안전장치를 다짐이 아니라 호출 형식 자체에 박았다.

스위치 하나로 전체 차단

스위치 파일이 없으면 어떤 트리거에도, 내가 명시 요청해도 호출하지 않는다. 통합 전체의 단일 kill switch.

인증 끊기면 스스로 꺼진다

호출 전 로그인 검사 + 응답에서 인증 실패 신호 매칭의 이중 검사. 끊긴 게 확인되면 통합을 자동 비활성화하고 한 번만 알린다.

과금 우회 경로 차단

검토자 CLI는 구독 로그인 외에 API 키 종량 과금으로도 동작한다. 인증이 끊긴 상태에서 환경변수의 API 키로 조용히 넘어가 요금이 발생하는 사고를, 호출 명령 형식 자체에서 키를 비워 원천 차단.

읽기 전용

검토자는 항상 읽기 전용 모드로 실행된다. 검토자가 파일을 고치는 일은 합의가 아니라 구조적으로 불가능하다.

컨텍스트 위생

개인 행동 규칙·자격증명·계정 정보는 브리프에 담지 않는다. 보내는 것은 일반화된 메타 브리프와 이번 작업의 요약뿐.

철수 절차 내장

이 통합은 영구 시설이 아니다. 끄는 절차(스위치 제거 → 정리 → 보고서)와 되살리는 경로가 처음부터 정의돼 있다.

인증 검사에서 당한 함정 두 가지

· 로그인 상태 명령의 출력 문자열을 검사했더니 항상 통과로 나왔다. "Not logged in"이라는 출력 안에 "logged in"이 부분 문자열로 들어 있었던 것. 이 명령은 종료 코드로만 판정해야 했다.

· 실제 호출 명령은 정반대였다. 인증이 끊겨도 종료 코드 0으로 멀쩡히 끝난다. 이쪽은 응답 내용에서 인증 실패 신호를 찾아야 했다.

같은 CLI인데 두 명령의 거짓말 못 하는 신호가 정반대였던 셈이다. 게이트 검사를 만들 땐 명령마다 어떤 신호를 믿을 수 있는지, 실제로 실패 상태를 만들어 확인해 보는 수밖에 없다.

8이 구조에서 가져갈 만한 것

특정 도구 조합보다는 역할 설계 쪽이 옮겨 심을 만하다.

second opinion은 상시가 아니라 위험도 기반으로.

모든 작업에 두 번째 AI를 붙이면 비용과 잡음이 함께 두 배가 된다. 언제 부르고 언제 안 부르는지의 명시적 목록이 이 통합 가치의 절반이다.

의견이 둘이어도 판단 책임은 한 곳에.

두 번째 AI의 의견을 자동 채택하기 시작하면 어느 쪽도 결론에 책임지지 않게 된다. 한쪽이 비교와 필터, 최종 판단을 전담하고 차이만 표면화한다.

의도치 않은 과금 경로는 다짐이 아니라 형식으로 막는다.

"주의해서 쓴다"는 어느 날 잊힌다. 호출 명령의 형식 자체가 우회를 불가능하게 만들어 두면 사람이 잊어도 안전하다.

보이지 않는 자동화일수록 기록을 남긴다.

사용자에게 안 보이는 호출은 감사 로그가 유일한 관측 수단이다. 언제, 왜, 얼마나 호출됐는지 나중에 복원할 수 없다면 그 자동화는 켜 두면 안 된다.

도입할 때 철수도 같이 설계한다.

외부 의존이 있는 통합은 언젠가 끈다. 끄는 절차와 복원 경로를 처음부터 정해 두면 어쩌다 방치된 좀비 연동이 생기지 않는다.

⚠️ 이 문서는 구조 설명용이다. 실제 브리프 내용·호출 로그·계정 정보·실제 파일 경로는 포함하지 않는다.