- CLI
- 0.2.17
- 预览 ref
- a2c45c8
一天结束时常见的场景:
- 会话是在笔记本上开始的。
- 笔记本需要合上(或者快没电、要睡眠、要断 Wi-Fi、要放回包里)。
- 会话不应该停下。它应该继续,只是换一台机器。
这正是会话交接真正要做到的:
同一个会话 ID、同一条主线……只是换了拥有它的机器。
大多数工具没有一个干净的“把整个会话迁移到另一台机器”的流程。
Happier 有,它叫 Session handoff。
简要回答
- 先确定你要做什么:
- 把会话迁移到另一台机器(这样你就能合上笔记本)
- 可选:把工作区也迁移过去(如果目标机器上还没有这些文件)
- 在两台电脑上都设置 Happier(至少让两台都连接到同一个 Happier 服务器)。
- 打开会话,启动 Session handoff(会话标题栏菜单或 会话信息(Session info))。
- 选择目标机器。
- 决定:
- Workspace transfer:默认关闭(更安全)
- 如果是直连会话:选择 Keep direct 还是 Convert to synced
问题
有时限制你的不是“能不能用手机”。
而是“现在是哪台机器拥有这个会话”。
如果会话被错误的机器拥有,一切都会变得别扭:
- 你真正想运行的工具在别处
- 你只是为了换个运行位置就得重建会话
- 连续性丢了(你又得重新解释上下文)
Session handoff 就是干净的“同一个会话,换一台机器”操作。
常见做法及取舍
- 让笔记本睡眠,祈祷会话能撑住: 有时没问题,但不能依赖。
- 在另一台机器上开一个新会话: 能用,但主线断了(还得重新解释上下文)。
- 分叉会话: 想要分支时很有用,但解决不了“让同一个会话在别处继续活着”的问题。
- 用手机 SSH 到笔记本: 能用,但如果你想关掉的正是这台笔记本,这就本末倒置了。
- Happier Session handoff: 保持同一个会话 ID,并迁移当前的拥有者。
如果你第一次听说 Happier(它是什么,去哪里获取)
Happier 是一款面向 Claude Code、Codex 和 OpenCode 等 AI 编码代理的开源配套应用(移动端、网页、桌面)。
这里的工作方式是:在手机上用 Happier 监控和引导会话,而仓库和工作区留在拥有它的机器上。
开始设置:
- 如何在手机上使用 Happier
- GitHub: https://github.com/happier-dev/happier
- 安装和下载: https://github.com/happier-dev/happier#how-it-works
- Discord(社区和支持): https://discord.gg/W6Pb8KuHfg
一套行之有效的工作流(分步)
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 用于在同一台机器的终端中重新打开会话。 交接改变的是拥有会话的机器。