mcpField
C
claude-session-manager

claude-session-manager

github.com/sugarforeverAgent 工作流139201 次安装1 周前更新
代码仓库

关于 claude-session-manager

claude-session-manager 面向需要整理 Claude Code 会话记录的用户,可列出候选会话或将 JSONL 导出为按项目组织的 Markdown,并将工具详情单独链接。

主要功能

  1. 01将会话导出为 Markdown
  2. 02列出并选择候选会话
  3. 03按项目、会话、日期或数量筛选
  4. 04将工具详情分离为链接文件
  5. 05生成索引并按项目整理

适用场景

  1. 01归档或搜索所有 Claude Code 会话
  2. 02选择并导出单个会话
  3. 03查看工具活动而不载入完整内容
  4. 04限定项目或日期范围导出

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/sugarforever/01coder-agent-skills --skill claude-session-manager

安装后在 Claude Code 中输入/claude-session-manager确认已加载。

附带文件agents/openai.yamlscripts/manage_claude_sessions.py

详细介绍

Claude 会话管理器

概述

Claude Code 会将会话记录以 JSONL 文件的形式存储在 ~/.claude/projects/<project-key>/<session-id>.jsonl 下。使用随附的管理器列出候选会话,或将会话导出为按项目整理的 Markdown 记录,其中包含摘要、清晰的用户/Claude 对话,以及带链接的工具调用详情。

默认输出文件夹:~/.claude/session-markdown。导出到此处前,请告知用户,并说明他们要求的任何自定义输出文件夹。

快速开始

如果用户的措辞能明确表明模式,就按其意图选择模式;否则,请在导出前让他们选择:

  • 完整模式:导出所有匹配的会话。适用于归档、备份、广泛搜索或“转换所有会话”之类的请求。
  • 指定模式:先列出候选会话,让用户选择一个,然后仅导出该会话。

可在任意目录中运行:

python3 /path/to/claude-session-manager/scripts/manage_claude_sessions.py

等效的显式形式:

python3 /path/to/claude-session-manager/scripts/manage_claude_sessions.py \
  --source ~/.claude/projects \
  --output ~/.claude/session-markdown

常用选项:

  • --mode full:导出所有匹配的会话。这是默认模式。
  • --mode specific --list-candidates:打印带编号的候选会话表,不执行导出。
  • --mode specific --pick N:从同一筛选后的候选列表中导出第 N 个候选会话。
  • --project <text>:仅导出键中包含此文本的项目文件夹。
  • --session <text>:仅导出 ID 或文件名中包含此文本的会话。
  • --since YYYY-MM-DD:仅导出在此日期或之后修改的会话。
  • --limit N:导出最近修改的 N 个匹配会话。
  • --include-tool-details-inline:在会话主 Markdown 中嵌入完整的工具输入/结果。默认情况下,主记录会保留精简的可折叠工具摘要,并通过 sidecar 文件链接到完整负载。

指定模式候选会话流程

当用户想要一个会话、不确定需要哪个会话,或要求在转换前查看最近的会话时,使用此流程。

  1. 运行候选列表命令。除非用户要求其他数量,否则默认使用 --limit 20。
python3 /path/to/claude-session-manager/scripts/manage_claude_sessions.py \
  --mode specific \
  --list-candidates \
  --limit 20
  1. 如果用户提供了项目提示、日期或会话 ID 片段,请将其作为相同筛选条件传入:
python3 /path/to/claude-session-manager/scripts/manage_claude_sessions.py \
  --mode specific \
  --list-candidates \
  --project my-repo \
  --since 2026-06-01 \
  --limit 20
  1. 向用户展示带编号的候选行。候选会话表包含修改时间、项目键、简短会话 ID、cwd 和首条用户提示摘录。这些信息可用于选择;不要让用户检查原始 JSONL 路径。
  2. 用户选定编号后,使用完全相同的筛选条件和 --pick N 重新运行:
python3 /path/to/claude-session-manager/scripts/manage_claude_sessions.py \
  --mode specific \
  --pick 3 \
  --limit 20

如果用户已经提供了确切的会话 ID 或唯一片段,只要存在任何歧义,就先使用 --mode specific --session <id-or-fragment> --list-candidates。仅当候选列表中恰好有一个匹配项时,才使用 --pick 1 导出。

输出布局

导出器会写入:

~/.claude/session-markdown/
├── index.md
└── <project-key>/
    ├── index.md
    ├── <session-id>.md
    └── tool-details/
        └── <session-id>.tools.md

保留原始 Claude 项目键作为文件夹名称。它稳定可靠,也无需猜测路径解码方式。

每个会话 Markdown 文件都包含:

  • 摘要:源路径、项目键、会话 ID、cwd、时间戳、事件/消息/工具计数,以及首条用户提示摘录。
  • 如果存在工具调用或结果,则包含带链接的工具详情文件。
  • 时间线:所有事件都显示在 ## Timeline 部分下,采用带编号的三级标题和 ISO-8601 格式:用户轮次使用 ### N. user - <ISO>,助手轮次使用 ### N. assistant - <ISO>。
  • 主对话中的消息内容也应避免使用 Markdown 标题语法;将标题转换为代码围栏之外的粗体行,以免常规 Markdown 阅读器在对话内容中渲染过大的标题。
  • 在相关助手轮次中显示精简的工具引用,例如 <tool_call_000001> Bash - command: npm test - result;默认情况下,sidecar 详情文件中会包含对应的章节。
  • 元数据和附件事件(### N. attachment - <ISO>、### N. permission-mode、### N. file-history-snapshot、### N. last-prompt 等)以及助手轮次中的 [thinking] 内容块,会作为独立的带编号事件显示在时间线中。阅读时可忽略这些噪声内容;它们不包含对话内容。

阅读导出的会话

  • 先阅读主会话 Markdown。对话和精简的工具引用应足以帮助理解流程。
  • 将每个 <tool_call_000001> 引用视为指向 tool-details/<session-id>.tools.md 的指针。
  • 只有在需要查看确切的命令输入、文件内容、搜索结果或完整工具输出时,才打开工具详情文件。
  • 对于较大的会话,默认不要加载整个辅助文件;请搜索特定的工具引用。

工作流

  1. 确认源文件夹。默认为 ~/.claude/projects。
  2. 如果用户尚未选择,请让用户选择完整模式或指定模式。
  3. 确认或告知输出文件夹。默认为 ~/.claude/session-markdown。
  4. 对于完整模式,使用所需的筛选条件运行导出脚本。
  5. 对于指定模式,列出候选项,获取用户选择的编号,然后使用 --pick 导出。
  6. 报告导出的会话数量、输出索引路径以及任何解析警告。
  7. 如果用户希望了解某个特定会话,先阅读生成的 Markdown;只有在需要查看确切的工具输入/结果时,才加载辅助文件中的工具详情。

备注

  • 将转录数据视为私密内容。它可能包含提示词、文件内容、命令输出、意外粘贴到聊天中的密钥以及工具结果。
  • 不要删除或修改原始 .jsonl 文件。
  • 对于较大的会话,优先使用辅助文件中的工具详情。内嵌工具负载可能导致 Markdown 难以搜索和加载。

评论

支持 Markdown