Install
openclaw skills install @shary-ho/llm-session-handoff-assistant将当前项目/对话整理成一份可迁移给另一个大模型(GPT、Gemini、Qwen、DeepSeek 等)或另一个新对话窗口的完整上下文交接包(Migration Package),并把对话中产生过的实际项目文件、代码、生成的文档/图片等一并收集打包成可下载的交付物,使新的 AI 或用户无需翻阅历史聊天、也不会丢失已产出的文件即可立即接手项目。触发场景包括:用户说"帮我整理一下这个项目方便交接"、"我要换个模型/开个新对话,帮我做个交接文档"、"生成一个 migration package"、"总结一下方便新对话/新模型接手"、"这个项目做到哪了,帮我打包一下上下文"、"导出项目上下文给另一个 AI"、"把我们做出来的文件都保存/下载下来"等。即使用户没有明确说"迁移"两个字,只要意图是让另一个 AI 或未来的自己在不读完整历史记录的情况下快速理解项目全貌、继续工作、且不丢失已有产出物,都应触发此 skill。不要在用户只是想要一段简短的对话摘要、或者只是想知道"我们刚才聊了什么"(不涉及后续交接给别的系统/对话,也不涉及保留文件)时使用——那种情况直接总结即可,不必套用完整模板。
openclaw skills install @shary-ho/llm-session-handoff-assistant你现在的任务不是"总结聊天记录",而是生成一份交接包(Migration Package):一份让另一个 AI(可能是完全不同的模型,也可能只是一个全新的对话窗口)能够在不阅读任何历史对话的情况下,独立理解并继续这个项目的文档。
判断标准很简单:把这份文档丢给一个从未见过这个项目的 AI,它能不能:
如果做不到,说明信息提取得不够,需要回去补。
主动去核实,而不是凭对话印象编造。 上一版这个 skill 的问题是把"如果能访问项目目录就整理,不能访问就说不能访问"当成被动选项。但你其实经常是可以主动查看的——如果用户提到了项目路径、上传了文件、或者当前环境里有可访问的目录,直接用工具去看,而不是仅凭聊天记录里对文件内容的转述来猜测。具体做法见下面"信息收集"一节。
去粗取精,而不是无损压缩。
不要编造。 如果某一部分信息在对话或项目文件中确实找不到依据,明确写"未知"或"当前无法获取",而不是用听起来合理的内容填补空白。一份诚实地标注了缺口的交接包,远比一份看似完整但夹带虚构内容的交接包更有用——后者会让接手的 AI 在错误的假设上继续构建。
具体优于模糊。 能写文件路径、函数名、模块名、配置项名称,就不要写"某个文件"、"相关模块"这种模糊指代。交接包是给 AI 读的,AI 需要能直接定位到代码里的具体位置。
在开始写交接包之前,先做这几件事(能做的都做,做不到的再说明"无法获取"):
交接包本身是"关于项目的说明",但对话/项目过程中往往已经产生了真正的产出物:写好的代码文件、生成的文档(.docx/.pdf/.md)、配置文件、图片、用户上传后被读取过的原始文件等。如果只生成一份 Migration Package 文字说明而不把这些实际文件一起保留下来,交接是不完整的——下一个 AI 或者用户过一阵回来还是会发现"东西找不到了"。
所以除了写 Migration Package 之外,还要做这件事:
<项目名>_handoff/
├── migration_package.md # 交接文档本体
└── files/ # 实际产出物原样保留
├── ...(保持原有的相对目录结构,不要拍平)
files/ 目录里的相对路径对应起来,这样交接文档和实际文件互相能对上号,而不是文档说"有一份设计稿"但不知道具体是哪个文件。完整的 16 节模板在 references/template.md,每次生成交接包时都按这个结构来,方便另一个 AI(或人)按固定位置解析。模板文件里每一节都附了简短说明和示例,直接参照填写即可;不要自己发明新的章节结构,除非用户明确要求增删。
模板各节速览(详见 references/template.md):
<项目名>_migration_package.md 这样的格式。