mcpField
C
ce-session-inventory

ce-session-inventory

github.com/everyincAgent 工作流25.8k129 次安装今天更新
代码仓库

关于 ce-session-inventory

ce-session-inventory 是一项 Agent 技能,可发现 Claude Code、Codex 和 Cursor 的会话文件,并以 JSONL 输出元数据。它封装了各平台的存储布局,支持按时间范围、平台、工作目录和关键词筛选。

主要功能

  1. 01发现三个平台的会话文件
  2. 02以 JSONL 输出会话元数据
  3. 03按时间范围和平台筛选
  4. 04按工作目录筛选 Codex 会话
  5. 05按关键词匹配次数排序会话

适用场景

  1. 01盘点项目近期会话
  2. 02将搜索范围限定到一个平台
  3. 03查找包含主题关键词的会话

安装

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

$npx skills add https://github.com/everyinc/compound-engineering-plugin --skill ce-session-inventory

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

附带文件scripts/discover-sessions.shscripts/extract-metadata.py

详细介绍

会话清单

面向 Agent 的原语。发现会话文件,并以 JSONL 格式输出 Claude Code、Codex 和 Cursor 的会话元数据。

此技能旨在让研究会话历史的 Agent 无需了解磁盘上会话存储的布局,也无需了解各个平台的 JSONL 格式。scripts/ 下的脚本负责处理这些细节。

参数

以空格分隔的位置参数:

  1. <repo> — 仓库文件夹名称(例如,my-project)。用于在 Claude Code 和 Cursor 中匹配目录,并作为 Codex 会话的 CWD 筛选条件。
  2. <days> — 扫描时间范围(天)(例如,7)。跳过早于此时间的会话文件。
  3. <platform> (可选) — claude、codex 或 cursor 之一。省略则搜索全部三个平台。
  4. --keyword K1[,K2,...] (可选) — 筛选完整文件内容中匹配至少一个逗号分隔关键词(不区分大小写的子字符串)的会话。每个输出的会话行会增加 match_count 和 keyword_matches({K: N, ...})字段,_meta 行会增加 files_matched。对大量会话按主题相关性排序时,请使用此选项,而不要逐个文件调用 grep -l。

执行

从技能自身的 scripts/ 目录运行发现与元数据提取流程:

bash scripts/discover-sessions.sh <repo> <days> [--platform <platform>] \
  | tr '\n' '\0' \
  | xargs -0 python3 scripts/extract-metadata.py --cwd-filter <repo>

若要按关键词筛选,请在 extract-metadata.py 调用后追加 --keyword K1[,K2,...]。关键词扫描会读取整个文件(而非仅仅读取头部元数据窗口),因此耗时高于仅提取元数据的运行。只有在需要对大量会话候选按主题排序时才使用,不要将其作为默认选项。

原样返回标准输出——每个会话一行 JSON 对象,最后一行为 _meta。调用方会直接解析 JSONL,因此不要改述、重新排版或总结。

如果未发现文件,流程仍会输出一行格式正确的 _meta(files_processed: 0)。照原样返回即可。

输出格式

每个会话行都是一个 JSON 对象。各平台共有的字段:

  • platform — claude、codex 或 cursor
  • file — 会话 JSONL 文件的绝对路径
  • size — 文件大小(字节)
  • ts — 会话开始时间戳(ISO 8601)
  • session — 会话标识符

平台专属字段:

  • Claude Code 会增加 branch(git 分支)和 last_ts(最后一条消息的时间戳)。
  • Codex 会增加 cwd(工作目录)、source、cli_version、model 和 last_ts。
  • Cursor 的文件中没有时间戳或元数据——ts 根据文件修改时间生成,session 根据所在目录名称生成。

最后一行 _meta 包含 files_processed、parse_errors,以及可选的 filtered_by_cwd(因 CWD 筛选而排除的 Codex 会话数量)和 files_matched(关键词筛选后保留的会话数量,仅在设置了 --keyword 时出现)。

设置 --keyword 时,每个会话行还会包含:

  • match_count — 所有关键词的匹配总次数
  • keyword_matches — 各关键词的匹配次数,例如 {"middleware": 4, "auth": 12}

match_count: 0 的会话不会出现在输出中。

错误处理

如果发现脚本出错(例如,主目录无法读取、权限失败),应将错误传递给调用方。不要用 git log、文件列表或其他来源替代——此技能的约定仅限会话元数据。

如果 _meta 报告 parse_errors > 0,照原样返回 JSONL。由调用方决定如何处理不完整的数据。

评论

支持 Markdown