virtual-insanity
← 뒤로

세션 로그 260317

log 2026-03-17

세션 로그 — 2026-03-17

세션 목표

이전 세션에서 완성한 CLIProxyAPI 통합의 E2E 테스트 및 시스템 고도화.


완료 작업

1. CLIProxyAPI E2E 테스트 ✅

  • 무엇: shared/llm.py에 추가한 cliproxy/ 라우팅이 실제 파이프라인에서 정상 작동하는지 검증
  • 결과: Haiku·Sonnet 모두 정상 응답, 폴백 체인 순서도 기대대로 작동
  • PREMIUM 체인 → cliproxy/claude-sonnet-4-6 (Tier 0 정상)
  • DEFAULT 체인 → github-copilot/gpt-5-mini (Tier 0 정상)
  • 의사결정 근거: 구독 기반 무과금 Claude 호출이 안정적이면 API 비용 대폭 절감

2. CLIProxyAPI launchd 자동 시작 ✅

  • 무엇: nohup → launchd 전환. 재부팅·크래시 시 자동 복구
  • 파일: ~/Library/LaunchAgents/com.openclaw.cliproxyapi.plist
  • 설정: RunAtLoad: true, KeepAlive: true
  • 의사결정 근거: 수동 nohup은 재부팅 시 잊기 쉬움. 시스템 서비스화가 운영 안정성 확보

3. Dexter 비교 분석 📊

  • 무엇: virattt/dexter (자율형 금융 리서치 에이전트)와 OpenClaw 시스템 체계적 비교
  • 결론: 도입 불필요. 우리 시스템이 범용성·비용·자동화에서 우세
  • 배울 점 3가지 선정:
  • JSONL 도구 호출 로깅 → 구현 완료
  • Evals 자동 채점 → 구현 완료
  • Financial Datasets API → 추후 필요 시 추가
  • 의사결정 근거: 전체 도입보다 "체리픽" 방식이 기존 아키텍처 유지하면서 좋은 부분만 흡수

4. JSONL 호출 로깅 구현 ✅

  • 무엇: 모든 LLM 호출을 날짜별 JSONL로 기록 (~/.openclaw/logs/llm/YYYYMMDD.jsonl)
  • 수정 파일: shared/llm.py_log_call() 함수 + 3개 호출 함수에 계측 삽입
  • 기록 항목: 타임스탬프, 모델, 프롬프트/응답 크기, 레이턴시(ms), 성공여부, 에러, 프리뷰
  • 분석 함수: llm_log_summary("20260317") → 모델별 통계 즉시 조회
  • 의사결정 근거: 디버깅 시 "어떤 모델이 언제 실패했는지" 추적 불가했음. JSONL이면 grep만으로 원인 파악

5. Evals 자동 채점 구현 ✅

  • 무엇: LLM-as-judge로 파이프라인 출력물 품질 자동 평가 (eval_pipeline_quality.py)
  • 평가 기준: completeness, accuracy, atomicity, actionability, metadata (각 0.0~1.0)
  • 테스트 결과 (샘플 5개):
  • 260317_arxiv.md: 0.62 — 여러 논문 혼합, 원자성 낮음
  • 260317_x.md: 0.45 — 트윗 집계, 중복/중단 많음
  • 260317_pop_09fdc3_ref.md: 0.70 — 공시 핵심은 있으나 상세 부족
  • 의사결정 근거: 파이프라인이 "돌아가긴 하는데 결과물이 좋은지"를 정량적으로 모름. 자동 채점으로 품질 추이 관리

6. 세션 로그 구조 구축 ✅ (이 파일)

  • 무엇: 대화 세션의 작업·의사결정·피드백을 Vault에 축적하는 구조
  • 의사결정 근거: 크론 cowork-log는 자동 인프라 점검용. 대화 세션의 "왜 그렇게 결정했는지"가 기록 안 됨

수치 요약

지표
LLM 호출 수 7건
성공률 100%
Sonnet 평균 레이턴시 1,314ms
GPT-mini 평균 레이턴시 8,525ms
수정 파일 수 2개 (llm.py, eval_pipeline_quality.py 신규)
신규 인프라 2개 (launchd plist, 로그 디렉토리)

미해결 / 다음 세션 과제

  • [ ] Gemini CLI 추가 연동 (CLIProxyAPI 지원, 무료 모델 추가 가능)
  • [ ] Evals를 크론에 연결 (매일 자동 품질 리포트)
  • [ ] twitter-collector timeout 미해결 (이전 세션부터)
  • [ ] Financial Datasets API 모듈 구현 (필요 시)
  • [ ] simplify 스킬 적용 여부 결정
  • [ ] 품질 미달 노트(0.6 미만) 자동 개선 파이프라인 검토

피드백 & 반성

  • Dexter 비교 시 첫 답변이 표면적이었음 → 사용자가 "체계적으로" 요청 → 아키텍처 레벨까지 깊이 분석하니 실제 도입 가능 요소가 명확해짐
  • 교훈: 외부 도구/프로젝트 비교 시 "우리가 더 낫다"로 끝내지 말고, 구체적으로 뭘 배울 수 있는지 코드 레벨로 파고들어야 함

추가 세션 — 20:59

세션 로그 — 2026-03-17

완료 작업

  1. [20:58] CLIProxyAPI E2E 테스트 — Haiku/Sonnet 모두 정상, 폴백 체인 검증 완료
  2. [20:58] CLIProxyAPI launchd 자동시작 설정 (nohup → launchd 전환)
  3. [20:58] Dexter vs OpenClaw 체계적 비교 분석 — 도입 불필요 판정
  4. [20:58] JSONL 호출 로깅 구현 — llm.py 3개 함수에 계측 삽입
  5. [20:58] Evals 자동 채점 구현 — eval_pipeline_quality.py 신규 생성
  6. [20:58] 세션 로그 시스템 구축 — session_logger.py + Vault 세션로그 폴더

의사결정 로그

  • 20:58: Dexter 전체 도입 불필요 — JSONL 로깅과 Evals만 체리픽. 기존 아키텍처 유지하면서 좋은 부분만 흡수
  • 20:58: CLIProxyAPI를 nohup에서 launchd로 전환 — 재부팅 대응 + 자동 복구
  • 20:58: JSONL 로깅은 실패해도 메인 로직 죽이면 안됨 — try/except + pass 패턴

수정/생성 파일

  • scripts/shared/llm.py
  • scripts/eval_pipeline_quality.py
  • scripts/session_logger.py
  • ~/Library/LaunchAgents/com.openclaw.cliproxyapi.plist

LLM 호출 통계

지표
총 호출 7건
성공률 100%
프롬프트 총량 15,562자
응답 총량 1,230자
에러 수 0건

모델별 상세

모델 호출 성공률 평균 레이턴시
cliproxy/claude-sonnet-4-6 1 100% 1,314ms
github-copilot/gpt-5-mini 6 100% 8,525ms

품질 평가 (Evals)

  • 평가 노트: 1개
  • 평균 품질: 0.66
  • completeness: 0.60
  • accuracy: 0.70
  • atomicity: 0.60
  • actionability: 0.50
  • metadata: 0.90

메모

  • Evals 샘플 결과: arxiv 0.62, x 0.45 — 집계형 노트의 원자성 문제가 체계적. 수집 파이프라인에서 원자화 단계 개선 필요