关于 ce-session-inventory
ce-session-inventory 是一项 Agent 技能,可发现 Claude Code、Codex 和 Cursor 的会话文件,并以 JSONL 输出元数据。它封装了各平台的存储布局,支持按时间范围、平台、工作目录和关键词筛选。
主要功能
- 01发现三个平台的会话文件
- 02以 JSONL 输出会话元数据
- 03按时间范围和平台筛选
- 04按工作目录筛选 Codex 会话
- 05按关键词匹配次数排序会话
适用场景
- 01盘点项目近期会话
- 02将搜索范围限定到一个平台
- 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/ 下的脚本负责处理这些细节。
参数
以空格分隔的位置参数:
<repo>— 仓库文件夹名称(例如,my-project)。用于在 Claude Code 和 Cursor 中匹配目录,并作为 Codex 会话的 CWD 筛选条件。<days>— 扫描时间范围(天)(例如,7)。跳过早于此时间的会话文件。<platform>(可选) —claude、codex或cursor之一。省略则搜索全部三个平台。--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或cursorfile— 会话 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。由调用方决定如何处理不完整的数据。