问题
botmux delete all 可能打印所有会话均已关闭、会话表也变为空,但原 session 的 tmux/Codex 进程仍继续运行,形成无持久记录的孤儿进程。
本次 Linux 实测中:
- CLI 输出“已关闭 16 个会话”;
botmux list --plain 随后显示没有活跃会话;
- 仍有 42 个携带
BOTMUX_SESSION_ID / BOTMUX=1 的 Codex 及子进程存活;
- 对应进程由旧的默认 tmux server 持有;当前 PATH 中的 tmux client 与该 server 版本不兼容,命令返回
server version is too old for client;
- 手工按 BotMux 环境标记终止对应进程组后才能真正清空。
风险
- 用户看到成功结果,但模型进程仍占用 CPU、内存及可能的凭证/工作目录。
- session row 已关闭后,后续清理缺少可靠所有权入口。
- 批量关闭把多个失败隐藏成全成功,运维无法感知残留。
代码线索
TmuxBackend.killSession() 捕获并吞掉所有 tmux 错误;live worker close 路径可能随后把 row 标为 closed。workerless/offline 路径已有 post-kill probe,但 live worker 路径仍可能在 backing teardown 失败后失去持久所有权记录。
期望
- 显式关闭必须在确认 BotMux-owned backing 已终止后才报告普通成功;无法确认时 fail closed 或返回可见 residual。
delete all 汇总中应包含失败/残留计数,而不是仅显示“已关闭 N 个会话”。
- 兼容 tmux client/server 版本不匹配、socket 不可达等错误,并避免误杀用户自有 tmux pane。
- 增加真实 tmux 或受控 fake-tmux 回归测试,证明关闭失败不会丢失可重试的 session ownership。
问题
botmux delete all可能打印所有会话均已关闭、会话表也变为空,但原 session 的 tmux/Codex 进程仍继续运行,形成无持久记录的孤儿进程。本次 Linux 实测中:
botmux list --plain随后显示没有活跃会话;BOTMUX_SESSION_ID/BOTMUX=1的 Codex 及子进程存活;server version is too old for client;风险
代码线索
TmuxBackend.killSession()捕获并吞掉所有 tmux 错误;live worker close 路径可能随后把 row 标为 closed。workerless/offline 路径已有 post-kill probe,但 live worker 路径仍可能在 backing teardown 失败后失去持久所有权记录。期望
delete all汇总中应包含失败/残留计数,而不是仅显示“已关闭 N 个会话”。