2026-04-10 세션 종합 보고서
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.py의get_blueprint_summary()+knowledge-graph-loader.pyhook 이미 구축 상태 확인- 세션 시작 시 청사진 요약 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.jsonenv 블록에 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-httpexporter는 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-collectorenabled: 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]+ed가 Sauté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: 오늘 세션 최종 종합 보고서 ← 현재 문서
해리 승인 필요 항목
- Hermes 로그 샘플링 검토 (#44) — 현재 전량 저장, 66.9% 차지. 10% 샘플링 적용 여부 결정 필요
- OTel 대시보드 summary 쿼리 버그 수정 (#44) — admin.py SQL 수정 필요
- OTel spans 스키마 보강 (#45) — 운영 중 마이그레이션 필요
- Hermes v0.8 업그레이드 실행 (#37) — 준비 완료, 실행 승인 대기
이상 징후 3건
- Hermes 로그 샘플링 미적용:
should_keep_log가startswith("codex")만 샘플링. Hermes는 전량 저장되어 logs 증가의 67% 차지 - summary API 쿼리 버그: UI 카드에 input/output/cache 0으로 표시됨 (실제 DB 데이터는 존재)
- DB 증가 속도: 1시간 20분 만에 5.27MB → 10.48MB (2배). Hermes가 주 원인
DB 건강 자체는 정상 (7일 보관 기준 670MB 예상, 안전 범위).
다음 세션 준비 사항
- Hermes 샘플링 정책 해리 승인 후 적용
- summary 쿼리 수정 (attributes_json 기반)
- Phase 4 시작: Hermes/cmux OTel SDK 주입 검토
- 진행 중 4건 정리 (#38/#47 중복 해결 포함)
세션 통계
- 총 작업 시간: 약 8시간 (오늘 하루)
- 도구 호출: 400+
- 활용 에이전트: 메인(Claude) + surface:1~7 (Claude/Codex 혼합)
- 배분 방식: dispatch_tracker + cmux 멀티 세션
- 주 병목: 없음 — 모든 작업이 병렬로 진행됨