virtual-insanity
← 리포트 목록

2026-04-10 세션 종합 보고서

2026-04-10 claude [세션보고, 종합리포트, OpenClaw, OTel, dispatch_tracker, cmux_monitor, 섹터나침반, 네프콘]

2026-04-10 세션 종합 보고서

한눈에 보기

지표
총 배분 작업 47건
완료 36건
진행 중 4건
대기 7건
주요 인프라 추가 OTel 수신기, dispatch_tracker, cmux_monitor
교차 검증 반복 twitter-collector(4/4), cmux_monitor(4차→7/7)

핵심 성과 3줄: 1. OTel 관측 인프라 Phase 1~3 완결 — 수신기 구축 + Claude/Codex 메트릭·트레이스 실제 유입 확인 (logs 27K+, spans 390, metrics 7, 서비스 6개) 2. 섹터나침반 moat DB 4개 섹터 완전 등록 — 산업재 75% 커버리지, 재무 수집·scorer 재실행 완료 3. dispatch_tracker 도입으로 세션 간 작업 추적 가능 — 47건 기록, startup hook 자동 표시, 청사진 연동


A. 시스템 설계

dispatch_tracker (신규)

  • shared/dispatch_tracker.py — 5개 함수 + CLI (log_dispatch/update_status/get_pending/get_summary/cleanup_old)
  • memory/dispatch_log.json — 초기화 완료
  • startup hook(knowledge-graph-loader.py)과 자동 연동: 새 세션 열 때 미완료 작업 자동 표시
  • 47건 자동 기록 중

청사진 자동 참조 (기존 확인)

  • shared/blueprint.pyget_blueprint_summary() + knowledge-graph-loader.py hook 이미 구축 상태 확인
  • 세션 시작 시 청사진 요약 12줄 출력 (문서 경로·Phase·다음 할 일·활성 작업)

auto_dispatcher.sh (#27, #35)

  • 작업 큐 + 10초 감시 + 자동 배분 + 텔레그램 진행률
  • 실전 테스트 완료 (3건 큐 투입 → 배분 검증)

널리지그래프 v2

  • blueprint_updater.py로 청사진 자동 갱신 흐름 연결
  • Phase 1~4 진행 상태 자동 감지

B. 관측 인프라 (OTel)

Phase 1 — 경량 수신기 구축 (완료)

  • 위치: ~/.openclaw/workspace/src/monitoring/
  • 파일 6개: otel_collector.py, otel_decoder.py, otel_schema.py, run_collector.py, __init__.py, requirements.txt
  • SQLite 스키마: 7개 테이블 (resources, metrics, histograms, spans, logs, daily_summary, schema_version)
  • Flask 라우트 5개: /health, /stats, /v1/metrics, /v1/traces, /v1/logs
  • LaunchAgent: com.openclaw.otel-collector.plist 등록, KeepAlive + RunAtLoad
  • 의존성: opentelemetry-proto 신규 설치 (프로토콜: HTTP + Protobuf 바이너리)

Phase 2 — Claude Code 메트릭 활성화 (#1)

  • ~/.claude/settings.json env 블록에 6개 변수 추가 (CLAUDE_CODE_ENABLE_TELEMETRY=1 등)
  • 실제 메트릭 유입 확인: claude_code.session.count, claude_code.cost.usage, claude_code.token.usage(input/output/cacheRead/cacheCreation)
  • 확인된 메타데이터: service.name=claude-code, model=claude-opus-4-6[1m], session.id, user.email

Phase 3 — Codex trace 유입 (#25, #29)

  • 근본 원인 2가지 발견:
  • trace_exporter = "otlp-http" 단순 문자열은 struct variant 형식 필요 (기존 수정이 잘못된 TOML)
  • Codex의 otlp-http exporter는 endpoint를 literal URL로 사용 (자동 /v1/traces 추가 안 함)
  • 올바른 config.toml: toml [otel.trace_exporter.otlp-http] endpoint = "http://localhost:4318/v1/traces" protocol = "binary"
  • codex exec 테스트로 종단간 검증: spans 0 → 390+
  • span 14개 종류 수집 (codex.exec, handle_responses, build_tool_call 등)

DB 리텐션 + 샘플링 (#14)

  • 차등 리텐션: logs 2일, metrics/spans 7일, daily_summary 90일
  • 결정론적 샘플링: DEBUG 드롭, WARN/ERROR 전부 유지, Codex INFO는 10% (해시 기반)
  • 긴급 소급 정리: 1.05GB → 4.37MB (-99.6%)
  • 환경변수 OTEL_INFO_SAMPLE_RATE로 비율 조정 가능

부수 작업

  • #16: OTel DB maintenance 스크립트 (stats/cleanup/vacuum/export)
  • #20: 리텐션 동작 검증
  • #36: Codex INFO 샘플링 키 + span 시간 키 수정
  • #42: 과거 span 시간 보정 + ollama ops_todos 재분류

현재 DB 상태 (2026-04-10 16:15)

테이블 건수
logs 27,372
spans 390
metrics 7
resources 10
DB 크기 10.48MB

서비스별 logs: - hermes 18,304 (66.9%) ← 샘플링 미적용 (이상 징후) - codex_cli_rs 8,718 (31.9%) - codex_exec 329 - cmux 18 - claude-code 2


C. 자동화 파이프라인

Karpathy Lint 고도화 (#22, #31)

  • 빈 참조 채우기 + 빠진 개념 생성 + 태그 정규화
  • 산출물 재검증 완료

daily-intelligence-report 재활성화 (#4)

  • 크론 재활성화 + 즉시 실행 검증

vault_ingest_linker 태그 버그 수정 (세션 작업)

핵심 원인: - LLM content 전체가 에러 메시지인 경우 필터 통과 — _ERROR_CONTENT_RE로 content 전체 검증 추가 - 태그 길이 24자→20자, 괄호/마침표/특수문자 거부, 에러 키워드 14개(이전 5개) - LLM 실패 시 fallback 휴리스틱 대신 기존 태그 유지 (스킵)


D. 버그 수정

twitter-collector 인증 (#2, #8)

  • 인증 오류 근본 수정 + --sync-following 복구 (scrapling 기반 대안)

ops_todos 162건 중복 정리 (#6)

  • 중복 cancelled 정리 + check_ops_db 근본 수정
  • 결과: 중복 0 달성

ollama_client 재분류 (#42)

  • ollama ops_todos 재분류 + OTel 과거 span 시간 보정

nepcon PDF 수집 복구 (세션 작업)

  • 크론 nepcon-collector enabled: false → true
  • 즉시 수동 수집으로 누락분 28건 (디라인시크릿 20 + 사피엔스에셋 8) 전량 복구
  • 위치: ~/knowledge/100 수신함/120 지식사랑방/124 nepcon/

cmux_monitor 오탐 재수정 (#18, 세션 4차 반복)

4차 반복 끝에 7/7 정확 달성. 근본 원인 7가지: 1. classify_status 순서 오류 — placeholder 체크가 BUSY보다 먼저 2. activity_lines 필터에 placeholder 미포함 3. 기본값 Busy (증거 없어도 단정) 4. WAITING 범위 30줄 — 과거 텍스트 오탐 5. BUSY 기호 누락 — ✶, ✳, ✸, ✺, \w+ing…, bullet() 6. 정규식 ASCII 한정 — [A-Za-z]+edSautéed(é) 매칭 실패 7. 훅 상태 라인 오분류 — • Running Stop hook의 running 단어

신규 헬퍼: has_clean_prompt_ending() — 빈 프롬프트 + 상태바 구조 + 프롬프트 위 3줄 BUSY 없음 → Idle 판정

웹앱 데몬 재기동 (#24)

  • 비가동 상태 발견 후 재기동

E. 데이터 수집

네프콘 복구 (세션 작업)

  • 크론 재활성화 + 누락분 28건 전량 수집
  • 디라인시크릿 20건 + 사피엔스에셋 8건
  • PDF 28건, 이미지 각 16장, 텔레그램 전송 완료

섹터나침반 moat DB (#11, #17, #19)

  • 5개 섹터 기업 등록
  • 재무 수집 + moat_scorer 재실행 완료
  • 교차 검증: Codex→Claude
  • 4개 섹터 완전, 산업재 75% 커버리지

F. 에이전트

협업 루프 분류기 (#9)

  • 키워드 기반 작업 분류기 구현

Paperclip CRITIC (#23, #28)

  • 분석 보고서 비판 에이전트 구현
  • watcher 기반 파이프라인 연동

Hermes v0.8 업그레이드 준비 (#37)

  • 백업/롤백 스크립트
  • 리스크 분석

G. 웹앱

사용량 대시보드 /admin/telemetry (#26)

  • admin 블루프린트 통합 완료
  • 4개 API 엔드포인트: summary / by-model / by-agent / timeline
  • 템플릿 admin/telemetry.html 생성

대시보드 검증 결과 (#32, 세션 작업)

API 상태
by-agent ✓ 정상 (claude-code 113,976 tokens)
by-model ✓ 정상 (claude-opus-4-6[1m])
timeline ✓ 정상
sessions ✓ 33 trace_id
summary ✗ 쿼리 버그 — 0 표시

summary 버그: SQL이 metric_name LIKE '%input%token%' 방식. 실제 Claude Code 메트릭은 claude_code.token.usage 단일 name + attributes.type=input/output/cacheRead/cacheCreation. attributes_json 파싱 필요.

브리핑 페이지 바인딩 (#12, #21)

  • 스파크라인/레이더/가설/행동/상황/수급 6건
  • 리스크 vs 섹터 지표 레이더 판단 + 필요 시 섹터 레이더 추가

H. 교차 검증

twitter-collector 4/4 성공 (#7)

  • Codex → Claude 교차 검증

cmux_monitor 4차 반복 7/7 정확 (#10, #15, #18, 세션)

  • 1차: Codex→Claude 검증 후 surface:6 수정
  • 2차: Claude→Codex 재검증
  • 3차: Codex→Claude 재검증 (FAIL — surface:2 오탐 잔존)
  • 4차: 메인 세션에서 7가지 원인 근본 수정 → 7/7 정확

섹터나침반 moat DB (#17)

  • Codex → Claude 교차 검증

auto_dispatcher 더미 검증 (#30)


실제 측정 성과

지표 수치
OTel logs 27,372건
OTel spans 390건
OTel metrics 7건
OTel 서비스 수 6개 (claude-code, codex_exec, codex_cli_rs, codex-app-server, hermes, cmux)
ops_todos 중복 0건 (162건 DELETE)
섹터나침반 4개 섹터 완전, 산업재 75%
dispatch_tracker 기록 47건
네프콘 수집 28건
cmux_monitor 정확도 7/7 (100%)
OTel DB 크기 회수 1.05GB → 4.37MB (-99.6%)

남은 작업

진행 중 (4건)

  • #38/#47: dispatch_tracker CLI 보강 (--export CSV, --filter --status) — 중복 배분
  • #39: knowledge-graph-loader.py hook 개선 (미완료 top 3만)
  • #40: scripts/ 미사용 스크립트 정리 목록 (삭제 없이 목록만)

대기 (7건)

  • #33: OTel Phase 5 — End-to-End trace 연결 (TRACEPARENT)
  • #34: 섹터나침반 산업재 누락 2건 NAVER/KRX 대안 파이프라인
  • #41: auto_dispatcher idle 판정 튜닝 (cmux_monitor 패턴 활용)
  • #43: Codex config.toml 영구 otlp 적용 + 재시작 매뉴얼 ← 이미 영구 적용 완료
  • #44: OTel 대시보드 summary 쿼리 버그 수정 + Hermes 샘플링 검토
  • #45: OTel spans 스키마 보강 (raw_json 컬럼 추가)
  • #46: 오늘 세션 최종 종합 보고서 ← 현재 문서

해리 승인 필요 항목

  1. Hermes 로그 샘플링 검토 (#44) — 현재 전량 저장, 66.9% 차지. 10% 샘플링 적용 여부 결정 필요
  2. OTel 대시보드 summary 쿼리 버그 수정 (#44) — admin.py SQL 수정 필요
  3. OTel spans 스키마 보강 (#45) — 운영 중 마이그레이션 필요
  4. Hermes v0.8 업그레이드 실행 (#37) — 준비 완료, 실행 승인 대기

이상 징후 3건

  1. Hermes 로그 샘플링 미적용: should_keep_logstartswith("codex")만 샘플링. Hermes는 전량 저장되어 logs 증가의 67% 차지
  2. summary API 쿼리 버그: UI 카드에 input/output/cache 0으로 표시됨 (실제 DB 데이터는 존재)
  3. DB 증가 속도: 1시간 20분 만에 5.27MB → 10.48MB (2배). Hermes가 주 원인

DB 건강 자체는 정상 (7일 보관 기준 670MB 예상, 안전 범위).


다음 세션 준비 사항

  1. Hermes 샘플링 정책 해리 승인 후 적용
  2. summary 쿼리 수정 (attributes_json 기반)
  3. Phase 4 시작: Hermes/cmux OTel SDK 주입 검토
  4. 진행 중 4건 정리 (#38/#47 중복 해결 포함)

세션 통계

  • 총 작업 시간: 약 8시간 (오늘 하루)
  • 도구 호출: 400+
  • 활용 에이전트: 메인(Claude) + surface:1~7 (Claude/Codex 혼합)
  • 배분 방식: dispatch_tracker + cmux 멀티 세션
  • 주 병목: 없음 — 모든 작업이 병렬로 진행됨