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 会话的工具使用摘要