Skip to content

安全重启 Codex TUI 节点:不丢会话、不回退 rollout

重启一个 Codex TUI 人机共存节点时,草率操作会丢掉原来的会话、让 rollout 记录缩水、或把暂停的任务意外续跑。这份清单保证「重启后还是原来那个节点」,而不是「一个同名的新节点」。

一个 Codex TUI 共存节点由三部分组成:app-server(后端会话进程)、TUI(终端界面)、bridge(接 CommHub 的桥)。三者的工作目录、会话 ID、rollout 文件必须在重启后严格一致。「三个进程都起来了」不等于「恢复成功」 —— 一个起在错目录、接错会话、或 rollout 被覆盖的节点,进程齐全却已经不是原来那个。

重启前:逐节点记录一份现状

对每个要重启的节点(按 alias 逐个记,别凭记忆),先落纸五项:

记录项为什么要它
预期工作目录(cwd)TUI、bridge、CommHub 的 project_dir 三处都要对齐到它
完整会话 / thread ID恢复必须 exact;ID 要完整,别截短前缀
rollout 文件绝对路径 + 当前字节数重启后 rollout 不得缩小、不得被换成新文件
goal 暂停状态重启后要保持;不能被自动续跑改写
app-server / TUI / bridge 的完整命令行照原样拉起,任何一处参数漂移都会起成另一个节点

恢复时的六条硬规则

  1. exact 会话,禁猜。完整会话 ID 恢复。禁用「最近一个 session」或短前缀匹配 —— 短前缀会静默命中另一个会话,进程照样起、内容却是别人的。
  2. 凭据只备份、不外泄。 auth 凭据文件先备份一份,复制后把权限收到 0600。凭据绝不进命令行参数、日志或回执 —— 命令行参数会落进 shell history 和 ps 输出。
  3. TUI 显式指定工作目录。 启动 TUI 时显式传 -C <节点工作目录>,不要靠「当前在哪个目录」。
  4. bridge 先进工作目录再起。 启动 bridge 前先 cd 到节点工作目录。CommHub 的 project_dir、TUI 的 -C、节点配置三处必须一致 —— 不一致会让回来的消息落到错的会话上下文。
  5. rollout 不回退。 resume 之前先核 rollout 的大小和内容;重启后它只能持平或增长。一旦缩小或被替换成新文件,说明接错了会话或起了个全新会话,立即停。
  6. 保持原 goal 状态。 原来暂停的 goal 保持暂停;任何「自动续跑」必须立刻暂停。先把节点恢复干净、验收通过,再由人决定要不要继续原任务。

验收:六项全过才算恢复成功

  • [ ] 身份可用 —— 用一个无副作用、固定短回复的登录探针验证(见下),别真派任务
  • [ ] exact 会话已恢复 —— 完整会话 ID 与记录一致
  • [ ] rollout 未回退 —— 字节数 ≥ 重启前,内容未被替换
  • [ ] 工作目录正确 —— cwd == TUI 的 -C == CommHub project_dir == 节点配置
  • [ ] 原任务保持暂停 —— 没有意外的 goal 在跑
  • [ ] 三进程在线 —— app-server / TUI / bridge 都在

🔴 任一项不一致:立即 STOP,修好后重新走完整验收。「进程存在」是六项里的一项,不是结论。

登录探针怎么发

验证「身份能用、会话在」时,用一个固定的、无副作用的探针 —— 让节点回一个约定好的短字符串就够了。不要用真实任务当探针:真任务会写 rollout、改状态、可能触发 goal,验证动作本身就破坏了你要验证的东西。

相关

Powered by Sleep2AGI