mcpField
S
session-discovery

session-discovery

github.com/rubenflamshepherdAgent 工作流074 次安装4 周前更新
代码仓库

关于 session-discovery

session-discovery 是一项 Agent 技能,用于查找并评估 Claude Code、Codex 和 Pi 中的工作会话。它提供跨工具的搜索与证据核验流程,并说明如何识别可恢复的会话。

主要功能

  1. 01搜索 Claude Code、Codex 和 Pi 的记录
  2. 02利用 Git 历史缩小候选范围
  3. 03定向查询 JSONL 记录
  4. 04核验会话元数据和时间戳
  5. 05排列匹配结果并说明不确定性
  6. 06为强匹配准备恢复命令

适用场景

  1. 01查找实现某项仓库更改的会话
  2. 02区分原始工作与后续审查
  3. 03在子 Agent 记录中定位委派工作
  4. 04识别可恢复的会话

安装

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

$npx skills add https://github.com/rubenflamshepherd/ruben-agent-skills --skill session-discovery

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

详细介绍

会话发现

即使当前对话只在一种环境中运行,也要搜索所有受支持的运行环境。

转录文件位置

  • Claude Code
    • 项目转录:~/.claude/projects/**/*.jsonl
    • 提示词索引:~/.claude/history.jsonl
    • 委派的工作:嵌套的 <parent-session-id>/subagents/*.jsonl
  • Codex
    • 活动转录:~/.codex/sessions/**/*.jsonl
    • 已归档的转录(如有):~/.codex/archived_sessions/**/*.jsonl
  • Pi
    • 转录:~/.pi/agent/sessions/**/*.jsonl
    • 目录按 slug 化的工作目录分组;每个文件名都包含开始时间戳和会话 ID。

将这些位置视为默认值,而非不存在其他存储位置的证明。如果存在特定运行环境的环境变量覆盖,请遵循该设置;如果默认目录缺失,请检查已安装的运行环境配置。

搜索流程

  1. 从请求中提取若干鲜明线索:仓库或项目名称、用户措辞及可能的语音转录变体、文件路径、端点名称、技术、提交哈希,以及提交消息的语言。
  2. 如果能确定仓库,先检查其 Git 日志和引用日志。提交日期、变更路径和提交消息通常有助于缩小转录搜索范围,并区分初始实现与后续审查或修复工作。
  3. 对所有转录根目录进行不区分大小写的搜索。先使用 rg -i -l,仅将候选文件名纳入上下文;同时搜索 ~/.claude/history.jsonl,以便快速将 Claude Code 提示词映射到会话 ID。使用多个较窄的搜索,而不是一个过于具体的表达式。
  4. 使用有针对性的 jq 投影检查候选 JSONL 文件。搜索用户和助手文本、工具调用参数、委派任务提示词、文件写入内容、命令输入及子 Agent 转录。检查单个字段时,不要打印整行 JSONL:工具结果和模型推理可能会让单行变得非常庞大。
  5. 根据内部时间戳和会话元数据验证候选结果。不要依赖文件修改时间:恢复会话会更新旧转录,而长期会话可能跨越多个日期。
  6. 确认匹配项包含原始工作,而不只是提及该工作。强有力的证据包括:用户最初发起的请求、创建相关文件的工具调用、相符的 Git 提交,以及描述实现内容的完成报告。
  7. 对剩余候选项进行排序,并说明不确定性,不要默默选择第一个关键词匹配项。

对于特别庞大的历史记录,可先按运行环境、仓库、文件名起始日期或根据 Git 推断的日期缩小范围,再阅读内容。

特定运行环境的判读方式

Claude Code

父级转录通常位于 ~/.claude/projects/<encoded-cwd>/<session-id>.jsonl。Claude Code 可能会将实际实现工作委派给 <encoded-cwd>/<parent-session-id>/subagents/<agent-id>.jsonl。如果最有力的证据位于子 Agent 中,请同时报告这两个路径,并指出父会话是可恢复的对话。~/.claude/history.jsonl 是用户输入的提示词、项目路径和会话 ID 的索引,并非完整转录。

压缩或继续对话可能会留下包含重叠上下文且彼此紧密相关的文件。优先选择内部记录和 Git 时间线都表明曾执行原始工作的会话。

Codex

Codex rollout 文件按年/月/日目录分组。读取 session_meta 记录,获取权威的会话 ID、原始 cwd 和来源。子 Agent 可能有各自的 rollout 文件;尽可能使用其元数据将它们与父会话关联。搜索活动目录和已归档目录;根据工具活动作为证据时,不要将函数调用输出记录单独计为操作。

Pi

读取开头的 session 记录,以获取权威的 ID、开始时间和 cwd。Pi 转录记录是一棵通过条目 ID 和 parentId 链接起来的树;分叉后可能会保留已放弃的分支。在已放弃分支中找到的文本或工具调用,仍能证明相关讨论确实发生过,但如果分支歧义会影响置信度,请说明这一点。同一条助手消息中的多个 toolCall 部分表示并行工具调用。

结果格式

对于每个有力的候选项,请提供:

  • harness;
  • 当地日期和时间;
  • 原始工作目录;
  • 会话 ID;
  • 父转录文件路径;
  • 相关子 Agent 文件路径(如有);
  • 简明的匹配证据;
  • 说明这是原始实现会话,还是后续审查、修复、部署或跟进会话;
  • 置信度或尚存的歧义。

将最有力的匹配项放在最前面。仅在有帮助时列出可能的替代项。

恢复会话

找到置信度足够高、值得推荐的候选项后,自动准备恢复命令,除非用户明确要求不要这样做。不要等待用户另行提出请求。如果多个候选项仍存在实质性歧义,请报告该歧义,并等待用户选择。

  1. 从会话元数据中恢复原始工作目录,不要根据当前 shell 猜测。
  2. 确认已安装 harness 当前的恢复语法。
  3. 准备一条 shell 命令,用于切换到原始工作目录并恢复所选会话。
  4. 使用已配置的别名,以保留预期的权限和防止系统休眠行为:Claude Code 使用 vamos,Codex 使用 letsgo,Pi 使用 pi。不要单独写出底层绕过权限的标志。
  5. 使用 pbcopy 将命令复制到 macOS 剪贴板,并告知用户命令已准备好,可直接粘贴;不要在回复中打印 shell 命令。

常见命令形式包括 vamos --resume <session-id>、letsgo resume <session-id> 和 pi --session <transcript-path>,但应以已安装 CLI 的帮助信息为准。

隐私

会话历史可能包含凭据、私人提示词、电子邮件内容和大量工具结果。仅披露识别会话所需的证据。切勿复述令牌、机密信息、无关的私人对话内容或敏感工具输出。

评论

支持 Markdown