Melech Handoff 用于在不把交接文件放进代码仓库、也不让用户手动复制记录路径的前提下,查找并续接编码智能体会话。它支持 Cursor、Claude Code、Codex、Gemini 以及其他本地智能体。
用途 该技能解决跨会话、跨智能体续接工作的问题:当需要找到最近的会话记录、恢复某个未完成的任务,或在不同聊天之间传递上下文时使用。
主要能力 只有两种模式:list 和 cont。脚本本身只负责发现、列出和查找会话记录,真正的智能检索由智能体完成。
使用方式 调用形式包括: /melech-handoff /melech-handoff list /melech-handoff cont [session-id-prefix | objective]
模式根据调用方式解析,不询问用户想要哪种模式:
- 单独的 /melech-handoff 或 /melech-handoff list → list
- /melech-handoff 加会话 ID 或唯一 ID 前缀 → cont
- /melech-handoff cont … → cont
脚本路径由 HANDOFF_SCRIPT 指向与本文件同级的 scripts/handoff.py,需使用 Python 3.9 或更新版本运行。脚本的 JSON 输出是唯一事实来源,不应通过无限制的家目录搜索来重建记录发现逻辑。
list 模式 运行: python3 "$HANDOFF_SCRIPT" list --cwd "$PWD" --limit 12
以紧凑的 Markdown 卡片按最新优先展示各行,不使用表格(CLI 表格渲染会挤压元数据列,也无法显示多行摘要)。使用脚本字段,不虚构日期、智能体、工作树或计数。卡片格式为:
<short_id> · <topic>
<provider> · <age>
<worktree> · <stats.user_messages> user msgs · ~<stats.approx_tokens> tokens
- <倒数第三条用户消息>
- <倒数第二条用户消息>
- <最新用户消息>
age 是记录最后写入以来的紧凑时间,如 8m ago、3h ago、2d ago,这是唯一显示的时戳,因为列表按最近活动排序;精确的 created 和 modified 值仍保留在脚本输出中供查找或调试。worktree 对仓库主工作树显示为 main,否则显示工作树目录名。stats.approx_tokens 是 chars / 4 的粗略估算,不是分词器结果。topic 是从第一条有意义的人类请求中提取的简短提示。glimpse 最多包含最近三条人类用户消息,以真实编号行呈现;渲染卡片时保留换行,消息不足三条时不重复。每条消息最多 160 字符,不应取消该上限,因为单条记录轮次可能长达数千字符。工具结果和仅含元数据的用户记录会被忽略。
list 是只读操作。展示足够信息让用户能调用 /melech-handoff cont <id> 后即停止,不开始工作,也不读取完整记录。
cont 模式 如果参数以会话 ID 或唯一 ID 前缀开头,运行: python3 "$HANDOFF_SCRIPT" lookup --cwd "$PWD" --id "<id-prefix>" 剩余文本作为续接目标。
如果没有 ID,则运行不带查询的 list。脚本不假装理解目标,而是从目标中选取有辨识度的词,仅在返回的 primary_transcript_path 文件中用 rg 搜索。
- 明确匹配一条记录:对其 id 运行 lookup,然后继续。
- 有多条可能匹配:用一个合并的 AskQuestion 选择器展示候选,选择后运行 lookup。
- 无参数:在一个合并的 AskQuestion 选择器中展示最新五行。每个选项以 <age> · <provider> · <topic> · <short_id> 开头,后接 worktree、stats 和三行摘要。如果还有未显示的行,追加一个 Older sessions… 选项,用相同布局打开接下来五行。不要在一个选择器中添加多个问题,因为那需要每个问题各一个答案。
如果用户选择选择器的自动 Other 选项并输入文本,将该文本视为续接目标和相关性查询,在返回的 primary_transcript_path 候选中搜索有辨识度的词,不受时间新近程度限制。若只有一条明确匹配则继续;否则展示一个仅含最强相关候选的刷新选择器。
选定会话后,运行 lookup。
在已列出的候选中无匹配时,如实说明,不要扩大为无限制的家目录扫描。
lookup 返回 primary_transcript_path,即要查阅的文本文件。如果任务或当前状态有任何不清楚之处,在该记录中搜索相关关键词,如任务名、文件名、ID、错误和工具名,然后读取匹配行附近的小窗口以重建意图和状态。避免从头到尾线性读取:JSONL 记录可能很大,单行可能包含大负载。
用续接目标判断哪些上下文相关。做这个判断的是智能体,不是 Python 脚本。
不要写卡片,也不要编造长篇回顾。遵循目标中的检索约束,例如“不要全部读取”。
目标明确后直接继续工作,不要询问用户是否希望继续。
适用场景
- 查找最近的编码智能体会话记录。
- 通过会话 ID 前缀或目标描述恢复某个会话。
- 在 Cursor、Claude Code、Codex、Gemini 等本地智能体之间续接工作。
限制
- 不写入 ~/.melech/handoffs/ 下的文件,只从记录中列出和续接。
- 范围默认限于当前工作树根,不包括同级工作树。
- 提供方位置仅来自 references/providers.json。
- 数据库、加密、仅 protobuf 和仅压缩的历史会被记录但不支持。
- 记录和交接内容属于私有本地历史,未经用户明确指示,绝不发布、上传或粘贴到外部。