[Bug] Orca worker 完成回报卡滞:acknowledge-done 报 WORKER_STATE_CHANGED,lead 会话停住需手动恢复
- Dominant language
- TypeScript
- Stars
- 2.7k
- Forks
- 401
- Avg merge
- 21h 48m
- Merged PRs (30d)
- 776
Description
**提交人**: CC
**客户端版本**: 0.1.57
---
## 现象
Orca 多 worker 协同的 lead 会话中,worker 完成任务后,完成回报未能及时送达 / 未“接上”,lead 会话停在等待状态,需用户手动发「继续」或重新派任务才恢复。
主进程日志在回报送达时报错:
```
[ERROR] Error occurred in handler for 'maker:worker:acknowledge-done':
Error: [WORKER_STATE_CHANGED] worker has an active turn
```
## 复现步骤(据事件时间线推断,未做确定性复现)
1. 本地会话开启 Orca team(lead + worker)
2. lead 向 worker 派任务后,lead 回合正常结束(处于等待 worker 回报状态)
3. worker 完成任务并回报
4. 观察:lead 未自动恢复;主进程日志出现 WORKER_STATE_CHANGED 错误
## 期望行为
worker 完成回报可靠送达 lead,ack 不报状态冲突,lead 收到回报后自动恢复执行。
## 实际行为
- 回报延迟 / 未接上,lead 会话表现为“整个任务停住”
- 回报最终插入 lead 会话时,ack RPC 报 `[WORKER_STATE_CHANGED] worker ... has an active turn`
## 复现频率
偶发:单机、单个长时 lead 会话内单日观察到 4 次,未做系统统计。
## 已尝试的办法
- 手动向 lead 发「继续」→ 可恢复
- 给 worker 重新派合并任务 → 可恢复
## 补充:已排除的关联因素
最初怀疑“自动上下文压缩”中断任务;排查后压缩是设计行为(上下文到阈值自动摘要,压缩点前后任务均可从断点续跑),压缩与回报卡滞只是时间窗重合,非因果关系。
## 诊断摘要(脱敏)
- 单个长时 lead 会话(运行数天),单日出现 4 次 acknowledge-done 错误,与 4 次 worker 回报送达时刻一一对应
- lead 会话内自行记录过:“worker 完成了前一轮但回报没接上”
---
**版本区域**: CN
**OS**: win32 x64 (10.0.19044)
**界面语言**: zh-CN
Contributor guide
Research direction
Start at the main-process handler for `maker:worker:acknowledge-done` and trace the worker-completion and lead-session wake-up flow around the `WORKER_STATE_CHANGED` error. Use the reported lead-plus-worker timeline to investigate the race, then verify that completion acknowledgements arrive without a state conflict and that the lead resumes automatically.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- distributed-systems
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 48/100