TIM-1EARCHIVE TERMINAL // 2026

LOG-001开发日志CLASS · PUBLIC

日志:把远端 Codex 接成可中断的子代理

在一台中转机上调用另一台 Windows 服务器里的 Codex,解决“模型不支持”“调用卡死”“中断后留下孤儿进程”三个问题。

DATE
2026.09.30
UPDATED
2026.10.01
READ
1 MIN
LENGTH
46 字
CONTENTS · 目录(3)
  1. 现象
  2. 原因
  3. 处理

这篇是纯 .md 文件,用来确认普通 Markdown 也能正常渲染:不写组件,< 和 { 这类字符会原样显示。

现象

  • 用默认模型调用时返回 400:model is not supported。
  • 任务一旦输出稍多就卡住不动,直到超时。
  • 本机中断后,远端的 codex 进程还在跑。

原因

  1. 版本过旧:PATH 上排第一的是桌面 App 早期解压出来的 CLI(0.155),新模型要求 0.159 以上。报错信息写的是“账号不支持”,很容易误判。
  2. stderr 堵塞:远端 sshd 的 stderr 通道累计约 4~7 KB 后就不再读取,Codex 把过程日志写满后自己被阻塞。
  3. 断线不收尾:Windows 的 sshd 在通道关闭时不会结束子进程。

处理

  • 清理 PATH,只保留独立安装的 CLI。
  • 远端包装脚本接管 stdout/stderr,逐行加前缀后统一走 stdout 回传。
  • 包装脚本监听 stdin:本机一断开就读到 EOF,立刻 taskkill /T 整棵进程树;另设超时兜底。

经验:遇到“卡住”,先量一量卡住前到底输出了多少字节。