不再丢失后续消息:Claude Code、Codex 和 OpenCode 会话的持久队列与中断

一种实用方法:在会话忙碌或离线时从手机发送后续消息,既不丢消息,也不用在笔记里另写一份“影子计划”。

基于版本
CLI
0.2.17
预览 ref
a2c45c8

意外打乱一个会话的常见原因,并不是发错了指令。

而是在错误的时间发了正确的指令。

会话正忙(或离线/恢复中),你从手机发出一条后续消息,然后会发生以下三种情况之一:

  • 消息石沉大海
  • 它比预期晚到(会话已经做了一堆决定之后)
  • 你不信任它,于是在笔记里写第二份“影子计划”,现在又多了一个协调问题

你想要的是可靠、可预期:

我想安全地把后续消息排队,改变主意时可以编辑,只有真正想“中断”时才立即发送。

简要总结

  1. 决定你需要什么:
    • 等待就绪(待发送)(Pending until ready)(有序、可编辑的后续消息),或者
    • 中断并立即发送(Interrupt & send now)(停止当前轮次)
  2. 如果没有持久队列,稳妥的替代做法是:把后续消息写在别处,确认会话就绪后再发送。
  3. Happier 是直接解决这个问题的一种选择,它有一个随会话保存的待发送队列(排队、编辑、重新排序、移除、立即发送)。

问题所在(说白了)

当你不在笔记本前时,后续消息就是让工作继续推进的方式。

但大多数工具把“发送消息”当作接收方随时就绪。

现实中,接收方经常处于:

  • 轮次进行中
  • 断开连接
  • 在本地控制和远程控制之间切换
  • 从未活动状态恢复

所以你需要一个明确考虑时机的工作流。

常见做法及其权衡

  • 直接发,然后祈祷:出乎意料地脆弱。
  • 写在笔记或 Slack 里,记得之后再发:可行,但你要管理第二个队列。
  • SSH 进机器直接干预:很强大,但这就变成了在手机上做真正的工作。

如果想看这个问题的工业级版本,人们会用持久化工作流引擎(Temporal),或带持久线程和中断的代理编排框架(LangGraph)来解决。

Happier 是一款用于跨设备运行和编排编码代理的开源应用,它的队列是日常可用的实用版本。

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

如果你之前没见过 Happier:它是一款面向 Claude Code、Codex 和 OpenCode 等会话的开源配套应用(移动端/网页/桌面)。

工作流是:会话运行在你信任的机器上,Happier 是你在手机上发送后续消息的地方,会话未就绪时有一个真正的队列。

开始设置:

解决 90% 困惑的两种模式

模式 A:等待就绪(待发送)(Pending until ready)

适用于:

  • 你有多个想法
  • 你想保持顺序
  • 你想在执行前编辑

模式 B:中断并立即发送(Interrupt & send now)

适用于:

  • “停下手头的事,先回答这个”
  • 安全干预
  • 时间紧迫的纠正

陷阱在于把模式 B 当作默认,这会造成反复折腾。

Happier 工作流(待发送队列)

Happier 的待发送队列明确处理关键问题:会话可能还没就绪。

待发送消息:

  • 有序
  • 可编辑
  • 随会话保存

它们显示为:

  • 会话列表中的待发送标记
  • 会话内的 待发送 (N)(Pending (N))提示

你可以执行的操作:

  • 上移/下移
  • 编辑
  • 移除
  • 立即发送

还有一个 已丢弃消息(Discarded messages)区域,用于本地与远程切换等不能自动处理队列的情况。

与引导和接管/本地控制的关系

引导和待发送队列解决不同的问题:

  • 引导用于“注入当前进行中的轮次”(在支持时)
  • 待发送队列用于“执行前有序、可编辑的消息”

在接管/本地控制流程中,应用发送的消息停留在待发送状态,直到会话准备好恢复远程处理,这是正常的。

故障排查

我的后续消息没有执行

检查:

  • 会话是否离线或正在恢复?
  • 消息是否停留在待发送中?
  • 你当前是否处于本地控制(接管)状态?

我总是不小心中断会话

把默认的消息发送(Message sending)设置改为队列优先的模式,只在有意时才使用立即发送。

相关指南

mobilemessagesqueueclaudecodexopencodeworkflows
最后更新: 2026-10-26