不再丢失后续消息:Claude Code、Codex 和 OpenCode 会话的持久队列与中断
一种实用方法:在会话忙碌或离线时从手机发送后续消息,既不丢消息,也不用在笔记里另写一份“影子计划”。
- CLI
- 0.2.17
- 预览 ref
- a2c45c8
意外打乱一个会话的常见原因,并不是发错了指令。
而是在错误的时间发了正确的指令。
会话正忙(或离线/恢复中),你从手机发出一条后续消息,然后会发生以下三种情况之一:
- 消息石沉大海
- 它比预期晚到(会话已经做了一堆决定之后)
- 你不信任它,于是在笔记里写第二份“影子计划”,现在又多了一个协调问题
你想要的是可靠、可预期:
我想安全地把后续消息排队,改变主意时可以编辑,只有真正想“中断”时才立即发送。
简要总结
- 决定你需要什么:
- 等待就绪(待发送)(Pending until ready)(有序、可编辑的后续消息),或者
- 中断并立即发送(Interrupt & send now)(停止当前轮次)
- 如果没有持久队列,稳妥的替代做法是:把后续消息写在别处,确认会话就绪后再发送。
- Happier 是直接解决这个问题的一种选择,它有一个随会话保存的待发送队列(排队、编辑、重新排序、移除、立即发送)。
问题所在(说白了)
当你不在笔记本前时,后续消息就是让工作继续推进的方式。
但大多数工具把“发送消息”当作接收方随时就绪。
现实中,接收方经常处于:
- 轮次进行中
- 断开连接
- 在本地控制和远程控制之间切换
- 从未活动状态恢复
所以你需要一个明确考虑时机的工作流。
常见做法及其权衡
- 直接发,然后祈祷:出乎意料地脆弱。
- 写在笔记或 Slack 里,记得之后再发:可行,但你要管理第二个队列。
- SSH 进机器直接干预:很强大,但这就变成了在手机上做真正的工作。
如果想看这个问题的工业级版本,人们会用持久化工作流引擎(Temporal),或带持久线程和中断的代理编排框架(LangGraph)来解决。
Happier 是一款用于跨设备运行和编排编码代理的开源应用,它的队列是日常可用的实用版本。
如果你第一次接触 Happier(它是什么,在哪里获取)
如果你之前没见过 Happier:它是一款面向 Claude Code、Codex 和 OpenCode 等会话的开源配套应用(移动端/网页/桌面)。
工作流是:会话运行在你信任的机器上,Happier 是你在手机上发送后续消息的地方,会话未就绪时有一个真正的队列。
开始设置:
- 如何在手机上使用 Happier
- GitHub: https://github.com/happier-dev/happier
- 安装/下载: https://github.com/happier-dev/happier#how-it-works
- Discord(社区与支持): https://discord.gg/W6Pb8KuHfg
解决 90% 困惑的两种模式
模式 A:等待就绪(待发送)(Pending until ready)
适用于:
- 你有多个想法
- 你想保持顺序
- 你想在执行前编辑
模式 B:中断并立即发送(Interrupt & send now)
适用于:
- “停下手头的事,先回答这个”
- 安全干预
- 时间紧迫的纠正
陷阱在于把模式 B 当作默认,这会造成反复折腾。
Happier 工作流(待发送队列)
Happier 的待发送队列明确处理关键问题:会话可能还没就绪。
待发送消息:
- 有序
- 可编辑
- 随会话保存
它们显示为:
- 会话列表中的待发送标记
- 会话内的 待发送 (N)(Pending (N))提示
你可以执行的操作:
- 上移/下移
- 编辑
- 移除
- 立即发送
还有一个 已丢弃消息(Discarded messages)区域,用于本地与远程切换等不能自动处理队列的情况。
与引导和接管/本地控制的关系
引导和待发送队列解决不同的问题:
- 引导用于“注入当前进行中的轮次”(在支持时)
- 待发送队列用于“执行前有序、可编辑的消息”
在接管/本地控制流程中,应用发送的消息停留在待发送状态,直到会话准备好恢复远程处理,这是正常的。
故障排查
我的后续消息没有执行
检查:
- 会话是否离线或正在恢复?
- 消息是否停留在待发送中?
- 你当前是否处于本地控制(接管)状态?
我总是不小心中断会话
把默认的消息发送(Message sending)设置改为队列优先的模式,只在有意时才使用立即发送。