watch-codex-session 是做什么的?
一个 Codex 技能和 tmux 看门狗,可在 429 错误、阻塞或停止状态后恢复交互式 Codex 会话。
概述
watch-codex-session 是一个轻量级守护进程,它监控 tmux 中运行的 Codex 会话。当会话因 API 限流(HTTP 429)、终端阻塞或意外停止而中断时,它会自动重新启动或恢复对话,确保编码工作流持续进行。
工作原理
- 在 tmux 会话中启动 Codex 代理。
- 周期性地检查会话是否仍处于活动状态且响应正常。
- 如果检测到 429 错误或会话停止,则自动终止旧会话并启动新会话(保留上下文)。
- 可选的恢复机制会在重启时重新加载之前的对话历史。
安装
前置要求
- tmux(版本 >= 3.0)
- Python 3.8+
- Codex CLI 已安装并配置
步骤
- 将技能克隆到本地:
git clone https://github.com/huzhongyyuan/watch-codex-session.git
cd watch-codex-session
- 安装 Python 依赖:
pip install -r requirements.txt
- 将
watch-codex-session脚本添加到 PATH 中,或直接从项目目录运行。
使用
基本用法
在 tmux 会话中启动看门狗:
python watch_codex_session.py --session-name my-codex-session
高级选项
| 选项 | 描述 | 默认值 |
|---|---|---|
--session-name | tmux 会话名称 | codex-agent |
--check-interval | 健康检查间隔(秒) | 30 |
--max-restarts | 最大重启次数 | 5 |
--restore-context | 重启时恢复对话历史 | false |
作为后台服务运行
nohup python watch_codex_session.py > watchdog.log 2>&1 &
配置
通过环境变量自定义行为:
| 变量 | 描述 |
|---|---|
CODEX_SESSION_NAME | 要监控的 tmux 会话名称 |
CODEX_RESTORE_FILE | 会话状态保存文件路径 |
CODEX_MAX_RESTARTS | 放弃前的最大重启次数 |
平台支持
- Linux(Ubuntu 20.04+,CentOS 7+)
- macOS(10.15+)
- Windows(通过 WSL2)
故障排除
-
问题: 看门狗未自动启动 Codex。 解决方案: 确保 Codex CLI 已在 PATH 中,且 tmux 已正确安装。
-
问题: 429 错误后会话未恢复。 解决方案: 检查网络连接,并验证 API 密钥是否有效。
许可
MIT 许可证。