세션 로그 — 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
완료 작업
- [20:58] CLIProxyAPI E2E 테스트 — Haiku/Sonnet 모두 정상, 폴백 체인 검증 완료
- [20:58] CLIProxyAPI launchd 자동시작 설정 (nohup → launchd 전환)
- [20:58] Dexter vs OpenClaw 체계적 비교 분석 — 도입 불필요 판정
- [20:58] JSONL 호출 로깅 구현 — llm.py 3개 함수에 계측 삽입
- [20:58] Evals 자동 채점 구현 — eval_pipeline_quality.py 신규 생성
- [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 — 집계형 노트의 원자성 문제가 체계적. 수집 파이프라인에서 원자화 단계 개선 필요