Skip to content

fix: 修复运行结束后排队消息无法自动发送的问题 - #245

Merged
vastsa merged 1 commit into
vastsa:mainfrom
zszz3:main
Sep 11, 2026
Merged

fix: 修复运行结束后排队消息无法自动发送的问题#245
vastsa merged 1 commit into
vastsa:mainfrom
zszz3:main

Conversation

@zszz3

@zszz3 zszz3 commented Sep 11, 2026

Copy link
Copy Markdown

运行中追加的消息已经持久化进入队列,但当前轮结束后不会自动发送。原因是结束事件触发队列调度时,会话仍被收尾流程占用;持久化完成并释放会话后,没有再次唤醒队列。

本次修复在收尾完成、清除会话占用后重新触发队列调度。正常完成、报错和中止后,追加消息都能按 FIFO 顺序继续发送;等待收尾期间不会提前启动,重复处理结束事件不会重复发送,应用退出时也不会启动新的排队任务。

  • 同步队列架构说明、交互规格及 E2E-011f 场景。
  • 新增确定性回归测试,延迟 session.endTurn 返回,覆盖连续排队、重复结束事件、会话隔离、持久化失败及退出场景。修复前 4 项失败,修复后全部通过。
  • 验证通过:桌面相关测试 17 项、Agent Host 测试 34 项、依赖构建及桌面 TypeScript 类型检查。
  • 按仓库规则未运行本地 E2E,也未手动触发远程 E2E。

Closes #243

@vercel

vercel Bot commented Sep 11, 2026

Copy link
Copy Markdown

Someone is attempting to deploy a commit to the vastsa's projects Team on Vercel.

A member of the Team first needs to authorize it.

@vastsa
vastsa merged commit 7bf05e3 into vastsa:main Sep 11, 2026
1 check failed
@vastsa

vastsa commented Sep 11, 2026

Copy link
Copy Markdown
Owner

原则正确,已合入(merge commit 7bf05e34,保留作者提交 c9369c05)。

问题在当前 main 可复现:agent_end 进入 Agent Host 时会话仍被 finishTurn / activeTurns 占用,队列 drain 提前返回;收尾释放后原先没有再 kick,排队消息会卡住。这次在持久化收尾完成后唤醒 Host 队列,并把 turnFinalizations 纳入 isSessionBusy,与现有 Host 队列 / kick 契约一致。

这是第三方 fork,按仓库规则对 PR head 跑了本地验证:

  • queued-turn-finalization.test.mjs:5/5
  • @pi-desktop/agent-host:34/34
  • @pi-desktop/desktop:1396/1396
  • desktop typecheck:通过
  • pnpm test:e2e(smoke):18/18 通过,2 项 live 因未设置 PI_DESKTOP_TEST_API_KEY 跳过

现有 test:e2e* 脚本都不覆盖 E2E-011f 的排队自动发送(该场景仍是 Draft);这条回归由本次的确定性桌面收尾测试覆盖。plan / boot / supervision / subagents 与本修复无关,未跑。

无后续跟进。关联 #243

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug] Queued prompts do not start after the active turn finishes

2 participants