如何在手机上恢复 AI 编程会话:Claude Code、Codex 不用从头再来

不必重新开始就能恢复一个不活跃的会话。讲清“恢复”到底是什么意思、什么时候可用,以及不可用时该怎么办。

基于版本
CLI
0.2.17
预览 ref
a2c45c8

真正让人崩溃的中断往往不是崩溃本身,而是你回来时发现:

  • 会话已经不活跃了,
  • 你仍然想继续它,
  • 但你不确定接下来是恢复同一个会话,还是一不小心开了一个新会话。

在电脑上,这通常能理清楚。在手机上,很容易就放弃,然后从头开始。

所以问题很简单:

继续同一个会话,而不是新开一个,而且要在手机上完成。

常见的办法(SSH、新开会话、复制粘贴摘要)都会丢掉一些东西。

Happier 是一款用于跨设备运行和编排编程代理的开源应用,它严格区分“attach 和 resume”,恢复失败时不会悄悄开启一个新会话。

要点

  • Attach = 重新连接到仍在运行的会话。
  • Resume = 会话不活跃后,重新打开同一个提供商会话(仅在提供商支持时)。

在手机上:

  1. 先判断你属于哪种情况:会话仍在运行(attach),还是已经不活跃(resume)。
  2. 如果你用的是 Happier,打开会话并发送下一条消息。在支持的情况下,它会先尝试恢复。
  3. 如果无法恢复,你需要一个“失败即停止”的工具(不会悄悄开新会话)。在 Happier 中这是默认行为。这时你要么 attach(如果它其实还在运行),要么新开一个会话。

问题

当你用 AI 编程代理做真正的工作时,“会话连续性”决定了你是:

  • 保持节奏,还是
  • 花一个小时重新解释上下文。

但并不是每个提供商的会话都能恢复,也不是每个不活跃的 Happier 会话都能恢复。

所以目标不是“总能恢复”,而是:

清楚自己在恢复什么,不要因为意外开了新会话而让工作分叉。

Attach 和 resume(这能解决大部分困惑)

Attach

当会话仍在本地运行,你只是想重新连接到正在运行的进程时,用 attach。

Resume

当会话已经不活跃,且提供商支持重新打开同一个会话时,用 resume。

在 Happier 中,恢复是一个严格的流程:

  1. 找到已有的 Happier 会话
  2. 检查它在供应商侧是否真的可以恢复
  3. 请求提供商后端恢复同一个供应商会话
  4. 如果失败,显示错误(不会悄悄开新会话)

这种严格是有意为之。它保证了一个会话身份和一个可信的对话记录来源。

会话什么时候可以恢复(需要满足的条件)

只有同时满足以下所有条件,会话才能恢复:

  • 它是一个普通的、由 Happier 管理的会话
  • 它当前不活跃
  • 它没有被归档
  • Happier 在会话元数据中保存了有效的提供商恢复 ID
  • 所选的后端或提供商支持恢复该会话
  • 你的设置没有禁用该后端

只要有一项不满足,Happier 就会把该会话视为不可恢复。

如果你第一次接触 Happier(它是什么、在哪里获取)

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

这里的工作流是:会话仍在拥有它的机器(笔记本 / 服务器 / 开发机)上运行,你在手机上用 Happier 恢复或继续它。

对这篇指南来说,这意味着你可以保持一个会话身份(和一份对话记录),而不是每次会话不活跃就从头再来。

开始设置:

手机上的工作流:恢复不活跃的会话

1) 打开会话

在手机上打开你想继续的不活跃会话。

你通常会看到:

  • 不活跃 + 可恢复 + 机器可访问 → 可以输入,发送消息时会先恢复
  • 不活跃 + 不可恢复 → 无法输入
  • 不活跃 + 机器离线 → 在拥有该会话的机器可访问之前无法输入

2) 发送下一条消息(如果可以输入)

如果会话可以恢复,直接发送下一条提示即可。

Happier 会先恢复提供商会话,再投递你的消息。

3) 如果无法输入,决定接下来怎么做

如果会话无法恢复,你有几个选择:

  • 如果会话其实还在运行:在拥有它的机器上从终端 attach。
  • 如果它真的已经结束:新开一个会话,并附上相关文件或摘要。
  • 如果机器离线:先让机器重新上线。

Codex 说明(为什么恢复有时会出乎意料)

在 Happier 中,Codex 可以通过多种后端运行。

在当前版本的 Happier 中:

  • Codex 默认使用 App Server(有元数据时的常规可恢复路径)
  • 纯 MCP 仍然可以运行新会话,但不是供应商恢复路径
  • 恢复是严格的:Codex 恢复失败时,Happier 不会用新会话代替

所以对 Codex 来说,能否恢复取决于:

  • 会话是否有有效的恢复元数据
  • 当前的后端路径是否支持恢复该会话
  • 机器上是否具备该恢复路径所需的依赖

故障排查

症状:会话不活跃,但我无法输入消息

可能原因:

  • 在供应商侧不可恢复(后端不支持、缺少恢复 ID)
  • 会话已被归档
  • 拥有会话的机器离线或无法访问

解决:

  • 确认机器在线
  • 如果不可恢复,就新开一个会话(不要反复尝试指望它恢复)

症状:我以为会恢复,结果开了一个新会话

在 Happier 中,显式恢复被设计为失败即停止。

如果你感觉像是“新会话”,通常是因为:

  • 你没有恢复,而是新建了一个会话,或者
  • 你重新打开的是直连会话或提供商原生会话,而不是 Happier 管理的同步会话

解决:

  • 再确认一下你操作的是你关心的那个已有 Happier 会话 ID

症状:电脑上能恢复,手机上不行

可能原因:

  • 手机上用的是不同的服务器或配置
  • 手机没有添加或信任同一个服务器

解决:

  • 在手机上切换到同一个服务器或配置,然后重新打开会话

常见问题

重启后还能恢复吗?

有时可以。

能否恢复取决于提供商的支持和保存的恢复元数据,而不是机器是否重启过。只要提供商能重新打开同一个会话,恢复就可能成功。

为什么恢复这么严格?

因为“悄悄开一个新会话”会很快让连续性丢失。失败即停止在当下有点让人沮丧,但它保留了会话的意义。

相关指南

mobilesessionsresumeworkflows
最后更新: 2026-10-26