When Claude Detects "Why Isn't This Fixed Yet?" and Repairs Its Own CLAUDE.md: A Self-Improvement Loop Driven by Frustration Signals in Transcripts

개요

Claude Code 환경의 성능 저하를 탐지하고 자체 복구를 수행하는 자동화된 감사 및 복구 루프는 5가지 지표를 주간 단위로 측정하며, 임계값 초과 시 Claude API(-p)를 통해 환경을 개선합니다.

주요 내용

* 자동 감사 루프 설계: cc-self-audit.sh 스크립트가 매주 일요일 오전 8:30에 launchd를 통해 실행되어 5가지 지표(정적 2개, 동적 3개)를 수집하고 임계값과 비교합니다.
* 지표 측정:
* 정적 지표: inject_bytes (주입된 바이트 수) 및 agents_loaded (로드된 에이전트 수)는 .claude 디렉토리 내 파일 크기 및 에이전트 파일 수를 재귀적으로 계산합니다.
* 동적 지표: stopspam (audit hook의 실제 발화 횟수) 및 frustration (사용자의 좌절감을 나타내는 단어 포함 메시지 수)은 JSONL 형식의 대화 기록에서 type=user이고 isMeta가 아닌 인간이 직접 입력한 메시지만 분석합니다.
* 임계값 및 알림: 각 지표에는 env var로 재정의 가능한 임계값이 있으며, 임계값 초과 시 claude -p (sonnet, MAX 플랜)가 ~/.claude 디렉토리 내에서 자체 수정 작업을 수행합니다.
* 자체 복구 및 검증: 수정 후 스크립트는 독립적으로 지표를 다시 측정하여 개선되었는지 확인하며, 자기 보고는 신뢰하지 않습니다. 개선이 확인되면 Discord #01_alerts 채널로 보고합니다.
* 잘못된 grep 사용의 함정: 초기 구현에서 grep을 사용한 단순 문자열 검색은 대화 기록 내의 코드 차이, 도구 출력, 이전 로그의 에코 등 다양한 요소에 의해 stopspamfrustration 지표가 과대평가되는 오류를 발생시켰습니다.
* JSONL 파서와 정확한 마커 매칭: grep의 오류를 해결하기 위해 JSONL 파서를 도입하고, type=userisMeta: false인 메시지만 분석하며, stopspam은 정확히 고정된 형식의 마커만 계산하도록 변경하여 거짓 양성(false positive)을 줄였습니다.
* Claude API(-p)에 대한 프롬프트: 수정 작업 시 Claude API에 전달되는 프롬프트는 ~/.claude 내부 수정, 변경 로그 기록, 독립적인 재측정 확인, 안전하게 수정할 수 없는 경우 보고, 3줄 이내의 최종 요약 등 구체적인 지침을 포함합니다.
* 독립적인 재측정의 중요성: Claude API가 "수정 완료"를 보고하더라도, 스크립트는 독립적으로 지표를 다시 측정하여 실제 개선을 확인합니다. 개선이 없으면 경고(🚨)가 발생합니다.
* launchd 설정: 스크립트는 launchd를 통해 일요일 오전 8:30에 실행되도록 예약되어 있으며, RunAtLoad는 false로 설정되어 즉시 실행되지 않도록 합니다.
* 주요 함정 요약:
* 대화 기록 전체에 대한 단순 grep은 JSONL 파서와 type=user && !isMeta 조건으로 대체해야 합니다.
* stopspam 매칭 시 후크 스크립트 자체의 인용도 포함될 수 있으므로, 정확한 고정 마커 문자열만 계산해야 합니다.
* AI의 자체 보고만으로는 수치 개선을 확신할 수 없으므로, claude -p 출력과 별도로 collect()를 독립적으로 다시 실행해야 합니다.
* launchd의 최소 PATH 문제 해결을 위해 plistEnvironmentVariablesPATH를 명시적으로 지정해야 합니다.
* frustration 지표가 0으로 고정되는 것은 좋은 신호일 수 있지만, 정기적으로 임계값과 정규 표현식이 실제 사용어와 일치하는지 확인해야 합니다.

시사점

이 시스템은 Claude Code 환경의 성능 저하를 지속적으로 모니터링하고, '좌절감'과 같은 사용자 피드백 신호를 포함한 다양한 지표를 사용하여 잠재적 문제를 신속하게 탐지하며, Claude API를 활용한 자동 복구를 통해 개발자의 개입 없이 환경 안정성을 유지하는 강력한 자기 개선 루프를 구축합니다. 측정 설계의 정확성이 감사 결과의 품질을 결정한다는 점을 보여줍니다.

원문 읽기 →
원문을 불러오는 중...

댓글

GitHub Discussions