task resume 与后台结果注入竞态:拒绝后无到达信号,主会话需人工恢复 #13

Open
opened 2026-10-27 12:26:57 +08:00 by fourbroad · 0 comments
Owner

现象

后台子代理任务(task 工具,background=true)完成后,结果以注入(injection)方式回传主会话。在注入落地之前,对同一 task_id 调用 task(resume=...) 会被拒绝:

Background task result delivery is already in flight — resume again after the injection lands

影响

  • 注入落地前主会话没有任何可观测信号,表面"停滞",只能等用户手动发消息才恢复;
  • 长编排会话(多次后台任务 + 频繁 compact)下中断感被放大,本会话连续两次遇到,每次都需人工干预;
  • 拒绝消息只说"等注入落地",但没给等待上限或到达信号,用户只能盲目重试或干等。

期望(任一即可)

  1. resume 被拒时返回结构化状态(如 in_flight + 预计注入时间/序号),主会话可据此自调度;
  2. 或允许 resume 排队:注入落地后自动重放该轮提示词;
  3. 至少在拒绝消息中给出可观测的等待上限,避免盲目重试。

环境

  • Windows desktop(win32 / PowerShell 5.1)
  • 会话内以 task(background=true) 编排 QMT 执行工程师子代理,任务本身正常完成(state=completed),问题仅在后继 resume 追加指令的窗口期
### 现象 后台子代理任务(`task` 工具,`background=true`)完成后,结果以注入(injection)方式回传主会话。在注入落地之前,对同一 `task_id` 调用 `task(resume=...)` 会被拒绝: > Background task result delivery is already in flight — resume again after the injection lands ### 影响 - 注入落地前主会话没有任何可观测信号,表面"停滞",只能等用户手动发消息才恢复; - 长编排会话(多次后台任务 + 频繁 compact)下中断感被放大,本会话连续两次遇到,每次都需人工干预; - 拒绝消息只说"等注入落地",但没给等待上限或到达信号,用户只能盲目重试或干等。 ### 期望(任一即可) 1. resume 被拒时返回结构化状态(如 `in_flight` + 预计注入时间/序号),主会话可据此自调度; 2. 或允许 resume 排队:注入落地后自动重放该轮提示词; 3. 至少在拒绝消息中给出可观测的等待上限,避免盲目重试。 ### 环境 - Windows desktop(win32 / PowerShell 5.1) - 会话内以 `task(background=true)` 编排 QMT 执行工程师子代理,任务本身正常完成(`state=completed`),问题仅在后继 resume 追加指令的窗口期
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Octopus/octopus-release#13