用途
Session Discovery 用于在多个编码智能体运行环境(harness)中查找、检查、恢复、识别或续接早期的编码会话。当用户需要定位某次历史会话时,该技能会跨 Claude Code、Codex 和 Pi 三种环境进行搜索,即使当前对话只运行在其中一种环境中。
主要能力
- 跨 harness 搜索:同时覆盖 Claude Code、Codex 和 Pi 的转录记录。
- 线索提取:从请求中提取仓库或项目名称、用户措辞及可能的语音转录变体、文件路径、端点名称、技术、提交哈希、提交信息语言等独特线索。
- Git 辅助定位:若可识别仓库,先检查其 Git 日志与 reflog,利用提交日期、变更路径和提交信息缩小搜索范围,并区分初始实现与后续审查或修复工作。
- 转录搜索:对所有转录根目录进行大小写不敏感搜索,先用
rg -i -l只将候选文件名纳入上下文,并包含~/.claude/history.jsonl以快速映射 Claude Code 提示到会话 ID。 - 精准检查:使用针对性的 jq 投影检查候选 JSONL 文件,搜索用户与助手文本、工具调用参数、委派任务提示、文件写入、命令输入和子智能体转录,避免打印整行 JSONL。
- 验证与排序:依据内部时间戳和会话元数据验证候选,不依赖文件修改时间;判断匹配是包含原始工作还是仅引用;对剩余候选排序并报告不确定性。
转录位置(默认)
- 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。这些是默认值,不代表不存在其他存储;应尊重 harness 特定的环境覆盖,若默认目录缺失则检查已安装 harness 的配置。
使用方式
- 从请求中提取多个独特线索。
- 若可识别仓库,先检查 Git 日志与 reflog。
- 对所有转录根目录进行大小写不敏感搜索,使用多个较窄的搜索而非一个过度具体的表达式。
- 用 jq 投影检查候选文件,搜索各类文本与工具调用内容。
- 依据内部时间戳和会话元数据验证候选。
- 判断匹配是否包含原始工作。
- 对候选排序并报告不确定性。
- 对于超大历史,先按 harness、仓库、文件名开始日期或 Git 推导日期缩小范围。
结果格式
对每个强候选提供:harness;本地日期与时间;原始工作目录;会话 ID;父转录路径;相关子智能体路径(若有);简洁的匹配证据;是原始实现还是后续审查、修复、部署或跟进会话;置信度或剩余歧义。以最强匹配开头,仅在有用时列出可能的替代项。
续接会话
在识别出足够可信的强候选后,除非用户明确表示不要,否则自动准备续接命令,无需等待单独请求。若多个候选确实存在歧义,则报告歧义并等待用户选择。从会话元数据恢复原始工作目录,而非从当前 shell 猜测。验证已安装 harness 的当前续接语法。准备一条切换目录并续接所选会话的 shell 命令。使用配置的别名以保留预期的权限与防休眠行为:Claude Code 用 vamos,Codex 用 letsgo,Pi 用 pi,不要单独写出底层权限绕过标志。用 pbcopy 复制命令到 macOS 剪贴板并告知用户可粘贴,不要在响应中打印该 shell 命令。典型命令形式为 vamos --resume <session-id>、letsgo resume <session-id>、pi --session <transcript-path>,但以已安装 CLI 的帮助为准。
适用场景
- 用户要求定位、检查、恢复、识别或续接早期编码会话。
- 需要跨多个 harness 查找历史记录。
- 需要区分原始实现与后续审查、修复、部署或跟进会话。
限制
- 默认转录位置仅为默认值,不代表不存在其他存储。
- 不应依赖文件修改时间,因为续接会话会更新旧转录,长期会话可跨多个日期。
- 不应打印整行 JSONL,因为工具结果和模型推理可能使单行极其庞大。
- 隐私方面:会话历史可能包含凭据、私密提示、邮件内容和大型工具结果;只暴露识别会话所需的证据,绝不复制令牌、机密、无关私密对话内容或敏感工具输出。
- Pi 转录是由 entry ID 和 parentId 链接的树,fork 后可能保留被放弃的分支;被放弃分支上的文本或工具调用命中仍是讨论发生的证据,但当影响置信度时应披露分支歧义。
- Codex 子智能体可能有单独的 rollout 文件,应使用其元数据与父会话关联;使用工具活动作为证据时,避免将函数调用输出记录计为单独操作。