Description:
目前 active_teammates 字典在内部维护了所有活跃 teammate 的名称,但 Lead 侧没有任何工具可以查询该列表。Lead 只能依赖模型自己的上下文记忆来记住之前 spawn_teammate 时使用的名称,然后再通过 request_shutdown、send_message 或 request_plan 等工具显式传入名称。
这会导致以下问题:
- 在长对话或多 teammate 场景下,模型可能遗忘准确的 teammate 名称,导致消息发送到不存在的邮箱,形成消息黑洞。
MessageBus.send 不会校验目标是否存在,错误的消息会静默丢失。
- Lead 无法程序化地确定当前有哪些 teammate 在运行,降低了多 agent 协作的可靠性。
Suggested fix:
添加一个 list_teammates 工具,返回所有活跃 teammate 的名称:
def run_list_teammates() -> str:
if not active_teammates:
return "(no active teammates)"
return "\n".join(f" - {name}" for name in active_teammates)
同时在 TOOLS 和 execute_tool 中注册该工具。
Additional consideration:
MessageBus.send 可增加目标存在性校验,避免消息发往不存在的 agent。
request_shutdown 可支持不传 teammate 参数时对所有活跃 teammate 广播。
此issue是基于网页版Learn Claude Code源码提出
Description:
目前
active_teammates字典在内部维护了所有活跃 teammate 的名称,但 Lead 侧没有任何工具可以查询该列表。Lead 只能依赖模型自己的上下文记忆来记住之前spawn_teammate时使用的名称,然后再通过request_shutdown、send_message或request_plan等工具显式传入名称。这会导致以下问题:
MessageBus.send不会校验目标是否存在,错误的消息会静默丢失。Suggested fix:
添加一个
list_teammates工具,返回所有活跃 teammate 的名称:同时在
TOOLS和execute_tool中注册该工具。Additional consideration:
MessageBus.send可增加目标存在性校验,避免消息发往不存在的 agent。request_shutdown可支持不传teammate参数时对所有活跃 teammate 广播。