会话转录提取器 extract-transcripts

这是一个用于提取和转换 Claude Code 与 Codex CLI 会话记录的工具。它能将 JSONL 格式的会话文件转换为可读的 Markdown 转录文本,支持批量处理、索引搜索和会话管理。关键词:AI 会话转录、Claude Code 工具、Codex CLI 分析、会话记录提取、JSONL 转 Markdown、开发者工具、会话索引、DuckDB 查询。

DevOps 0 次安装 0 次浏览 更新于 2/23/2026

name: extract-transcripts description: 从 Claude Code 和 Codex CLI 会话 JSONL 文件中提取可读的转录文本

提取转录文本

从 Claude Code 和 Codex CLI 会话 JSONL 文件中提取可读的 Markdown 转录文本。

脚本

Claude Code 会话

# 提取单个会话
uv run ~/.claude/skills/extract-transcripts/extract_transcript.py <session.jsonl>

# 包含工具调用和思考块
uv run ~/.claude/skills/extract-transcripts/extract_transcript.py <session.jsonl> --include-tools --include-thinking

# 从目录中提取所有会话
uv run ~/.claude/skills/extract-transcripts/extract_transcript.py <directory> --all

# 输出到文件
uv run ~/.claude/skills/extract-transcripts/extract_transcript.py <session.jsonl> -o output.md

# 仅输出摘要(快速概览)
uv run ~/.claude/skills/extract-transcripts/extract_transcript.py <session.jsonl> --summary

# 跳过空/仅热身的会话
uv run ~/.claude/skills/extract-transcripts/extract_transcript.py <directory> --all --skip-empty

选项:

  • --include-tools:包含工具调用和结果
  • --include-thinking:包含 Claude 的思考块
  • --all:处理目录中的所有 .jsonl 文件
  • -o, --output:输出文件路径(默认:标准输出)
  • --summary:仅输出简要摘要
  • --skip-empty:跳过空和仅热身的会话
  • --min-messages N:–skip-empty 的最小消息数(默认:2)

Codex CLI 会话

# 提取 Codex 会话
uv run ~/.claude/skills/extract-transcripts/extract_codex_transcript.py <session.jsonl>

# 从 Codex 历史文件中提取
uv run ~/.claude/skills/extract-transcripts/extract_codex_transcript.py ~/.codex/history.jsonl --history

会话文件位置

Claude Code

  • 会话:~/.claude/projects/<project-path>/<session-id>.jsonl

Codex CLI

  • 会话:~/.codex/sessions/<session_id>/rollout.jsonl
  • 历史:~/.codex/history.jsonl

基于 DuckDB 的转录索引

用于跨多个会话查询,使用基于 DuckDB 的索引器:

# 索引所有会话(增量 - 仅新/更改的文件)
uv run ~/.claude/skills/extract-transcripts/transcript_index.py index

# 强制完全重新索引
uv run ~/.claude/skills/extract-transcripts/transcript_index.py index --full

# 限制要处理的文件数量
uv run ~/.claude/skills/extract-transcripts/transcript_index.py index --limit 10

# 列出最近的会话
uv run ~/.claude/skills/extract-transcripts/transcript_index.py recent
uv run ~/.claude/skills/extract-transcripts/transcript_index.py recent --limit 20
uv run ~/.claude/skills/extract-transcripts/transcript_index.py recent --project myapp
uv run ~/.claude/skills/extract-transcripts/transcript_index.py recent --since 7d

# 跨会话搜索
uv run ~/.claude/skills/extract-transcripts/transcript_index.py search "error handling"
uv run ~/.claude/skills/extract-transcripts/transcript_index.py search "query" --cwd ~/myproject

# 显示会话转录文本
uv run ~/.claude/skills/extract-transcripts/transcript_index.py show <file_path>
uv run ~/.claude/skills/extract-transcripts/transcript_index.py show <file_path> --summary

要求: uv(依赖项通过内联脚本元数据自动安装)

数据库位置: ~/.claude/transcript-index/sessions.duckdb

输出格式

转录文本格式化为 Markdown,包含:

  • 会话元数据(日期、持续时间、模型、工作目录、git 分支)
  • 用户消息前缀为 ## User
  • 助手回复前缀为 ## Assistant
  • 工具调用在代码块中(如果使用 --include-tools)
  • 思考在引用块中(如果使用 --include-thinking)
  • Codex 会话的工具使用摘要