以"管理者—执行者"模式运维 agent-switchboard MCP:受管 Claude supervisor 生命周期、跨模型委派(Codex/Claude/Gemini)、验收纪律与已知陷阱对策。 用于存在任一可用委派通道(mcp__agent-switchboard__* 工具或宿主原生 subagent),且用户要求委派执行、监督长任务、跨模型审查、回收多 agent 会话成果,或询问"怎么让 Codex/Claude 帮我做"的场景。 不用于单会话即可完成的普通修改;未安装 agent-switchboard 时仍可经原生 subagent 通道触发,但不要猜测工具名。
69
85%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
本 Skill 是使用 agent-switchboard MCP(本地跨 agent 协作桥)的操作契约,全部经验来自真实生产使用的事故与验收记录。只负责编排规则;任务本身的修改纪律交给 minimal-implementation,范围澄清交给 clarify-before-change。
触发边界:存在任一可用委派通道即可触发;随后按任务类型进入相应路由:
mcp__agent-switchboard__* 工具,或宿主原生委派机制(如后台 subagent);task-mode-router 判级,不由"我已经在做了"反推:判为中型及以上的动手操作(调查、读大量文件、编码、改配置、跑构建/测试/数据扫描、Git 提交)委派给受管执行者;判为小型的单会话修改可直接最小修改并验证。执行前记录所选路由与理由(写入派工单或 broker 记录)。git show/git diff --check、读文件核对哈希/行号/输出。禁止实现、提交、扩大调查范围。close_supervisor / stop_managed_claude_supervisor,不得长期悬挂闲置窗口。按以下顺序判定,命中即停;执行前记录所选路由与理由:
task-mode-router 判级为小型的单会话修改,不走任何委派,直接最小修改并验证。route_agent_task / consult_* / queue_*_request 走 broker。start_managed_claude_supervisor 受管执行。用户成本偏好:计费 token 与订阅额度并存时,在任务适配、真实可用性和授权边界均满足的前提下优先 MCP 路由(省钱);不得以此绕过最小权限、认证失败停机或破坏性操作上报规则。
降级通道的能力差异要如实告知用户:宿主 subagent 没有 broker 的事件流、归档和跨会话续接能力;长任务可建议用户安装 agent-switchboard(安装属高风险操作,需明确授权)。
受管 supervisor 与 DSH 会话(goal 模式)是两套执行引擎,但应共用一套监督协议—— 业界共识(Langfuse/LangSmith/OTel/Temporal):观测平台只负责记录,"每个执行器都必须 适配同一组事件与状态字段",而不是为每个执行器发明一套监督方式。 来源:https://langfuse.com/docs/observability/data-model、 https://docs.langchain.com/langsmith/annotate-code、 https://github.com/open-telemetry/semantic-conventions-genai/blob/main/docs/gen-ai/gen-ai-agent-spans.md、 https://github.com/temporalio/documentation/blob/main/docs/develop/go/activities/timeouts.mdx
三要素监督协议(对任何执行者都检查这三项,不区分 executor_type):
| 要素 | 受管 supervisor | DSH 会话(session-supervisor 插件) |
|---|---|---|
| ① 事件 | wait_supervisor_event(turn_completed/stall/error) | 会话事件流(turn/end、tool/call)+ 摘要注入 |
| ② 摘要 | broker agent_events(executor_type 区分来源) | 回合摘要注入(含思考行,deepseek 系) |
| ③ 超时兜底 | stall_timeout_seconds → stall 事件 | 插件回合内超时看门狗(turnTimeoutMinutes) |
执行规则:
agent_events 表(executor_type 列:cli/supervisor/session/subagent);start_managed_claude_supervisor,提供具体 objective、明确 policy(里程碑、安全红线、验收规则)、稳定 supervisor_id。默认 decision_mode=record_only,除非用户要求 Codex 决策。send_to_managed_claude_session 发送有界任务切片(一次一个可验收的增量),不发开放式大目标。
wait_supervisor_event 长轮询等待材料事件;进度可见性来自 wait 本身。禁止自建 cron 或轮询循环做监控。close_supervisor 写入归档摘要(做了什么、证据、风险、下一步),供跨会话续接。根因:2026-08-24 会话 9 个 supervisor 在验收完成后仍悬挂(leaderboard-reground、impact-gold-rootcause-audit、taskflow-dashboard-update 等全部
attention_required、daemon+claude 存活)。"及时关闭"规则早已存在,缺的是执行拦截——人工"记得 close"不可靠。
收尾不是靠记忆,是靠看门狗兜底:
close_supervisor 归档摘要,这是验收流程第 5 步的自然延续。start_managed_claude_supervisor 必填 stall_timeout_seconds(300~600),超时无 token 自动产出 stall 事件供处置。list_managed_claude_supervisors 检查本项目存活 supervisor;任务已完成但仍存活的立即 close;attention_required 的先收集最终结果再关闭。daemon_alive=false 但状态非终态(stopped/failed)的 supervisor 会带 stale_uncollected: true——daemon 已死无法回收,状态残留;出现时在 checkpoint 登记后清理状态记录,不让它永久残留。route_agent_task / queue_cli_request 派发同一 artifact 的返修时,必须传 chain_key=<artifact 稳定 id>(同一链同 key);broker 对同一 chain_key 计数 ≥3 时直接拒绝(chain_budget_exceeded)。若收到该错误:停止该链,重新设计合同(或升级决策),并在验收报告记录 repair_rounds。参照 GitLab retry:max/Jenkins retry(N) 的收敛上限思想。stop_managed_claude_supervisor 并在 checkpoint 记录,由下一会话续接,而不是长期悬挂。反模式:2026-08-24 会话
wait_supervisor_event(180s)每次超时返回后立即夹一次get_managed_claude_supervisor,形成 WAIT→GET 轮询循环,连续 44 分钟无看门狗、无用户可见检查时间。
wait_supervisor_event 超时返回 ≠ 有事件:直接再次 wait(since_seq 推进到最新已知 seq),禁止在两次 wait 之间夹 get_managed_claude_supervisor / list_managed_claude_supervisors 查询;stall_timeout_seconds 的事件驱动兜底,而不是人工每 3 分钟查一次。反模式:2026-08-22 监督会话 pollCount=305(
request_status×96、list_agents×265、job_list×15、get_goal×25)——监督者反复调用轻量状态查询工具"看进度",而非转入单次长轮询。AGENTS.md 模块七/八已确立纪律,这是规则确立后的执行回归(见 evolution-inbox 提案 #1)。业界共识(AWS SQS Long Polling / LangGraph event streaming / Claude SDK streaming 等):等待应靠"任务句柄 + 单次阻塞等待/事件流 + 超时恢复",polling 仅限调试。
wait_supervisor_event / request_result(wait_seconds=60~120) / job_output(wait=true) 单次挂起;request_status / job_list / list_agents / get_goal / get_topic_status / get_cli_requests / get_codex_requests 等,仅在派发后第一次确认"请求已入队/已存在"时可调用一次;确认后必须转入对应的长轮询工具;scripts/evolution_scan.js 检测并写入 evolution-inbox;route_agent_task(target_model=...) 直接分发。gpt-5.6-luna、gemini-3.7-flash),两者互为热备;除非用户显式要求前沿档(sol/fable),否则禁止使用昂贵模型。web_search 灌入脏网页,优先委托带搜索能力的执行层 Worker(如 gemini-3.7-flash via CPA)处理并回收提炼摘要。web_search 工具(web-search-deepseek provider)需要 DeepSeek 官方 API key;未配置或调用失败时不阻塞,改用已登录的 CLI worker 联网搜索:queue_cli_request(backend=codex_cli, target_model=gpt-5.6-luna, effort=medium, prompt="联网搜索…返回URL") → 单次 request_result(wait_seconds=120) 回收。零新增成本、复用已有订阅额度;代价是 1~3 分钟延迟与结构化提示词约束。完整可复制模板见 examples/web-search-via-cli-worker.md。gpt-5.6-sol max 档),mode=read-only;评审意见作为返修指令来源。consult_gemini / route_agent_task(target_agent="gemini") 走 Gemini CLI 或 Gemini API;适用咨询类任务,与 Codex/Claude 同属异厂咨询通道。acceptEdits,实现类委派先以默认最小权限启动;bypassPermissions 仅在用户明确授权且目标范围受控(有界目录、红线已写入 policy)时才升级使用。examples/delegate-implementation.md。store_shared_context 压缩传递,接收方按需 retrieve_shared_context,不要把完整转录粘贴进提示词。queue_codex_request 等)用 request_result 长轮询收取,并在汇报中区分"请求的模型"与"实际应答的模型"。| 陷阱 | 症状 | 对策 | 来源 |
|---|---|---|---|
| 权限模式误配 | 受管会话读项目根外文件时空转,等不到人工批准;或 worker 落在只读会话拒绝执行 | 默认用 broker 的保守默认 acceptEdits 启动;仅当用户明确授权且目标范围受控时才升级 bypassPermissions(受管窗口无人可点批准);遇到认证类失败停止上报,不得自行升级绕过 | broker 实现依据(默认 acceptEdits)+ 来自 2026-08-18 生产复盘,本仓库无可复核测试 |
| git 写操作无人批准卡死 | acceptEdits 下 git add/commit/tag 触发人工批准请求,受管窗口无人可批 → 只能被迫升级 bypassPermissions | 优先用 allowed_tools 命令级白名单(如 ["Bash(git add:*)","Bash(git commit:*)","Bash(git tag:*)","Read"]),引擎强制拒绝白名单外命令且无需人工批准;bypassPermissions 仅作最后手段 | 2026-08-24 生产复盘(leaderboard-source-freeze 卡死);实现有单测覆盖 |
| memory 等无关 MCP 反复调用 | policy 文字禁止无效,模型仍尝试调用 mcp__memory_server__* | 只读/文件类任务启动时用 mcp="none" 硬禁用全部 MCP(--strict-mcp-config 空配置),工具不存在即不可能被调用;需要特定 MCP 时再显式放开 | 2026-08-24 生产复盘(两次 supervisor 均撞 memory);实现有单测覆盖 |
| 客户端超时假死 | 大上下文请求被客户端掐断,但上游实际健康 | 为执行者客户端配置长超时(如 Claude 的 API_TIMEOUT_MS=600000),注意只对新进程生效 | 来自 2026-08-18 生产复盘,本仓库无可复核测试 |
| MCP超时与惊群重试 | 同步调用长任务触发 MCP 32001,误判通道死亡,连发多个新请求打瘫队列 | 耗时任务强制改用异步队列(queue_* 拿 ID)+ 单次 request_result(wait_seconds=60~120) 挂起;遇超时先查在途队列接管 ID,严禁重发或并发切换通道 | 2026-08 生产复盘与治理闭环 |
| 微小差异套娃核验 | 回收两路结果后因次要格式或模型标识微差推翻一切,再次拉 Subagent 全量重查 | 实行 Diff-Only 收敛门禁:共识部分直接锁定,仅对有实质冲突的单一事实/公式发微探针,禁止全盘重推 | 2026-08 生产复盘与治理闭环 |
| 上游配额耗尽 | 事件流反复 api_retry / api_retry_exhausted 且含 rate_limit | 报告用户并暂停,切换上游/接口后重试;禁止无限重试 | broker 实现/测试依据(supervision 事件流含 api_retry_exhausted) |
| 多窗口消息串线 | 中断一条消息时它可能已送达另一窗口 | 中断前确认目标窗口;返修时先核对提交归属再决定 reset | 来自 2026-08-18 生产复盘,本仓库无可复核测试 |
| 闲置窗口悬挂 | supervisor 完成但长期不关闭(2026-08-24 一次 9 个悬挂) | 验收通过即 close_supervisor,摘要归档进 topic memory;回合结束自查存活列表,悬挂即处置,见上文「生命周期强制收尾(看门狗兜底)」 | broker 实现依据 + 2026-08-24 生产复盘(9 supervisor 悬挂) |
| WAIT→GET 轮询变体 | wait_supervisor_event 每次超时后立即夹 get_managed_claude_supervisor,形成 3 分钟一次的轮询循环(2026-08-24 连续 44 分钟) | wait 超时直接再次 wait(推进 since_seq);只有 material 事件返回才 GET 详情;长等待靠 stall_timeout_seconds 事件兜底 | 2026-08-24 生产复盘(10:08-10:52 无看门狗 Deep diving 段) |
| 管理者微观纠偏循环 | 同一执行者 2 次以上 interrupt 纠偏仍无效(memory MCP、Grep 参数、路径猜错),管理者反复救火 | 派工提示词一次性写死陷阱(mcp="none"、allowed_tools、OWN 绝对路径);同一执行者第 2 次纠偏无效即停用,改走 Codex worker 或重写派工,不继续第 3、4、5 次 | 2026-08-24 生产复盘(8+ 次 interrupt) |
| 工具可用性臆断 | 声明目录里没有某工具就断言"物理上无法使用" | 先做一次真实调用,失败再降级;目录清单不是可用性证据(热重载可能迟注册) | 来自 2026-08-18 生产复盘(热重载迟注册),本仓库无可复核测试 |
| 省略模型档位 | 省略 model_policy/effort 的派工被路由到前沿档,悄悄烧额度 | 派工单必填显式档位;环境默认值(如 set_model_default)只是局部补丁,不作约束 | 2026-08-18 生产复盘,本仓库无可复核测试 |
| worker 越权改 git 状态 | 受管 worker 切换分支或动暂存区,管理者的提交落到非预期分支 | 派工红线显式禁止一切 git 写操作(含 checkout/switch);提交前必查 git branch --show-current 与 git status;提交后核对远端实际落点 | 2026-08-18 生产复盘,本仓库无可复核测试 |
派工时输出派工单;验收时输出验收报告:
派工单:目标 / 边界与红线 / 授权范围 / 所选路由与理由 / 产物落点 / 验收标准 / 回报方式
验收报告:结论(PASS | PARTIAL | BLOCKED)/ 执行机制 / 收据 / 状态 / 独立核验证据 / 偏差与风险 / 下一步supervisor_id 与归档摘要;队列为 request_id 与终态;原生 subagent 为其返回的最终报告;直接执行为改动文件清单。向用户汇报时按路由分支给出状态,不凭空估计进度:
list_managed_claude_supervisors 或 wait 返回)。request_result 收取结果)。send_to_claude_session 前台控制他人终端,除非用户明确要求驱动人工会话。request_context_snapshot 的本地授权通道。record_work_memory / record_agent_event)。交接或收尾前完成以下可观察检查,按实际路由选择适用项:
通用(所有路由):
switchboard supervisor 路径:
initialize + tools/list 能连上 broker(新环境先冒烟)。switchboard 队列路径:
request_result 收取。原生 subagent / 直接执行路径:
相关示例见 examples/。
3677cfc
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.