What happened?
clawteam inbox broadcast 广播消息后,团队成员(architect、engineer、ux-designer)运行 clawteam inbox receive <team> 时报告"没有新消息",但实际上消息文件已经正确写入各成员的 inbox 目录。
根因分析:
主 agent 调用 clawteam inbox receive rp-tavern(不带 --agent 参数)时,流程如下:
AgentIdentity.from_env() 返回 agent_name='agent'(主 agent 的 CLI 身份)
TeamManager.resolve_inbox('rp-tavern', 'agent', '') 查询团队配置,发现 'agent' 不是团队成员,返回原名 'agent'
MailboxManager.receive('agent', ...) 查找 ~/.clawteam/teams/rp-tavern/inboxes/agent/ → 空的
而 clawteam inbox broadcast 发送消息时,会排除发送者自己(主 agent),只发给注册的团队成员(architect、engineer、ux-designer)。消息正确写入了三人的 inbox,但 receive 命令跑去了空的 agent/ 目录查找。
结论: receive 在调用者身份不是团队成员时,静默地查找了错误的 inbox,而不是回退到 leader 的 inbox 或报错。
Steps to reproduce
环境: 已有至少 3 名团队成员(architect、engineer、ux-designer)的 rp-tavern 团队
复现步骤:
- 主 agent(或任意非团队成员身份的 agent)向团队广播消息:
clawteam inbox broadcast rp-tavern "测试消息"
- 确认消息文件已写入(直接查看 inbox 目录有内容):
ls ~/.clawteam/teams/rp-tavern/inboxes/architect/
cat ~/.clawteam/teams/rp-tavern/inboxes/architect/*.json | jq
- 在某成员终端运行
clawteam inbox receive:
clawteam inbox receive rp-tavern
- 输出:
没有新消息。(实际消息已存在于 inbox 目录)
变通方法: 使用 --agent 指定收件人可正常读取:
clawteam inbox receive rp-tavern --agent architect
Environment
- OS: Ubuntu 24.04.4 LTS (Noble Numbat)
- Python version: Python 3.12.3
- ClawTeam version: v0.3.0+openclaw1
- OpenClaw version: OpenClaw 2026.4.11 (769908e)
- Spawn backend: tmux (tmux 3.4)
Relevant logs or error output
## Proposed Fix
**方案一(推荐 — 改动最小的修复):**
在 `commands.py` 的 `inbox_receive` 函数中,当 `resolve_inbox` 返回的名称不是团队成员时,回退到 leader 的 inbox:
# After resolve_inbox, check if it's actually a member
member = TeamManager.get_member(team, agent_name, identity.user)
if member is None:
leader_inbox = TeamManager.get_leader_inbox(team)
if leader_inbox:
agent_name = leader_inbox # Fall back to leader's inbox
**方案二(团队设置修复):**
在创建团队时,确保主 agent(spawner)的身份被注册为团队成员,或在 `resolve_inbox` 返回非成员名称时输出明确提示(而不是静默返回原名)。
**方案三(文档补充):**
在 README 中说明:主 agent 调用 `receive` 时需要使用 `--agent` 参数指定目标成员 inbox。
What happened?
clawteam inbox broadcast广播消息后,团队成员(architect、engineer、ux-designer)运行clawteam inbox receive <team>时报告"没有新消息",但实际上消息文件已经正确写入各成员的 inbox 目录。根因分析:
主 agent 调用
clawteam inbox receive rp-tavern(不带--agent参数)时,流程如下:AgentIdentity.from_env()返回agent_name='agent'(主 agent 的 CLI 身份)TeamManager.resolve_inbox('rp-tavern', 'agent', '')查询团队配置,发现'agent'不是团队成员,返回原名'agent'MailboxManager.receive('agent', ...)查找~/.clawteam/teams/rp-tavern/inboxes/agent/→ 空的而
clawteam inbox broadcast发送消息时,会排除发送者自己(主 agent),只发给注册的团队成员(architect、engineer、ux-designer)。消息正确写入了三人的 inbox,但receive命令跑去了空的agent/目录查找。结论:
receive在调用者身份不是团队成员时,静默地查找了错误的 inbox,而不是回退到 leader 的 inbox 或报错。Steps to reproduce
环境: 已有至少 3 名团队成员(architect、engineer、ux-designer)的 rp-tavern 团队
复现步骤:
clawteam inbox broadcast rp-tavern "测试消息"clawteam inbox receive:没有新消息。(实际消息已存在于 inbox 目录)变通方法: 使用
--agent指定收件人可正常读取:Environment
Relevant logs or error output