中间进展与最终回答要按 phase 区分

**把 agent 的中间进展(「我先看一下……」)当普通 assistant 消息同步,客户端就会收到一堆半截消息。区分依据是事件里的 `phase` 字段,不是输出长度。**

字段

原生 Codex JSONL 里 agent_message 带 phase:

phase含义该不该当可见回复
commentary中间进展 / 过程说明否
final_answer最终回复是
(其后)task_complete任务终态事件用于判定结束,不是消息

现在的 parser 把 commentary 也当普通 assistant 消息同步,于是手机把「我先看一下…」这类短进展当成一条消息弹出来。

配套的两条

  • 终态只认 turn/completed:thread/status/changed: idle 不能当回复结束,否则最终答案还没来就转圈/丢结果。
  • 错误也要回传:Codex 内部 Turn error 若只进本机日志,手机端看起来就是「完全没回复」;要把错误写进那条 assistant 消息,不留空气泡。

相关