Skip to content

rootTiket/claude-analytics

Repository files navigation

Claude CLI Analytics Dashboard

Claude CLI λŒ€ν™” 둜그λ₯Ό λΆ„μ„ν•˜μ—¬ 토큰 νš¨μœ¨μ„±, μΊμ‹œ ν™œμš©λ₯ , μ»¨ν…μŠ€νŠΈ μ‚¬μš© νŒ¨ν„΄μ„ μ‹œκ°ν™”ν•˜λŠ” λŒ€μ‹œλ³΄λ“œ

✨ Features

  • πŸ“Š Dashboard: Anthropic μŠ€ν‚¬ 평가 ν”„λ ˆμž„μ›Œν¬ 기반 μ§€ν‘œ, 토큰 뢄포, νŠΈλ Œλ“œ 차트
  • πŸ“ Session Detail: μ„Έμ…˜λ³„ λŒ€ν™” νƒ€μž„λΌμΈ, 도ꡬ μ‚¬μš© λ‚΄μ—­, 6μΉ΄ν…Œκ³ λ¦¬ μ§€ν‘œ νŒ¨λ„
  • πŸ’¬ λŒ€ν™”ν˜• 도ꡬ ν‘œμ‹œ: AskUserQuestion λ“± λŒ€ν™”ν˜• λ„κ΅¬μ˜ Q&A λ‚΄μš©μ„ μΉ΄λ“œλ‘œ ν‘œμ‹œ
  • πŸ”„ Real-time Refresh: μƒˆλ‘œκ³ μΉ¨ λ²„νŠΌμœΌλ‘œ μ΅œμ‹  데이터 λ‘œλ“œ
  • πŸ† Engineering Grade: S/A/B/C λ“±κΈ‰ + SEI (Spec Efficiency Index) 뢄석
  • πŸ” Auto-detection: .claude/projects 경둜 μžλ™ 탐색 β€” init λΆˆν•„μš”
  • πŸ“¦ NPM νŒ¨ν‚€μ§€: npm install -g둜 μ–΄λ””μ„œλ“  μ„€μΉ˜ κ°€λŠ₯

πŸš€ μ„€μΉ˜ 및 μ‹€ν–‰

βœ… NPM (ꢌμž₯)

# κΈ€λ‘œλ²Œ μ„€μΉ˜
npm install -g claude-cli-analytics

# μ‹€ν–‰ (μžλ™μœΌλ‘œ ~/.claude/projects 탐색)
claude-cli-analytics

πŸ“¦ npx (μ„€μΉ˜ 없이 μ‹€ν–‰)

npx claude-cli-analytics

πŸ› οΈ μ†ŒμŠ€μ—μ„œ λΉŒλ“œ (κΈ°μ—¬μš©)

git clone https://github.com/rootTiket/claude-analytics.git
cd claude-analytics
npm install
npm run build
npm start

# λ˜λŠ” κΈ€λ‘œλ²Œλ‘œ λ§ν¬ν•˜μ—¬ μ‚¬μš©
npm link
claude-cli-analytics

⚑ 개발 λͺ¨λ“œ

npm run dev

πŸ› οΈ Requirements

  • Node.js 20+
  • npm 9+

πŸš€ μ‚¬μš©λ²•

λŒ€μ‹œλ³΄λ“œ μ‹œμž‘

기본적으둜 λ°±κ·ΈλΌμš΄λ“œ λͺ¨λ“œλ‘œ μ‹€ν–‰λ©λ‹ˆλ‹€:

claude-cli-analytics

λΈŒλΌμš°μ €μ—μ„œ http://localhost:3001이 μžλ™μœΌλ‘œ 열리며, μ„œλ²„λŠ” λ°±κ·ΈλΌμš΄λ“œμ—μ„œ μ‹€ν–‰λ©λ‹ˆλ‹€.

λŒ€μ‹œλ³΄λ“œ 쀑지

λ°±κ·ΈλΌμš΄λ“œ ν”„λ‘œμ„ΈμŠ€λ₯Ό μ€‘μ§€ν•©λ‹ˆλ‹€:

claude-cli-analytics exit

μƒνƒœ 확인

λŒ€μ‹œλ³΄λ“œ μ‹€ν–‰ μ—¬λΆ€λ₯Ό ν™•μΈν•©λ‹ˆλ‹€:

claude-cli-analytics status

μ˜΅μ…˜

claude-cli-analytics --port 8080     # μ»€μŠ€ν…€ 포트둜 μ‹€ν–‰
claude-cli-analytics --path /foo     # μ»€μŠ€ν…€ ν”„λ‘œμ νŠΈ 디렉토리
claude-cli-analytics --foreground    # ν¬κ·ΈλΌμš΄λ“œ μ‹€ν–‰ (Ctrl+C둜 쀑지)
claude-cli-analytics --help          # 도움말 ν‘œμ‹œ

πŸ” .claude 경둜 μžλ™ 탐색

λ³„λ„μ˜ init 과정이 ν•„μš” μ—†μŠ΅λ‹ˆλ‹€. μ„œλ²„ μ‹œμž‘ μ‹œ μžλ™μœΌλ‘œ Claude Code의 데이터 디렉토리λ₯Ό νƒμƒ‰ν•©λ‹ˆλ‹€.

Claude CodeλŠ” μ„€μΉ˜ 방법에 관계없이 항상 ~/.claude/projects에 μ„Έμ…˜ 데이터λ₯Ό μ €μž₯ν•©λ‹ˆλ‹€:

μ„€μΉ˜ 방법 데이터 경둜
brew install --cask claude-code ~/.claude/projects
npm install -g @anthropic-ai/claude-code ~/.claude/projects
직접 λ‹€μš΄λ‘œλ“œ ~/.claude/projects

경둜 탐색 μš°μ„ μˆœμœ„

  1. CLAUDE_PROJECTS_DIR ν™˜κ²½λ³€μˆ˜ (μ΅œμš°μ„ )
  2. μ €μž₯된 μ„€μ • 파일 (~/.claude-analytics/config.json)
  3. μžλ™ 탐색 (~/.claude/projects, $XDG_CONFIG_HOME/claude/projects)
  4. 기본 경둜 (~/.claude/projects)

μ»€μŠ€ν…€ 경둜 μ‚¬μš©

# ν™˜κ²½λ³€μˆ˜λ‘œ μ§€μ •
CLAUDE_PROJECTS_DIR=/path/to/claude/projects claude-cli-analytics

πŸ“ˆ 뢄석 μ§€ν‘œ (Anthropic Skill Evaluation Framework)

Anthropic의 곡식 μŠ€ν‚¬ 평가 ν”„λ ˆμž„μ›Œν¬λ₯Ό 기반으둜 κ΅¬μ„±λœ μ§€ν‘œμž…λ‹ˆλ‹€.


πŸ“Š μ •λŸ‰μ  μ§€ν‘œ (Quantitative Metrics)

1. μ»¨ν…μŠ€νŠΈ μžλ™ 탐색 성곡λ₯  (Skill Trigger Rate)

Anthropic κΈ°μ€€: κ΄€λ ¨ 쿼리의 90%μ—μ„œ μŠ€ν‚¬μ΄ 트리거됨

μ§€ν‘œ 계산 방식 λͺ©ν‘œ 의미
μΊμ‹œ 히트율 cache_read / (input + cache_read) Γ— 100 β‰₯ 70% μŠ€ν‚¬(μ»¨ν…μŠ€νŠΈ)이 μžλ™μœΌλ‘œ λ‘œλ“œλœ λΉ„μœ¨
μŠ€νŽ™ μ»¨ν…μŠ€νŠΈ ν™œμš©λ₯  spec 파일 읽은 μ„Έμ…˜ / 전체 μ„Έμ…˜ Γ— 100 β‰₯ 90% .claude/ μŠ€νŽ™μ΄ μžλ™ 트리거된 λΉ„μœ¨
μœ„ν—˜ 레벨 λͺ¨λΈλ³„ λΉ„μš© 가쀑 avgContext Γ— costMultiplier 졜적 μ»¨ν…μŠ€νŠΈ κ³ΌλΆ€ν•˜ κ²½κ³  (λͺ¨λΈλ³„ κΈ°μ€€ 상이)

μΈ‘μ • 방법: μ„Έμ…˜λ³„ μΊμ‹œ 히트 λΉ„μœ¨κ³Ό μŠ€νŽ™ μ»¨ν…μŠ€νŠΈ λ‘œλ“œ λΉ„μœ¨μ„ μžλ™ μΆ”μ ν•©λ‹ˆλ‹€.

2. 도ꡬ 호좜 νš¨μœ¨μ„± (Tool Call Efficiency)

Anthropic κΈ°μ€€: X도ꡬ 호좜둜 μ›Œν¬ν”Œλ‘œμš° μ™„λ£Œ

μ§€ν‘œ 계산 방식 λͺ©ν‘œ 의미
Read/Edit λΉ„μœ¨ Read도ꡬ 횟수 / Edit도ꡬ 횟수 β‰₯ 5:1 μˆ˜μ • μ „ μΆ©λΆ„ν•œ 탐색 μ—¬λΆ€
μˆ˜μ •λ‹Ή 토큰 총 μ»¨ν…μŠ€νŠΈ / Edit 횟수 < 50K μˆ˜μ • 1νšŒλ‹Ή μ†ŒλΉ„λœ 토큰
쀑볡 읽기율 (전체읽기 - 고유파일) / 전체읽기 Γ— 100 < 20% λΆˆν•„μš”ν•œ 반볡 읽기 λΉ„μœ¨
반볡 μˆ˜μ •μœ¨ (μ „μ²΄μˆ˜μ • - 고유파일) / μ „μ²΄μˆ˜μ • Γ— 100 < 20% 같은 파일 반볡 μˆ˜μ • λΉ„μœ¨

μΈ‘μ • 방법: μŠ€ν‚¬(μŠ€νŽ™ μ»¨ν…μŠ€νŠΈ) ν™œμ„±ν™” μ „ν›„ 동일 μž‘μ—…μ„ λΉ„κ΅ν•˜μ—¬ 도ꡬ 호좜 νšŸμˆ˜μ™€ 총 토큰 μ†ŒλΉ„λŸ‰μ„ μ§‘κ³„ν•©λ‹ˆλ‹€.

3. API μ‹€νŒ¨μœ¨ (Failed API Calls per Workflow)

Anthropic κΈ°μ€€: μ›Œν¬ν”Œλ‘œλ‹Ή μ‹€νŒ¨ν•œ API 호좜 0회

μ§€ν‘œ 계산 방식 λͺ©ν‘œ 의미
도ꡬ 였λ₯˜μœ¨ 였λ₯˜ 도ꡬ 호좜 / 전체 도ꡬ 호좜 Γ— 100 0% μ‹€νŒ¨ν•œ 도ꡬ 호좜 λΉ„μœ¨
였λ₯˜ 상세 도ꡬ별 였λ₯˜ λ©”μ‹œμ§€ 및 λΉˆλ„ 집계 β€” μž¬μ‹œλ„μœ¨ 및 였λ₯˜ μ½”λ“œ 좔적
μ„Έμ…˜ μ’…λ£Œ μœ ν˜• clean / forced / unknown clean 비정상 μ’…λ£Œ μ—¬λΆ€

μΈ‘μ • 방법: ν…ŒμŠ€νŠΈ μ‹€ν–‰ 쀑 도ꡬ 호좜 둜그λ₯Ό λͺ¨λ‹ˆν„°λ§ν•˜λ©°, μž¬μ‹œλ„μœ¨ 및 였λ₯˜ μ½”λ“œλ₯Ό μΆ”μ ν•©λ‹ˆλ‹€.


🎯 정성적 μ§€ν‘œ (Qualitative Metrics)

4. μ‚¬μš©μž κ°œμž… 효율 (User Intervention Efficiency)

Anthropic κΈ°μ€€: μˆ™λ ¨λœ μ‚¬μš©μžλŠ” "λŠ₯동적 λͺ¨λ‹ˆν„°λ§" μ „λž΅μ„ μ·¨ν•˜λ―€λ‘œ, λ‹¨μˆœ κ°œμž… νšŸμˆ˜λ³΄λ‹€ νŽΈμ§‘ λŒ€λΉ„ κ°œμž… λΉ„μœ¨(HT/E)이 μ€‘μš”ν•¨

μ§€ν‘œ 계산 방식 λͺ©ν‘œ 의미
HT/E Human Turns / Edit 횟수 < 1.0 μ½”λ“œ μˆ˜μ • 1νšŒλ‹Ή 인간 κ°λ…μ˜ "μ„ΈκΈˆ"
HT/E κ°œμ„ μœ¨ (1 - HTE_spec / HTE_nospec) Γ— 100 μ–‘μˆ˜ Spec λ„μž…μœΌλ‘œ μΈν•œ 감독 κ°μ†Œ 효과
자율 μ‹€ν–‰λ₯  Auto Turns / (Auto + Human) Γ— 100 β‰₯ 60% μ‚¬μš©μž κ°œμž… 없이 μ§„ν–‰λœ λΉ„μœ¨

μΈ‘μ • 방법: Spec μœ λ¬΄λ³„ HT/Eλ₯Ό μžλ™ κ³„μ‚°ν•˜μ—¬, Spec λ„μž…μ΄ 인간 감독 뢀담을 μ‹€μ œλ‘œ μ€„μ΄λŠ”μ§€ μ •λŸ‰ν™”ν•©λ‹ˆλ‹€.

5. μ›Œν¬ν”Œλ‘œμš° 자립 μ™„λ£Œμœ¨ (Workflow Autonomy)

Anthropic κΈ°μ€€: SEI(Spec Efficiency Index)와 P99 자율 μ‹€ν–‰ μ‹œκ°„μ΄ μ—μ΄μ „νŠΈμ˜ μžμœ¨μ„± ν•œκ³„λ₯Ό λ³΄μ—¬μ£ΌλŠ” 핡심 μ§€ν‘œ

μ§€ν‘œ 계산 방식 λͺ©ν‘œ 의미
SEI (Accuracy Γ— 100) / log₁₀(CacheRead + 1) β‰₯ 25 (Elite) Spec λ¬Έμ„œμ˜ μ‹€νš¨μ„± μ§€μˆ˜
P99 자율 μ‹€ν–‰ μ‹œκ°„ μ„Έμ…˜ μ‹œκ°„μ˜ 99th percentile (λΆ„) 증가 μΆ”μ„Έ μ—μ΄μ „νŠΈμ—κ²Œ λ§‘κΈ°λŠ” 졜μž₯ 자율 μ‹€ν–‰ μ‹œκ°„
νš¨μœ¨μ„± 점수 μΊμ‹œΒ·μ˜€λ₯˜Β·μž‘μ—… νš¨μœ¨Β·λΉ„μš© μ’…ν•© (100점) β‰₯ 80 μ›Œν¬ν”Œλ‘œμš° 자립 완성도

μΈ‘μ • 방법: Spec μœ λ¬΄λ³„ SEI와 P99 자율 μ‹€ν–‰ μ‹œκ°„μ„ λΉ„κ΅ν•˜μ—¬, Spec이 μ—μ΄μ „νŠΈμ˜ 자율적 μž‘μ—… λŠ₯λ ₯을 μ–Όλ§ˆλ‚˜ ν–₯μƒμ‹œν‚€λŠ”μ§€ μΆ”μ ν•©λ‹ˆλ‹€. 평균 μ„Έμ…˜ μ‹œκ°„ λŒ€μ‹  99th percentile tail-endλ₯Ό μΆ”μ ν•˜λŠ” 것이 Anthropic의 ꢌμž₯ λ°©λ²•μž…λ‹ˆλ‹€.

6. μ„Έμ…˜ κ°„ 일관성 (Cross-Session Consistency)

Anthropic κΈ°μ€€: μ„Έμ…˜ κ°„ μΌκ΄€λœ κ²°κ³Ό

μ§€ν‘œ 계산 방식 λͺ©ν‘œ 의미
Engineering Grade Efficiency(40%) + Stability(30%) + Precision(30%) - Penalty SκΈ‰ μ„Έμ…˜λ³„ ν’ˆμ§ˆ λ“±κΈ‰ 일관성
λ“±κΈ‰ 뢄포 S/A/B/C μ„Έμ…˜ λΉ„μœ¨ SΒ·A β‰₯ 80% 전체 μ„Έμ…˜μ˜ ν’ˆμ§ˆ 편차
Spec μžμœ¨μ„± 효과 Spec μœ λ¬΄λ³„ HT/E Β· SEI Β· P99 비ꡐ β€” Spec λ„μž… 효과의 μ •λŸ‰μ  μž…μ¦

μΈ‘μ • 방법: μ‹ κ·œ μ‚¬μš©μžκ°€ μ΅œμ†Œν•œμ˜ μ•ˆλ‚΄λ§ŒμœΌλ‘œ 첫 μ‹œλ„μ—μ„œ μž‘μ—…μ„ μ™„λ£Œν•  수 μžˆλŠ”μ§€ ν‰κ°€ν•©λ‹ˆλ‹€.

πŸ† SκΈ‰ (90+): Elite β€” μ΅œμ ν™”λœ μ›Œν¬ν”Œλ‘œμš°, μΌκ΄€λœ κ³ ν’ˆμ§ˆ
⭐ AκΈ‰ (80+): Good β€” μš°μˆ˜ν•œ νš¨μœ¨μ„±, μ•ˆμ •μ  κ²°κ³Ό
βœ… BκΈ‰ (60+): Average β€” κ°œμ„  μ—¬μ§€ 있음, μ„Έμ…˜ κ°„ 편차 쑴재
⚠️ CκΈ‰ (40+): Below Average β€” μ΅œμ ν™” ν•„μš”, 일관성 λΆ€μ‘±

πŸ”§ API Endpoints

Endpoint Method Description
/api/analytics GET 전체 μš”μ•½ 톡계
/api/sessions GET μ„Έμ…˜ λͺ©λ‘ (SEI + Grade 포함)
/api/sessions/:id GET μ„Έμ…˜ 상세 (λ©”μ‹œμ§€, 토큰, 파일)
/api/projects GET ν”„λ‘œμ νŠΈ λͺ©λ‘
/api/config GET ν˜„μž¬ μ„€μ • + μžλ™ 탐색 κ²°κ³Ό
/api/config POST ν”„λ‘œμ νŠΈ 경둜 μ„€μ • μ €μž₯
/api/health GET μ„œλ²„ μƒνƒœ 확인
/api/refresh POST 데이터 μƒˆλ‘œκ³ μΉ¨

πŸ“ Project Structure

claude-cli-analytics/
β”œβ”€β”€ src/                          # React Frontend
β”‚   β”œβ”€β”€ pages/
β”‚   β”‚   β”œβ”€β”€ Dashboard.tsx         # 메인 λŒ€μ‹œλ³΄λ“œ
β”‚   β”‚   β”œβ”€β”€ SessionDetail.tsx     # μ„Έμ…˜ 상세 νŽ˜μ΄μ§€
β”‚   β”‚   └── Setup.tsx             # 초기 μ„€μ • νŽ˜μ΄μ§€
β”‚   β”œβ”€β”€ components/
β”‚   β”‚   β”œβ”€β”€ InfoTooltip.tsx       # 정보 툴팁
β”‚   β”‚   └── badges/
β”‚   β”‚       β”œβ”€β”€ GradeBadge.tsx    # λ“±κΈ‰ λ°°μ§€
β”‚   β”‚       └── DangerBadge.tsx   # μœ„ν—˜λ„ λ°°μ§€
β”‚   β”œβ”€β”€ types/
β”‚   β”‚   └── index.ts              # ν”„λ‘ νŠΈμ—”λ“œ νƒ€μž… μ •μ˜
β”‚   β”œβ”€β”€ utils/
β”‚   β”‚   β”œβ”€β”€ constants.ts          # 도ꡬ μ•„μ΄μ½˜ λ“± μƒμˆ˜
β”‚   β”‚   └── format.ts             # 포맷 μœ ν‹Έλ¦¬ν‹°
β”‚   β”œβ”€β”€ App.tsx                   # λΌμš°νŒ…
β”‚   └── index.css                 # Tailwind CSS
β”œβ”€β”€ server/
β”‚   β”œβ”€β”€ index.ts                  # Express API μ„œλ²„
β”‚   β”œβ”€β”€ config.ts                 # μ„€μ • + μžλ™ 탐색
β”‚   β”œβ”€β”€ analyzer.ts               # μ„Έμ…˜ 뢄석 둜직
β”‚   β”œβ”€β”€ parser.ts                 # JSONL νŒŒμ„œ
β”‚   └── types.ts                  # μ„œλ²„ νƒ€μž… μ •μ˜
β”œβ”€β”€ bin/
β”‚   β”œβ”€β”€ cli.cjs                   # CLI μ§„μž…μ  (--port, --path, --help)
β”‚   └── sanity.mjs                # μ„€μΉ˜ 검증 슀크립트
β”œβ”€β”€ dist/
β”‚   β”œβ”€β”€ client/                   # λΉŒλ“œλœ ν”„λ‘ νŠΈμ—”λ“œ
β”‚   └── server/                   # λΉŒλ“œλœ λ°±μ—”λ“œ
β”œβ”€β”€ package.json
β”œβ”€β”€ tsconfig.server.json          # μ„œλ²„ λΉŒλ“œ μ„€μ •
└── vite.config.ts

πŸ“„ License

MIT

About

No description, website, or topics provided.

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors