mcpField
M
melech-handoff

melech-handoff

github.com/adirdAgent 工作流4546 次安装3 周前更新
代码仓库

关于 melech-handoff

用于查找并续接本地记录中编码 Agent 会话的技能,提供列表和继续两种模式。脚本负责发现记录,Agent 负责检索相关上下文。

主要功能

  1. 01列出近期会话
  2. 02按 ID 或前缀查找会话
  3. 03搜索记录以恢复任务上下文
  4. 04将查找范围限定在当前工作树

适用场景

  1. 01查看近期编码 Agent 会话
  2. 02按已知会话 ID 续接任务
  3. 03按目标查找过往会话
  4. 04无需在仓库中创建交接文件即可继续工作

安装

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

$npx skills add https://github.com/adird/agent-shell-hamelech --skill melech-handoff

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

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

README.md
references/
providers.json
scripts/
handoff.py
tests/
test_handoff.py

详细介绍

Melech Handoff

查找并恢复编码 Agent 会话,无需在代码仓库中放置交接文件,也无需让用户在不同聊天之间复制对话记录路径。

只有两种模式:list 和 cont。脚本只负责发现、列出和查找对话记录。智能检索由 Agent 完成。

/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 表格渲染器会压缩元数据列,也无法显示多行摘要。使用脚本提供的字段;不要虚构日期、Agent、工作树或数量。

### `<short_id>` · <topic>
<provider> · <age>
`<worktree>` · <stats.user_messages> user msgs · ~<stats.approx_tokens> tokens

1. <third-to-last user message>
2. <second-to-last user message>
3. <latest user message>

age 表示距离对话记录上次写入的简略时间,例如 8m ago、3h ago 或 2d ago;由于列表按最近活动排序,这是唯一显示的时间戳。确切的 created 和 modified 值仍保留在脚本输出中,可用于查找或调试。worktree 在代码仓库的主工作树中为 main,否则为工作树目录名称。 stats.approx_tokens 是粗略的 chars / 4 估算值,并非分词器的结果。 topic 是根据最早的一条有意义的人类请求提取的简短提示。 glimpse 最多包含最近三条人类用户消息,并以实际编号行呈现。渲染卡片时保留换行;少于三条时不要重复消息。每条消息最多可使用 160 个字符。不要移除此上限,因为单轮对话记录可能包含数千个字符。工具结果和仅含元数据的用户记录会被忽略。

list 为只读模式。显示足够的信息,让用户可以调用 /melech-handoff cont <id>,然后停止。不要开始处理任务或读取完整对话记录。

继续

如果参数以会话 ID 或唯一 ID 前缀开头,则运行:

python3 "$HANDOFF_SCRIPT" lookup --cwd "$PWD" --id "<id-prefix>"

其余文本即为继续目标。

如果没有 ID,则不带查询运行 list。脚本不会假装理解目标。从目标中选择有辨识度的词语,并且只使用 rg 搜索返回的 primary_transcript_path 文件。

  • 找到一个明确匹配项:对其 ID 运行 lookup,然后继续。
  • 找到多个可能的匹配项:使用一个合并的 AskQuestion 选择器展示匹配候选项。选择后,运行 lookup。
  • 没有参数:在一个合并的 AskQuestion 选择器中显示最新的五行。每个选项以 <age> · <provider> · <topic> · <short_id> 开头,后接工作树、统计信息和 三行摘要。如果还有未显示的行,则添加一个 Older sessions… 选项,用相同布局打开接下来的五行。 不要在一个选择器中添加多个问题,因为那需要每个问题都回答一次。
  • 如果用户选择选择器自动提供的 Other 选项并输入文本,则将该文本视为继续目标和相关性查询。根据辨识度高的词语搜索返回的 primary_transcript_path 候选项,不受时间新旧限制。继续处理一个明确匹配项;否则,显示一个仅包含最相关候选项的更新选择器。
  • 选定会话后,运行 lookup。
  • 列出的候选项中没有匹配项:说明这一点。不要将搜索范围扩大到不受限制的主目录扫描。

lookup 会返回 primary_transcript_path,即要查阅的文本文件。如果任务或当前状态有任何不清楚之处,请在该记录中搜索相关关键词,例如任务名称、文件名、ID、错误和工具名称。然后读取匹配行附近的一小段内容,以重建意图和状态。避免从头到尾线性读取:JSONL 记录可能很大,单行也可能包含大量内容。

根据继续目标判断哪些上下文相关。由 Agent(而非 Python 脚本)作出判断。

不要编写记录卡片,也不要凭空编造冗长的回顾。遵循目标中的检索限制,例如“不要全部读取”。

目标明确后,直接继续工作。不要询问用户是否要你继续。

边界

  • 不要在 ~/.melech/handoffs/ 下写入文件。只能列出记录并从中继续。
  • 默认范围为当前工作树根目录,不包括同级工作树。
  • 提供方位置只能来自 references/providers.json。
  • 数据库、加密、仅 protobuf 和仅压缩的历史记录会被记录,但不受支持。
  • 记录和交接内容属于私密的本地历史。除非用户明确要求,否则绝不要对外发布、上传或粘贴。

评论

支持 Markdown