/handoff 技能:让另一个 AI 代理无缝接管你的工作
Matt Pocock 的 AI 技能系列第 17 个技能 /handoff,可将当前对话压缩为一份 Markdown 交接文档,写入临时目录,供新的代理继续工作。它的核心价值是可移植性而非压缩,特别适合切换工具、移动目录、交给同事或分叉副任务等场景。
/handoff 是 Matt Pocock 推出的 AI 工程师实用技能系列中的第 17 个技能。它的作用,是把当前正在进行的对话整理成一份 Markdown 交接文档,并写入操作系统的临时目录,而不是项目工作区。这样做的目的不是压缩上下文,而是让工作具备可移植性——只有当工作需要在不同工具、目录、同事或分支任务之间转移时,才真正需要这样一份文件。如果一切都在同一个环境里继续,使用 /compact 通常更合适。
这个技能需要你手动输入 /handoff 来触发,代理不会自动启用。你可以在触发时附上一段说明,告诉下一个会话这次工作的目标,文档会按照这个目标来编写。它适用的典型场景有四种:切换工具链(例如从 Claude 换到 Codex,新工具无法看到旧的上下文);移动到不同的目录或仓库(比如离开原型目录);把工作交给同事;在阶段中途发现一个旁支任务,希望分叉出去并行处理。除此之外,同一工具、同一目录下的阶段收尾,使用 /compact 就好了。
分叉是最值得了解但最容易被忽略的用法。你正深陷一场设计讨论,忽然遇到一个只有运行代码才能回答的问题,又不想打断已经建立起来的对话线索。这时可以把当前上下文交给一个原型会话,让它去验证,再把答案带回来,从原会话中引用这个结果。整个过程只需要两次跨越,主对话始终保持连贯,不必重新解释任何背景。
交接文档携带的是进行中的核心线索——当前正在做什么、为什么这么做、下一步是什么——同时还会建议下一个代理应该使用的技能。在写入文档之前,密钥会被自动删除。它刻意不会携带已经成型的内容:规格、计划、ADR、issue、commit 和 diff 都只会以路径或 URL 的形式出现,而不会复制到文档里。这样既能保持文件短小,也避免同一份细节在多个地方出现而逐渐漂移。
关于 /compact、/clear 和 /handoff 的差别,核心在于它们分别保留了什么。/compact 压缩当前上下文,让你在新窗口继续工作,意图得以保留;/clear 清空窗口,从头开始,适合那些完全可丢弃的旧内容;/handoff 写出一份可移动的文件,让工作本身能够转移到别处。需要注意,这三者都会把主要信息来源(原始对话)变成二手摘要,只有直接继续会话才不会发生这种转换。
关于临时目录,这是使用体验中反馈最多的地方:路径很长,不同操作系统各不相同,Windows 上的代理有时还要尝试好几次才能找到正确位置。因此拿到路径后最好先记下来。临时目录是刻意选择的,因为交接文档是过路文件,不是需要长期维护的工件。但也要知道,有些环境会在会话之间清理临时目录(如 Codex),/private/tmp 在重启后也会清空。如果下一个会话不是在一小时内开始,或者要换到不同的工具,最好自己立刻把文件复制到持久位置。同样,文档中引用的其他临时文件也要一并处理,否则新代理无法追踪。
实际交接时,打开新会话后直接让代理读取该文件路径即可,而不是把摘要粘贴到 shell 命令里。因为摘要中一旦包含反引号或 $(...) 这样的内容,插值到 claude "" 命令时可能会被破坏,通常表现为静默截断而不是报错,新代理拿到的就会是一份不完整的简报。它和你可能知道的 /branch 或 fork 会话机制类似但不完全相同。fork 会继承上下文的精确副本,适合在同一台机器、同一个工具、同一个目录下使用;一旦目标环境是 fork 无法到达的地方,独立的文件就更可靠。
至于 CLAUDE.md,判断标准是:这件事到下个月是否仍然成立。CLAUDE.md 是项目的长期常驻上下文,每次会话都会加载,无论是否相关;交接文档则只针对某件正在推进的工作,任务一结束就失效。反复需要解释的事实属于 CLAUDE.md 的问题,而半成品任务才是交接文档的用武之地。
有批评说它记录了“是什么”而不是“为什么”。缓解方法有两个:一是传入明确的下一个会话目标,让相关的推理得以保留而不被抹平;二是留意那些从未在会话中真正验证过的自信断言,例如“X 还没建”“Y 已完成”。新代理会把文档视为契约,不会重新检查,因此把假设写成事实会让后续所有工作建立在一个错误前提上。交出文档之前通读一遍,把任何只是推测的内容降级表述。
作为技能而不是斜杠命令,它可以通过与系列内其他技能相同的安装路径分发和更新,便于分享;frontmatter 限制了代理不能自行触发它。判断这个技能是否真正起效,可以看几个信号:文档规模只占原始对话的一小部分;规格、issue 和 diff 都以路径或 URL 出现;你不需要打开原会话就能冷静地读懂下一步;新代理直接开始工作而不是要求你重新解释设定;分叉场景中你回来时原会话仍然原封不动;建议技能部分恰好指向你自己会选的那个;文档里没有任何钥匙、令牌或密码。
在技能谱系中,/handoff 是一个随时可用的独立技能,位于会话与会话之间的接缝处,而不是构建链内部。不过它适用的范围比较窄,实际上你使用它的频率很可能低于阶段边界上的其他四个选项。它最接近的邻居是 prototype,因为原型本身拥有独立目录,而出走再回来的往返过程正是这个技能最擅长处理的情形。当你站在阶段边界上,不确定应该继续、清空、交接、委派还是压缩时,ask-matt 中保存的决策树会帮你在这五个选项中做出选择。