agents24 仓库 Agent Teams 插件实战:详解 /team-status 命令的团队成员、任务状态与进度监控
在 Agent Teams 插件 中,/team-status 是观察一个运行中多 Agent 团队的核心窗口:它解析团队名与过滤参数、从本地团队配置目录读取成员清单、调用 TaskList 拉取任务状态,并以成员表、任务表或原始 JSON 三种形式呈现团队进度。读完本文,你将掌握 /team-status 的完整参数用法与输出格式、它依赖的 ~/.claude/teams/{team-name}/config.json 配置结构,以及如何在 task-coordination-strategies 技能指导下基于状态输出做负载不均诊断与任务再平衡。
前置环境:Agent Teams 是实验特性
/team-status 依赖 Claude Code 的实验性 Agent Teams 功能,使用前必须完成 README 中列出的两项设置:
- 启用实验特性标志:
export CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1
- 在
~/.claude/settings.json中配置 teammate 显示模式:
{
"teammateMode": "tmux"
}
可选显示模式有三种:"tmux"(每个 teammate 运行在一个 tmux 窗格中,推荐)、"iterm2"(每个 teammate 一个 iTerm2 标签页,仅 macOS)、"in-process"(teammate 与主会话同进程,默认)。插件本身通过 /plugin install agent-teams@claude-code-workflows 安装。
命令签名与参数:解析 $ARGUMENTS
命令文件 team-status.md 的 frontmatter 声明了参数提示:
argument-hint: "[team-name] [--tasks] [--members] [--json]"
Phase 1(Team Discovery)要求 Agent 先解析 $ARGUMENTS,规则如下:
- 团队名 — 若显式提供则直接使用;若未提供,检查
~/.claude/teams/目录下的活跃团队;若存在多个团队且未指定名字,则列出全部团队并请用户选择; --tasks— 只显示任务详情;--members— 只显示成员详情;--json— 输出原始 JSON 而不是格式化表格。
解析完成后,状态收集分两步:
- 使用 Read 工具读取
~/.claude/teams/{team-name}/config.json获取团队配置; - 调用
TaskList工具获取当前任务状态。
这个「配置读文件 + 状态读工具」的两源设计值得注意:config.json 回答「团队由谁组成」,而 TaskList 回答「现在进行到哪一步」。前者是静态结构信息,后者是动态运行信息,两者合起来才构成完整的团队状态视图。
团队成员的发现机制:config.json 结构
config.json 是 Agent Teams 的持久化目录,/team-status 以及 /team-delegate、/team-shutdown 等命令都以它为成员发现的唯一入口。team-communication-protocols 技能 给出了它的结构:
{
"members": [
{
"name": "security-reviewer",
"agentId": "uuid-here",
"agentType": "team-reviewer"
},
{
"name": "perf-reviewer",
"agentId": "uuid-here",
"agentType": "team-reviewer"
}
]
}
从源码结构看,该技能同时给出了一条强约束:一律使用 name 字段做消息与任务指派,永远不要用 agentId、角色名或未加后缀的别名。若某成员因名称冲突被加后缀(例如 team-lead-2),消息必须发给 team-lead-2 而不是 team-lead。team-spawn 命令 在创建阶段也强调了这一点:不要用 team-lead 这类角色名作为 spawn 出的成员名,团队创建过程可能占用角色化名称,应使用 Agent 工具实际返回的名字,并始终以 config.json 中列出的名字为准。
这意味着在 /team-status 的成员表中,看到的名字就是后续 /team-delegate --assign、SendMessage 应当使用的名字——状态输出实际上兼任了「身份注册表」的角色。
成员表输出:Name / Role / Status 三列
Phase 2(Members Table)要求为每个团队成员展示当前状态,格式如下(摘自 team-status.md):
Team: {team-name}
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Members:
Name Role Status
─────────────────────────────────────────
security-rev team-reviewer working on task #2
perf-rev team-reviewer idle
arch-rev team-reviewer working on task #4
三列的语义:
| 列 | 来源 | 含义 |
|---|---|---|
| Name | config.json 的 members[].name |
成员唯一标识,后续消息/指派必须使用 |
| Role | config.json 的 members[].agentType |
该成员对应的 Agent 类型(如 team-reviewer) |
| Status | TaskList 实时推导 |
working on task #N 或 idle |
Status 列是「计算」出来的字段:成员名下若有 in_progress 任务则标记为 working on task #N,否则标记为 idle。这与 task-coordination-strategies 技能 中的负载监控指标直接对应——「Teammate idle, others busy」即负载不均信号,「Teammate stuck on one task」即潜在阻塞信号。也就是说,/team-status 的成员表本身就是工作负载再平衡的判断依据。
插件提供的四种角色(team-lead、team-reviewer、team-debugger、team-implementer)分别对应编排者、多维度评审者、假设调查者和文件归属受限的并行实现者,详见 README 的 Agents 表。其中 team-reviewer 的 frontmatter 还展示了 tools: Read, Glob, Grep, Bash, TaskList, TaskGet, TaskUpdate, SendMessage 这样的受限工具白名单——这提醒我们,如果自定义 Agent 使用受限工具列表,TaskList、TaskGet、TaskUpdate、SendMessage 必须显式列入,否则成员既无法更新任务状态,也无法被 /team-status 的推导正确反映(该技能在 Troubleshooting 一节专门列出了这一故障模式)。
任务表输出:状态、负责人、依赖与进度百分比
任务表(Tasks Table)展示每个任务的状态、负责人与主题,示例如下:
Tasks:
ID Status Owner Subject
─────────────────────────────────────────────────
#1 completed security-rev Review auth module
#2 in_progress security-rev Review API endpoints
#3 completed perf-rev Profile database queries
#4 in_progress arch-rev Analyze module structure
#5 pending (unassigned) Consolidate findings
Progress: 40% (2/5 completed)
任务状态的取值与 task-coordination-strategies 技能 中的 blockedBy/blocks 依赖体系一致,任务依赖用 TaskCreate + TaskUpdate: { taskId: "3", addBlockedBy: ["1", "2"] } 建立。从源码结构看,任务表还承载了依赖诊断职责:示例中 #5 Consolidate findings 处于 pending (unassigned) 状态,典型的阻塞场景——它需要等 #2、#4 两个 in_progress 任务完成。team-delegate 命令 的 Delegation Dashboard 也专门设有 "Blocked Tasks" 区块(如 #6 Blocked by #4 (in_progress, owner: implementer-1)),两者共用同一份 TaskList 数据源。
Progress 行的计算规则从示例可直接读出:Progress: 40% (2/5 completed) 即「completed 任务数 ÷ 总任务数」,向下取整到 10% 粒度。这个百分比只统计 completed,不含 in_progress,因此在任务收尾阶段会显得偏保守。
--json 模式:面向脚本与自动化的原始输出
设置 --json 时,命令不渲染表格,而是直接输出原始团队配置与任务列表的 JSON。这一模式的实际价值在于:
- 可被外部工具消费 — 状态解析不再依赖对表格对齐的脆弱正则,便于写 CI 步骤或本地脚本判断「团队是否卡住」;
- 字段保真 — config.json 中的
agentId、agentType与 TaskList 的完整任务字段都原样保留,格式化表格会丢弃这些细节; - 与其他命令串联 —
/team-delegate --assign task-id=member-name和/team-shutdown同样读取同一份 config 与TaskList,JSON 输出可以作为它们的输入依据。
状态监控在团队工作流中的位置
/team-status 并非孤立命令,它是 team-lead Agent 的生命周期协议 中「Monitor」环节的用户侧入口。team-lead 的 Team Lifecycle Protocol 将团队生命周期分为七步:Spawn(TeamCreate + Agent 工具)→ Assign(TaskCreate/TaskUpdate)→ Monitor(定期 TaskList,响应成员消息) → Collect → Synthesize → Shutdown(逐个发送 shutdown_request)→ Cleanup(TeamDelete)。README 的最佳实践第 4 条明确建议「Monitor with /team-status — Check progress regularly and use /team-delegate --rebalance if work is uneven」,第 6 条建议保持 2–4 人的小规模团队。
基于 /team-status 输出,推荐的诊断—处置闭环是:
- 运行
/team-status(或/team-status <team> --json)读取成员与任务两表; - 对照负载不均信号表(idle、stuck、blocked、单成员 3 倍负载)识别问题;
- 若存在不均,运行
/team-delegate --rebalance,它会统计每位成员的in_progress + pending assigned任务数,标记 0 任务为 idle、3+ 任务为 overloaded,并生成迁移建议(如 "Move task #5 from implementer-1 to implementer-3"),经用户确认后通过TaskUpdate+SendMessage执行; - 全部任务完成或需提前结束时,使用
/team-shutdown优雅收尾,而不是手动杀进程;--force可跳过等待、--keep-tasks可在清理后保留~/.claude/tasks/{team-name}/下的任务清单供事后复盘。
小结
/team-status 的全部技术面可以归纳为一条数据流:解析 [team-name] [--tasks] [--members] [--json] → 读取 ~/.claude/teams/{team-name}/config.json 获得成员结构 → 调用 TaskList 获得任务动态 → 渲染成员表(Name/Role/Status)、任务表(ID/Status/Owner/Subject + Progress)或原始 JSON。它的关键约束在于:成员身份一律以 config.json 中的 name 为准(冲突时带后缀);状态字段由任务推导而来,因此任务白名单(TaskList/TaskGet/TaskUpdate 等)是否配置在 Agent 的 tools 里,直接决定了状态与协调链路的可用性。理解了这条数据流,再配合 /team-delegate --rebalance 与 /team-shutdown,即可覆盖从「观察」到「干预」再到「清理」的多 Agent 团队运维全链路。
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0624
Hy4-previewHy4 preview 是由腾讯混元团队研发的新一代混合专家(MoE)旗舰模型。模型总参数量 770B,每个 token 激活 49B,主干共包含78层,第一层采用标准 FFN,其余 77 层均为 MoE 结构,每层包含 256 个路由专家与 1 个共享专家,每个 token 激活 top-8 路由专家及共享专家。主干之外原生内置 1 层 MTP(总参数量 10B,激活 0.7B)以支持投机解码。Python00
GLM-5.3GLM-5.3 与 GLM-5.2 使用相同的基座模型——所有提升均来自后训练。与 GLM-5.2 相比,它在复杂编程和长程任务上的表现显著提升。Jinja00
GLM-5.3-FlashGLM-5.3-Flash (320B-A18B),是GLM-5系列的首个原生多模态模型。320B总参数,能力超过GLM-5.2Jinja00
Spark-X2.5-4BSpark-X2.5-4B 旨在让强大的 AI 更实用、更高效、更易获得。在广泛日常任务中表现强劲,涵盖对话、写作、翻译、推理、编码、工具调用以及智能体工作流,并在同等规模的开源模型中取得领先成绩。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00
Spark-X2.5-1.7BSpark-X2.5-1.7B 旨在让强大的 AI 更加实用、高效且易于获取。这些模型在广泛的日常任务中表现出色,涵盖对话、写作、翻译、推理、编程、工具调用和智能体工作流,并在同等规模的开源模型中取得领先结果。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00