如何把 Claude、Codex 或 OpenCode 会话迁移到另一台机器(无需从头开始)

保持同一个对话继续进行,切换拥有会话的机器,并且(可选)把工作区也一起迁移。

基于版本
CLI
0.2.17
预览 ref
a2c45c8

一天结束时常见的场景:

  • 会话是在笔记本上开始的。
  • 笔记本需要合上(或者快没电、要睡眠、要断 Wi-Fi、要放回包里)。
  • 会话不应该停下。它应该继续,只是换一台机器。

这正是会话交接真正要做到的:

同一个会话 ID、同一条主线……只是换了拥有它的机器。

大多数工具没有一个干净的“把整个会话迁移到另一台机器”的流程。

Happier 有,它叫 Session handoff。

简要回答

  1. 先确定你要做什么:
    • 把会话迁移到另一台机器(这样你就能合上笔记本)
    • 可选:把工作区也迁移过去(如果目标机器上还没有这些文件)
  2. 在两台电脑上都设置 Happier(至少让两台都连接到同一个 Happier 服务器)。
  3. 打开会话,启动 Session handoff(会话标题栏菜单或 会话信息(Session info))。
  4. 选择目标机器。
  5. 决定:
    • Workspace transfer:默认关闭(更安全)
    • 如果是直连会话:选择 Keep direct 还是 Convert to synced

问题

有时限制你的不是“能不能用手机”。

而是“现在是哪台机器拥有这个会话”。

如果会话被错误的机器拥有,一切都会变得别扭:

  • 你真正想运行的工具在别处
  • 你只是为了换个运行位置就得重建会话
  • 连续性丢了(你又得重新解释上下文)

Session handoff 就是干净的“同一个会话,换一台机器”操作。

常见做法及取舍

  • 让笔记本睡眠,祈祷会话能撑住: 有时没问题,但不能依赖。
  • 在另一台机器上开一个新会话: 能用,但主线断了(还得重新解释上下文)。
  • 分叉会话: 想要分支时很有用,但解决不了“让同一个会话在别处继续活着”的问题。
  • 用手机 SSH 到笔记本: 能用,但如果你想关掉的正是这台笔记本,这就本末倒置了。
  • Happier Session handoff: 保持同一个会话 ID,并迁移当前的拥有者。

如果你第一次听说 Happier(它是什么,去哪里获取)

Happier 是一款面向 Claude Code、Codex 和 OpenCode 等 AI 编码代理的开源配套应用(移动端、网页、桌面)。

这里的工作方式是:在手机上用 Happier 监控和引导会话,而仓库和工作区留在拥有它的机器上。

开始设置:

一套行之有效的工作流(分步)

1) 决定是只迁移“会话”,还是迁移“会话 + 工作区”

Session handoff 有两个选项:

  • 会话所有权: 哪台机器是会话当前的拥有者(这是核心功能)。
  • Workspace transfer: Happier 是否把工作区文件复制到目标机器。

如果你的目标是“我要关掉这台笔记本,但让会话继续活着”,几乎总是从迁移所有权开始。

工作区迁移是可选的:适用于目标机器上还没有所需文件,或者你想让目标机器成为该会话仓库的新家的情况。

2) 从会话中启动 Session handoff

你可以从以下位置启动交接:

  • 会话标题栏的操作菜单
  • 会话信息(Session info)页面

选择目标机器并确认。

3) 选择是否迁移工作区(可选)

默认情况下,工作区迁移是关闭的。

只有当你确实希望 Happier 把会话工作区复制到目标机器时才打开它。

如果启用了迁移,你还要选择:

  • 目标路径已存在时怎么办(在旁边复制一份还是替换)
  • 如何处理被忽略的文件

Happier 在这里很严格:对于以下不安全的源路径,它会阻止工作区迁移:

  • /
  • 你的主目录
  • ~

这样你就不会意外地想复制半台机器。

4) 如果是直连会话,选择 Keep direct 还是 Convert to synced

Session handoff 同时适用于同步(Synced)会话和直连(Direct)会话。

对于直连会话,交接界面会多一个选择:

  • Keep direct: 会话继续由提供商保存。
  • Convert to synced: 脱离与机器绑定的直连模式,此后由 Happier 拥有该会话。

一条简单的判断规则:

  • 如果你仍想要“由提供商保存、绑定机器”的语义:Keep direct。
  • 如果你希望会话之后表现得像普通的 Happier 会话:Convert to synced。

5) 如果交接失败,检查认证前提(已连接服务与机器本地认证)

Session handoff 不会神奇地让目标机器上的提供商 CLI 自动登录。

这里有两个概念相互作用:

  • 已连接服务(Connected services):凭据保存在你的 Happier 账号中,兼容的后端可以在多台电脑间复用。
  • 机器本地的提供商认证: 有些后端仍依赖提供商原生 CLI 的登录状态。

如果目标机器无法满足提供商或运行环境的要求,交接就无法完成。

支持的提供商(预期情况)

这取决于提供商。

根据当前文档:

  • Claude:支持
  • OpenCode:支持
  • Codex:可用,但稳定性不如 Claude 和 OpenCode

如果某个提供商不支持当前会话的交接,该操作会被隐藏或不可用。

为什么有效(以及什么会失效)

Session handoff 之所以有效,是因为 Happier 把“会话 ID + 转录 + 会话元数据”当作一个整体,只是改变哪台机器是当前的拥有者。

当目标机器实际上无法运行会话所需的东西时,它就会失效:

  • 机器离线
  • 后端未安装或在那里不可用
  • 缺少提供商认证

常见错误

  • 默认打开工作区迁移 → 除非真的需要复制文件,否则保持关闭。
  • 以为交接能解决提供商登录问题 → 不能。请提前准备好目标机器和认证。
  • 想迁移所有权却用了分叉 → 分叉用于分支,交接用于“同一个会话,换一台机器”。

常见问题

会话 ID 会保持不变吗?

会。这正是交接的意义所在。

这和“Attach to session”一样吗?

不一样。Attach 用于在同一台机器的终端中重新打开会话。 交接改变的是拥有会话的机器。

相关指南

mobilesessionshandoffmachinesworkflows
最后更新: 2026-10-26