뒤로
U
untactit ·

AI 지침을 90KB에서 147KB로 늘렸다. 위반은 안 줄었고, 코드로 내린 8건만 재발 0이었다

AI 에이전트에게 지키게 하고 싶은 규칙이 있다. AGENTS.md에 쓴다. 안 지킨다. 더 자세히 쓴다. 그래도 안 지킨다. 조문을 하나 더 넣는다.

48일간 그렇게 운영한 결과 상주 지침 파일은 90KB에서 147KB가 됐다.

그리고 위반은 안 줄었다.

숫자를 낸다. 전부 내 환경 1대의 실측이다(n=1).

1. 토큰의 94.4%는 같은 텍스트를 다시 읽은 것이었다

지침 파일을 늘리면 비용이 어떻게 움직이는가. 48일 집계다.

항목 실측값
누계 토큰 62,250M
그중 캐시 재독 58,751M (94.4%)
순수 생성 출력 185.9M (0.30%)
메시지 수 268,766
메시지당 재독량 약 219k 토큰

상주 지침은 4파일 204,309바이트. 이게 매 턴 재주입된다.

즉 「누계 토큰량」은 에이전트의 작업량이 아니라 지침 길이 × 턴 수의 함수다. 이걸 자기 가동 규모의 지표로 쓰면, 지침을 길게 쓴 사람일수록 「많이 쓰는 사람」으로 보인다.

캐시 적중률 99.3%도 같은 함정이다. 효율의 증거가 아니라 같은 맥락을 반복해서 던지고 있다는 증거였다.

2. 그런데도 위반은 안 줄었다

지적받을 때마다 규칙 단위로 횟수를 세는 작은 스크립트를 돌리고 있다. 대단한 게 아니고, 교정받으면 카운터를 1 올리는 것뿐이다.

조문을 써넣은 뒤에도 카운터는 멈추지 않았다. 전날 신설한 조문이 다음 날 깨지는 일까지 있었다.

조문을 늘리는 것은 해결이 아니라 증상이었다.

3. 24개 규칙을 두 군으로 나눠 재봤다

기록된 24개 규칙이 마침 두 군으로 갈려 있었다.

  • A군(8건): 위반을 코드에서 막은 것. PreToolUse 훅, 검사 스크립트, 발송 직전 가드.
  • B군(16건): 조문으로 문서에만 쓴 것.

같은 환경, 같은 에이전트, 같은 기간이다.

규칙 수 재발한 규칙 누적 재발 규칙당
A: 코드 게이트 8 0건 (0%) 0회 0.00
B: 문서 조문만 16 16건 (100%) 19회 1.19

B군은 전멸이었다. 16건 전부가 최소 1회는 재발했다.

A군은 게이트 설치 후 2,500~4,053턴 무재발이 이어지고 있다.

4. 이걸 「게이트가 효과 있었다」고 해도 되나

반론 세 개를 진지하게 본다.

반론 1: 선택 편향. 게이트를 붙인 건 원래 제일 심한 규칙 아닌가.

맞다. 운영 규칙상 같은 위반이 3회를 넘으면 코드로 내린다. 즉 A군은 원래 가장 재발이 심했던 8건이다. 그게 지금 0회다. 편향은 결론을 약화시키는 게 아니라 강화하는 방향으로 작동한다.

반론 2: 역인과. 게이트 설치 시점에 이미 학습이 끝난 것 아닌가.

부정할 수 없다. 「3회째에 게이트를 붙인다」는 절차 자체가 시간 경과와 상관한다. 다만 B군에도 2회 재발한 채 멈추지 않은 규칙이 3건 있어서, 시간만으로는 설명이 안 된다.

반론 3: 애초에 문서를 안 읽는 것 아닌가.

읽는다. 204KB 전량이 매 턴 컨텍스트에 들어간다. 읽은 상태에서 안 지켜진다는 게 이 측정의 의미다.

5. 학습 큐도 절반이 버려지고 있었다

지적받을 때마다 큐에 쌓고 조문화까지 추적하는 장치도 돌린다. 누적 내역이다.

상태 건수
조문 승격 231
검증 완료 178
기각 229
미처리 12
사람 판단 대기 63

기각률 49.8%. 포착한 학습 신호의 절반이 조문이 되지 못하고 사라진다. 그리고 「사람 판단 대기」가 63건 쌓여 있다. 자동화했다고 생각한 장치가 결국 사람을 병목으로 만들고 있었다.

6. 무엇을 바꿨나

규칙의 거처를 3단으로 나눴다.

  1. 1회째: 기록만 한다. 조문에 쓰지 않는다.
  2. 2회째: 조문에 쓴다. 단 매 턴 앞에 「최근 빈발 위반 상위 3건」만 주입한다. 전문이 아니라 3건이다.
  3. 3회째: 문서 수정으로 닫는 것을 금지한다. 코드 게이트를 쓰고, 일부러 망가뜨린 입력이 그 게이트에 걸리는 것을 확인할 때까지 닫지 않는다.

3단계가 핵심이었다. 「조문 고쳤습니다」로 닫을 수 있는 한, 같은 위반이 4회째에 온다.

상위 3건만 주입하는 것도 의도적이다. 건수를 늘리면 또 안 읽힌다. 안 읽히는 조문을 늘린 게 애초의 원인이었으니까.

7. 못 잰 것

구멍을 정직하게 적는다.

  • n=1이다. 1대, 1인 운영이다. 다른 환경에서 재현될지 모른다.
  • 게이트 정확도를 못 쟀다. 회귀 판정기 자체에 1표본 오탐률 66%라는 측정이 있다(「확정」으로 보고된 회귀 3건 중 2건이 3표본 재측정에서 통과). 게이트 검증은 이제부터다.
  • 「지켜졌다」의 정의가 약하다. 재발 카운트는 사람의 지적이 기점이다. 아무도 못 잡은 위반은 안 세어진다. 실제 위반율은 이보다 높다.

정리

  • 지침을 90KB → 147KB로 늘려도 위반은 안 줄었다
  • 토큰의 94.4%는 같은 지침의 재독이라, 토큰량은 작업량 지표가 못 된다
  • 24개 규칙 대조에서 코드로 내린 8건은 재발 0%, 문서로만 둔 16건은 재발 100%
  • 조문을 늘리는 것은 해결이 아니라 증상이었다

자기 머신에서 같은 측정을 해본 사람이 있으면 숫자를 보고 싶다. 특히 B군 재발률이 환경에 따라 달라지는지.


이 계측은 untactit을 만드는 과정의 실측이다. AI 에이전트가 읽는 스킬·지침·메모리를 한곳에서 관리하는 control plane이고 현재 얼리 액세스다. 드리프트 탐지 부분은 agent-drift로 MIT 공개했다(의존성 없음, 단일 파일).

untactit

AI 에이전트가 읽는 스킬·지침·메모리를 한곳에 모아, 승인을 거쳐 모든 단말에 배포합니다. 복붙 없이 팀 전체가 같은 자산을 씁니다.

0

댓글

로그인 후 댓글을 남길 수 있습니다.

아직 댓글이 없습니다.