Claude CLI λν λ‘κ·Έλ₯Ό λΆμνμ¬ ν ν° ν¨μ¨μ±, μΊμ νμ©λ₯ , 컨ν μ€νΈ μ¬μ© ν¨ν΄μ μκ°ννλ λμ보λ
- π 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 install -g claude-cli-analytics
# μ€ν (μλμΌλ‘ ~/.claude/projects νμ)
claude-cli-analyticsnpx claude-cli-analyticsgit clone https://github.com/rootTiket/claude-analytics.git
cd claude-analytics
npm install
npm run build
npm start
# λλ κΈλ‘λ²λ‘ λ§ν¬νμ¬ μ¬μ©
npm link
claude-cli-analyticsnpm run dev- Frontend: http://localhost:3000
- Backend API: http://localhost:3001
- Node.js 20+
- npm 9+
κΈ°λ³Έμ μΌλ‘ λ°±κ·ΈλΌμ΄λ λͺ¨λλ‘ μ€νλ©λλ€:
claude-cli-analyticsλΈλΌμ°μ μμ http://localhost:3001μ΄ μλμΌλ‘ μ΄λ¦¬λ©°, μλ²λ λ°±κ·ΈλΌμ΄λμμ μ€νλ©λλ€.
λ°±κ·ΈλΌμ΄λ νλ‘μΈμ€λ₯Ό μ€μ§ν©λλ€:
claude-cli-analytics exitλμ보λ μ€ν μ¬λΆλ₯Ό νμΈν©λλ€:
claude-cli-analytics statusclaude-cli-analytics --port 8080 # 컀μ€ν
ν¬νΈλ‘ μ€ν
claude-cli-analytics --path /foo # 컀μ€ν
νλ‘μ νΈ λλ ν 리
claude-cli-analytics --foreground # ν¬κ·ΈλΌμ΄λ μ€ν (Ctrl+Cλ‘ μ€μ§)
claude-cli-analytics --help # λμλ§ νμλ³λμ 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 |
CLAUDE_PROJECTS_DIRνκ²½λ³μ (μ΅μ°μ )- μ μ₯λ μ€μ νμΌ (
~/.claude-analytics/config.json) - μλ νμ (
~/.claude/projects,$XDG_CONFIG_HOME/claude/projects) - κΈ°λ³Έ κ²½λ‘ (
~/.claude/projects)
# νκ²½λ³μλ‘ μ§μ
CLAUDE_PROJECTS_DIR=/path/to/claude/projects claude-cli-analyticsAnthropicμ 곡μ μ€ν¬ νκ° νλ μμν¬λ₯Ό κΈ°λ°μΌλ‘ ꡬμ±λ μ§νμ λλ€.
Anthropic κΈ°μ€: κ΄λ ¨ 쿼리μ 90%μμ μ€ν¬μ΄ νΈλ¦¬κ±°λ¨
| μ§ν | κ³μ° λ°©μ | λͺ©ν | μλ―Έ |
|---|---|---|---|
| μΊμ ννΈμ¨ | cache_read / (input + cache_read) Γ 100 |
β₯ 70% | μ€ν¬(컨ν μ€νΈ)μ΄ μλμΌλ‘ λ‘λλ λΉμ¨ |
| μ€ν 컨ν μ€νΈ νμ©λ₯ | spec νμΌ μ½μ μΈμ
/ μ 체 μΈμ
Γ 100 |
β₯ 90% | .claude/ μ€νμ΄ μλ νΈλ¦¬κ±°λ λΉμ¨ |
| μν λ 벨 | λͺ¨λΈλ³ λΉμ© κ°μ€ avgContext Γ costMultiplier |
μ΅μ | 컨ν μ€νΈ κ³ΌλΆν κ²½κ³ (λͺ¨λΈλ³ κΈ°μ€ μμ΄) |
μΈ‘μ λ°©λ²: μΈμ λ³ μΊμ ννΈ λΉμ¨κ³Ό μ€ν 컨ν μ€νΈ λ‘λ λΉμ¨μ μλ μΆμ ν©λλ€.
Anthropic κΈ°μ€: Xλꡬ νΈμΆλ‘ μν¬νλ‘μ° μλ£
| μ§ν | κ³μ° λ°©μ | λͺ©ν | μλ―Έ |
|---|---|---|---|
| Read/Edit λΉμ¨ | Readλꡬ νμ / Editλꡬ νμ |
β₯ 5:1 | μμ μ μΆ©λΆν νμ μ¬λΆ |
| μμ λΉ ν ν° | μ΄ μ»¨ν
μ€νΈ / Edit νμ |
< 50K | μμ 1νλΉ μλΉλ ν ν° |
| μ€λ³΅ μ½κΈ°μ¨ | (μ 체μ½κΈ° - κ³ μ νμΌ) / μ 체μ½κΈ° Γ 100 |
< 20% | λΆνμν λ°λ³΅ μ½κΈ° λΉμ¨ |
| λ°λ³΅ μμ μ¨ | (μ 체μμ - κ³ μ νμΌ) / μ 체μμ Γ 100 |
< 20% | κ°μ νμΌ λ°λ³΅ μμ λΉμ¨ |
μΈ‘μ λ°©λ²: μ€ν¬(μ€ν 컨ν μ€νΈ) νμ±ν μ ν λμΌ μμ μ λΉκ΅νμ¬ λꡬ νΈμΆ νμμ μ΄ ν ν° μλΉλμ μ§κ³ν©λλ€.
Anthropic κΈ°μ€: μν¬νλ‘λΉ μ€ν¨ν API νΈμΆ 0ν
| μ§ν | κ³μ° λ°©μ | λͺ©ν | μλ―Έ |
|---|---|---|---|
| λꡬ μ€λ₯μ¨ | μ€λ₯ λꡬ νΈμΆ / μ 체 λꡬ νΈμΆ Γ 100 |
0% | μ€ν¨ν λꡬ νΈμΆ λΉμ¨ |
| μ€λ₯ μμΈ | λκ΅¬λ³ μ€λ₯ λ©μμ§ λ° λΉλ μ§κ³ | β | μ¬μλμ¨ λ° μ€λ₯ μ½λ μΆμ |
| μΈμ μ’ λ£ μ ν | clean / forced / unknown |
clean | λΉμ μ μ’ λ£ μ¬λΆ |
μΈ‘μ λ°©λ²: ν μ€νΈ μ€ν μ€ λꡬ νΈμΆ λ‘κ·Έλ₯Ό λͺ¨λν°λ§νλ©°, μ¬μλμ¨ λ° μ€λ₯ μ½λλ₯Ό μΆμ ν©λλ€.
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 λμ μ΄ μΈκ° κ°λ λΆλ΄μ μ€μ λ‘ μ€μ΄λμ§ μ λνν©λλ€.
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μ κΆμ₯ λ°©λ²μ λλ€.
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 β μ΅μ ν νμ, μΌκ΄μ± λΆμ‘±
| 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 | λ°μ΄ν° μλ‘κ³ μΉ¨ |
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
MIT