makecindy / makecindy/cindy

Codex 长上下文请求超过 120 秒无首进度时被误报为网络重连并循环中断

Open
#3,545 3 comments 0 reactions 0 assignees View on GitHub
bug
Dominant language
TypeScript
Stars
2.7k
Forks
395
Avg merge
21h 48m
Merged PRs (30d)
776

Description

**提交人**: 用户4101
**客户端版本**: 0.1.64

---

## 现象

Cindy 桌面端通过 Codex app-server 运行长上下文任务时,如果一次模型请求在约 120 秒内没有产生新的可见进度,客户端会显示:

`Codex app-server has been reconnecting for 120s without making progress; the turn was interrupted automatically.`

随后当前 turn 被强制中断,客户端自动注入恢复消息并重发相同的大上下文,可能形成连续中断循环。错误文案将“模型仍在处理/尚未返回首个进度”描述成“网络重连”,容易误导用户。

## 复现步骤

1. 在 Cindy 桌面端创建 Codex 会话,使用 `gpt-5.6-sol` 与 `xhigh` 推理强度。
2. 在同一线程内执行较长的工具工作流,使请求输入上下文增长到约 148,000–176,000 tokens;期间包含命令、文件变更或图片工具结果。
3. 在某个工具结果返回后继续让模型推理,使下一次模型输出超过约 120 秒才可能产生首个进度。
4. 观察客户端在约 120 秒后中断 turn,并自动投递恢复消息;恢复请求携带相同大上下文,随后可能再次超时。

## 期望行为

- 区分“模型仍在处理”与“app-server/网络传输断开”,不要使用误导性的网络重连文案。
- app-server 仍健康时,不应仅因 120 秒没有用户可见输出就强制中断有效请求。
- 对长上下文或高推理请求使用自适应超时或可靠心跳,并提供“继续等待 / 手动取消 / 压缩上下文”的选择。
- 自动恢复不应无上限重发同一个超大上下文;应检测重复失败并停止循环。

## 实际行为

脱敏日志显示:

- 一个故障线程约 61 MB;最近一次成功 token 记录的输入约 175,996,context window 为 258,400。
- 之后连续 8 次出现 `task_started`,每次约两分钟内没有 reasoning、message 或 tool 输出,随后仅记录 ``,`reason=interrupted`。
- 另一个独立线程在恢复检查点记录约 148,319 context tokens 后也发生相同的 120 秒中断。
- app-server 进程在整个过程中持续响应,同一进程中的其他会话可以正常工作;本地结构化日志未发现相应的 process exit、panic、broken pipe 或 connection reset。
- 将同一当前步骤拆到精简会话,并使用 High 推理强度后,约 37,786 input tokens 的 turn 在约 61.8 秒内正常结束。这说明拆分/降档只能绕过看门狗,并非网络恢复。

## 复现频率

在两个独立会话中复现:旧线程连续 8 次,新线程至少 1 次。大上下文、工具链和高推理强度组合下可稳定触发。

## 已尝试

- 客户端自动恢复与手动继续:重复触发同一循环。
- 优雅停止后恢复同一线程:仍会复现。
- 新建会话:短期有效,但上下文再次增长后复现。
- 拆成单个小任务并使用 High:可以在 120 秒内完成,但会牺牲长任务连续性,不能视为客户端修复。
- 未重启整个 Cindy,因为 app-server 与其他会话均正常,证据不支持全局进程崩溃或网络中断。

以上仅为脱敏摘要,未包含会话 ID、用户路径、账号、业务内容、图片或私有代码。
---
**版本区域**: CN
**OS**: win32 x64 (10.0.19045)
**界面语言**: zh-CN

Contributor guide

Open the contributing guide

Research direction

Start by tracing the Cindy desktop handling for Codex app-server progress, the 120-second reconnect watchdog, and the automatic recovery path that emits task_started and turn_aborted. Reproduce with a large-context, high-reasoning request while checking the structured logs. Done means healthy app-server processing is not treated as a network reconnect and repeated recovery submissions stop safely.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
desktop
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
42/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.