问题
在 s16_team_protocols/code.py 中,teammate 的 run()进入 idle loop 后,如果收到 plan_approval_response,只会把审批结果追加到 messages,但不会跳出 idle loop。
结果是:Lead 调用 review_plan() 批准或拒绝计划后,teammate 不会立刻继续执行。它会继续等待下一条消息,除非Lead 额外发送一条普通 message。
复现流程
- Lead spawn 一个 teammate。
- teammate 调用
submit_plan。
- Lead 调用
review_plan(request_id, approve=True)。
- teammate 收到
plan_approval_response。
- teammate 将
[Plan approved] Proceed with the task.
写入 messages。
- teammate 继续停留在 idle loop,不会重新调用 LLM。
原因
idle loop 中只有两种情况会跳出:
if shutdown_requested:
break
if non_protocol:
...
break
但 plan_approval_response 属于 protocol message:
if msg.get("type") in ("shutdown_request",
"plan_approval_response"):
should_stop = handle_inbox_message(name, msg, messages)
handle_inbox_message() 处理 plan_approval_response 后返回False,因此:
shutdown_requested == False
non_protocol == []
最终不会触发 break。
影响
plan_approval_response 被记录到了上下文,但没有唤醒teammate。
这会导致 plan approval 协议流卡住:
submit_plan
-> Lead review_plan approve
-> teammate receives approval
-> teammate remains idle
期望行为
收到 plan_approval_response 后,teammate 应该跳出 idle loop,回到外层 while,重新调用 LLM,让模型基于批准或拒绝结果继续行动。
可能修复
让 handle_inbox_message() 对 plan_approval_response 返回一个“需要继续执行”的信号,或者在 idle loop 中单独处理:
if msg.get("type") == "plan_approval_response":
handle_inbox_message(name, msg, messages)
should_resume = True
然后:
同时建议避免 idle loop 跳出后继续追加空的 tool_resultuser message。当前代码在非 tool_use 响应后仍可能执行到:
messages.append({"role": "user", "content": results})
其中 results 可能是空列表。
问题
在
s16_team_protocols/code.py中,teammate 的run()进入 idle loop 后,如果收到plan_approval_response,只会把审批结果追加到messages,但不会跳出 idle loop。结果是:Lead 调用
review_plan()批准或拒绝计划后,teammate 不会立刻继续执行。它会继续等待下一条消息,除非Lead 额外发送一条普通message。复现流程
submit_plan。review_plan(request_id, approve=True)。plan_approval_response。[Plan approved] Proceed with the task.写入
messages。原因
idle loop 中只有两种情况会跳出:
但 plan_approval_response 属于 protocol message:
handle_inbox_message() 处理 plan_approval_response 后返回False,因此:
最终不会触发 break。
影响
plan_approval_response 被记录到了上下文,但没有唤醒teammate。
这会导致 plan approval 协议流卡住:
submit_plan
-> Lead review_plan approve
-> teammate receives approval
-> teammate remains idle
期望行为
收到 plan_approval_response 后,teammate 应该跳出 idle loop,回到外层 while,重新调用 LLM,让模型基于批准或拒绝结果继续行动。
可能修复
让 handle_inbox_message() 对 plan_approval_response 返回一个“需要继续执行”的信号,或者在 idle loop 中单独处理:
然后:
同时建议避免 idle loop 跳出后继续追加空的 tool_resultuser message。当前代码在非 tool_use 响应后仍可能执行到:
其中 results 可能是空列表。