6.6 KiB
6.6 KiB
2026-02-08 Daily Log
🚨 Critical Incident #2: Self-Healing System 실패
타임라인
- 11:29 — Gateway 무한 재시작 시작 (
tools.exec.allowlistconfig 키 문제) - 11:29-11:40 — Watchdog 130→158회 재시도 후 Exponential Backoff 발동
- 11:40:08 — Backoff 완료, 재시작 시도 (여전히 실패)
- 11:41-11:44 — 재시도 164→181회, Backoff 재진입
- 11:44 — 정우님 맥미니 직접 접속하여 수동 복구
- 11:45:19 — Gateway 정상 복구 (PID 80021)
- 12:17 —
openclaw doctor --fix로 Config 완전 정리
근본 원인
Config에 tools.exec.allowlist 키가 남아있었음
- 스키마에 없는 키 → Gateway 시작 시
exit_1에러 - 이전 config patch 시 실수로 추가되었거나 제거 누락
셀프 복구 시스템 실패 분석
Level 1 (Watchdog) — ⚠️ 부분 작동
문제:
- 재시도 횟수 6회 초과 → Exponential Backoff (10분 대기)
- 근본 원인(Config) 해결 못 함 → 무한 재시작만 반복
- 최종 185회 재시도
교훈:
- Watchdog는 "폭주 방지"지 "치료"가 아님
- Config 문제는 외부 개입 필요
Level 2 (Health Check) — ❌ 무력
문제:
- Gateway가 죽으면 HTTP 체크 의미 없음
- 재시작해도 Config 문제로 다시 죽음
교훈:
- Health Check는 "일시적 장애"만 복구 가능
- "구조적 문제"는 Level 3 필요
Level 3 (Emergency Recovery) — ❌ 미작동
문제:
- Claude CLI 미설치
- tmux 세션 시작도 못 함
교훈:
- 즉시 조치: Claude CLI 설치 필수
- Emergency Recovery는 "최후의 수단"
Level 4 (Discord Alert) — ❌ 미작동
문제:
- HTTP 404 (채널 ID 문제)
- 알림 실패로 정우님 인지 지연
교훈:
- 즉시 조치: Discord 채널 ID 검증 필요
복구 과정
- 정우님 수동 개입 (11:40-11:44)
- 맥미니 접속
- Config 수정 또는 수동 재시작
- Gateway 정상 복구 (11:45:19)
- Watchdog가 크론 catch-up 자동 실행
- Config 정리 (12:17)
openclaw doctor --fix실행tools.exec.allowlist키 제거
교훈 (두 번째 무한 재시작 사건)
1. Config Validation 부재
- 문제: Invalid config key가 Gateway 시작을 막음
- 해결: Config 변경 시
openclaw doctor필수 - 개선: Config patch 전 schema validation 추가
2. Self-Healing Single Point of Failure
- 문제: Level 2-4 모두 Gateway 의존 → Gateway 죽으면 전멸
- 해결: Level 3 (Claude CLI) 설치 → 독립적 복구 경로 확보
- 개선: LaunchAgent 기반 Level 0 추가 (Config validation + fix)
3. Emergency Recovery Dependency 미검증
- 문제: Level 3 의존성(Claude CLI) 미설치
- 문제: Level 4 의존성(Discord 채널) 잘못됨
- 해결: Dependency check 스크립트 작성
- 개선: 시스템 시작 시 자동 검증
4. Watchdog Backoff의 한계
- 문제: Backoff는 "폭주 방지"지만 "근본 원인 해결" 못 함
- 해결: Backoff 진입 시 Emergency Recovery 즉시 호출
- 개선: Backoff 임계값 동적 조정 (Config 문제 감지 시 더 빨리 에스컬레이션)
즉시 조치 사항
- Claude CLI 설치 (Level 3 활성화) — 12:28 완료 (v2.1.37)
- Discord 알림 수정 (Level 4) — 12:28 완료 (webhook 제거, stdout 사용)
- Config Validator (Level 0) — 12:34 완료 (LaunchAgent 등록, 5분 간격)
- Watchdog v5.2 (Backoff → Level 3) — 12:34 완료 (재시작됨)
- Self-Healing dependency check 추가 (선택)
통계
- 총 재시도 횟수: 185회
- 장애 시간: ~15분 (11:29-11:45)
- 수동 개입: 정우님 (11:40-11:44)
- 복구 완료: 11:45:19
- Config 정리: 12:17
🔍 Self-Healing v2.0 개선 계획
목표
"정우님이 잠자는 동안 무슨 일이 생겨도 아침에는 정상 작동 중이어야 한다"
개선 방향
1. Level 0 추가: Config Guardian
- 목적: Config 문제를 Gateway 시작 전에 감지
- 구현: LaunchAgent (독립 프로세스)
- 체크:
openclaw doctor실행- Invalid config key 감지 → 자동
--fix - Schema validation
- 빈도: 5분마다 + Config 변경 감지 시
2. Level 3 강화: Claude CLI 의존성 제거
- 현재: Claude CLI 필수 → 없으면 작동 안 함
- 개선:
- Fallback #1: OpenClaw CLI로 config diff 분석
- Fallback #2: 마지막 정상 config로 rollback
- Fallback #3: Claude CLI 호출 (선택)
3. Watchdog v5.2: Smart Escalation
- 현재: Backoff 진입 → 10분 대기 (아무것도 안 함)
- 개선:
- Backoff 진입 시 즉시 Level 3 호출
- Config 문제 패턴 감지 → Level 0 호출
- 3회 연속 실패 → Emergency Recovery 강제 실행
4. Level 4 수정: Multi-channel Alert
- 현재: Discord 단일 채널 (404 시 실패)
- 개선:
- Telegram fallback 추가
- SMS 최후 수단 (Twilio API)
- Email 알림 (SMTP)
구현 우선순위
- HIGH: Claude CLI 설치 (즉시)
- HIGH: Discord 채널 ID 수정 (즉시)
- MEDIUM: Level 0 Config Guardian (이번 주)
- MEDIUM: Watchdog v5.2 Smart Escalation (이번 주)
- LOW: Multi-channel Alert (다음 주)
📊 시스템 전반 점검 (12:00)
완료 사항
- Gateway 업데이트: 2026.2.6-3 적용
- exec.security:
full→allowlist변경 (22 패턴) - 크론 점검: 39개 활성 크론 정상 작동
- Self-Healing: 4-Layer 모두 복구 완료
보안 개선
- allowlist 패턴: bash, node, git, python3, curl, docker 등
ask: on-miss: 미등록 명령어는 승인 필요
🔄 컨텍스트 압축 (12:35)
세션 상태
- 컨텍스트: 70% (141k/200k)
- Compactions: 50회
- 모델: claude-opus-4-5 (Thinking: high)
압축 전 핵심 진행상황
- ✅ Self-Healing v2.0.1 완료 (GitHub + ClawHub 동기화)
- ✅ V5.0.1 자기평가 시스템 완료 (9.80/10)
- ✅ Watchdog v5.1 업그레이드 (zombie SIGKILL + cron catch-up)
- ✅ 블로그 3부작 초안 완료 (발행 대기)
- ✅ 데일리 넛지 크론 생성 (평일 06:20)
- ✅ PitchHut 등록 완료
진행 중
- Clawdex 스킬 검증 정책 강화
- 블로그 발행 (
draft: false) - n8n 워크플로우 시작
다음 단계
- Discord 질문 응답 ("진행중?")
- TOOLS.md 업데이트 (gog 계정 정보)
- 데일리 넛지 모니터링 (첫 실행: 2/10 월)
MEMORY.md 업데이트 완료
- 두 번째 무한 재시작 사건 기록 (Important Decisions)
- Self-Healing 한계 문서화
- v2.0 개선 계획 참조