history-insight

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

History Insight

History Insight

Claude Code 세션 히스토리를 분석하고 인사이트를 추출합니다.

分析Claude Code会话历史并提取洞察。

Data Location

数据位置

~/.claude/projects/<encoded-cwd>/*.jsonl
Path Encoding:
/Users/foo/project
-Users-foo-project
상세 파일 포맷:
${baseDir}/references/session-file-format.md

~/.claude/projects/<encoded-cwd>/*.jsonl
路径编码:
/Users/foo/project
-Users-foo-project
详细文件格式:
${baseDir}/references/session-file-format.md

Execution Algorithm

执行算法

Step 1: Ask Scope [MANDATORY]

步骤1:确认范围 [必填]

스코프 결정:
  1. 명시된 경우 (AskUserQuestion 생략 가능):
    • "현재 프로젝트만" / "이 프로젝트" →
      current_project
    • "모든 세션" / "전체" →
      all_sessions
  2. 명시되지 않은 경우 - AskUserQuestion 호출:
    question: "세션 검색 범위를 선택하세요"
    options:
      - "현재 프로젝트만" → ~/.claude/projects/<encoded-cwd>/*.jsonl
      - "모든 Claude Code 세션" → ~/.claude/projects/**/*.jsonl

确定范围:
  1. 若已明确指定(可跳过AskUserQuestion):
    • "仅当前项目" / "此项目" →
      current_project
    • "所有会话" / "全部" →
      all_sessions
  2. 若未明确指定 - 调用AskUserQuestion:
    question: "请选择会话搜索范围"
    options:
      - "仅当前项目" → ~/.claude/projects/<encoded-cwd>/*.jsonl
      - "所有Claude Code会话" → ~/.claude/projects/**/*.jsonl

Step 2: Find Session Files

步骤2:查找会话文件

bash
undefined
bash
undefined

Current project only

仅当前项目

find ~/.claude/projects/<encoded-cwd> -name "*.jsonl" -type f
find ~/.claude/projects/<encoded-cwd> -name "*.jsonl" -type f

All sessions (모든 프로젝트)

所有会话(全部项目)

find ~/.claude/projects -name "*.jsonl" -type f

**날짜 필터링**: 파일의 mtime(수정시간) 확인 후 필터. OS별 `stat` 옵션 다름:
- macOS: `stat -f "%Sm" -t "%Y-%m-%d" <file>`
- Linux: `stat -c "%y" <file>`

---
find ~/.claude/projects -name "*.jsonl" -type f

**日期过滤:** 检查文件的mtime(修改时间)后进行过滤。不同OS的`stat`选项不同:
- macOS: `stat -f "%Sm" -t "%Y-%m-%d" <file>`
- Linux: `stat -c "%y" <file>`

---

Step 3: Process Sessions

步骤3:处理会话

Decision Tree

决策树

Session files found?
├─ No → Error: "No sessions found"
└─ Yes → How many files?
    ├─ 1-3 files → Direct Read + parse
    └─ 4+ files → Batch Extract Pipeline
找到会话文件?
├─ 否 → 错误:"未找到会话"
└─ 是 → 文件数量有多少?
    ├─ 1-3个文件 → 直接读取并解析
    └─ 4个及以上文件 → 批量提取流程

1-3 Files

1-3个文件

직접 Read로 JSONL 파싱. 파일이 크면(≥5000 tokens)
extract-session.sh
사용:
bash
${baseDir}/scripts/extract-session.sh <session.jsonl>
直接读取并解析JSONL。若文件过大(≥5000 tokens),请使用
extract-session.sh
bash
${baseDir}/scripts/extract-session.sh <session.jsonl>

4+ Files: Batch Extract Pipeline

4个及以上文件:批量提取流程

  1. 캐시 디렉토리 생성 (
    /tmp/cc-cache/<analysis-name>/
    )
  2. 세션 목록 저장 (
    sessions.txt
    )
  3. jq로 메시지 일괄 추출 (
    user_messages.txt
    )
  4. 정리 및 필터링 (
    clean_messages.txt
    )
  5. Task(opus)로 종합 분석
  1. 创建缓存目录 (
    /tmp/cc-cache/<analysis-name>/
    )
  2. 保存会话列表 (
    sessions.txt
    )
  3. 使用jq批量提取消息 (
    user_messages.txt
    )
  4. 整理及过滤 (
    clean_messages.txt
    )
  5. 使用Task(opus)进行综合分析

파일이 너무 클 때: 병렬 배치 분석

文件过大时:并行批量分析

clean_messages.txt
가 너무 커서 Read 실패 시:
  1. 파일 분할:
    bash
    split -l 2000 clean_messages.txt /tmp/cc-cache/<name>/batch_
  2. 병렬 Task(opus) 호출:
    Task(subagent_type="general-purpose", model="opus", run_in_background=true)
    prompt: "batch_XX 파일을 읽고 주제/패턴 요약해줘"
  3. 결과 병합: Task(opus)로 종합

clean_messages.txt
过大导致读取失败时:
  1. 文件分割:
    bash
    split -l 2000 clean_messages.txt /tmp/cc-cache/<name>/batch_
  2. 并行调用Task(opus):
    Task(subagent_type="general-purpose", model="opus", run_in_background=true)
    prompt: "读取batch_XX文件并总结主题/模式"
  3. 结果合并:使用Task(opus)进行综合

Step 4: Report Results

步骤4:报告结果

markdown
undefined
markdown
undefined

Session Capture Complete

会话捕获完成

  • Sessions: N files processed
  • Messages: X total, Y after filter
  • 会话: 已处理N个文件
  • 消息: 总计X条,过滤后Y条

Extracted Insights

提取的洞察

[분석 결과]

---
[分析结果]

---

Error Handling

错误处理

ScenarioResponse
No session files found"No session files found for this project."
File too largeAuto-preprocess with extract-session.sh
jq not installed"Error: jq is required. Install with: brew install jq"
Task failed"Warning: Could not process [file]. Skipping."
0 relevant sessions"No sessions matched your criteria."

场景响应
未找到会话文件"未找到此项目的会话文件。"
文件过大使用extract-session.sh自动预处理
未安装jq"错误:需要jq。请通过以下命令安装:brew install jq"
Task执行失败"警告:无法处理[文件]。将跳过该文件。"
0个相关会话"没有会话符合您的条件。"

Security Notes

安全注意事项

  • 출력에 전체 경로 노출 금지 (
    ~
    prefix 사용)

  • 禁止在输出中暴露完整路径(使用
    ~
    前缀)

Related Resources

相关资源

  • ${baseDir}/scripts/extract-session.sh
    - JSONL 압축 (thinking, tool_use 제거)
  • ${baseDir}/references/session-file-format.md
    - JSONL 구조 및 파싱
  • ${baseDir}/scripts/extract-session.sh
    - JSONL压缩(移除thinking、tool_use内容)
  • ${baseDir}/references/session-file-format.md
    - JSONL结构及解析