Install
openclaw skills install @thcjp/circuit-breaker-managerMCP依赖图与熔断器管理器v1.0,注册MCP依赖关系并拓扑排序,管理熔断器状态机(closed/open/half_open)与Bulkhead隔离舱,自动失败计数与恢复探测。触发:依赖注册/熔断检查/状态查询/熔断重置/级联故障分析/部署后验证
openclaw skills install @thcjp/circuit-breaker-manager核心功能: 本技能提供/部署后验证、器v1等能力。
注册MCP依赖关系并拓扑排序,管理熔断器状态机与Bulkhead隔离舱,自动失败计数与恢复探测。
依赖图: MCP间的依赖关系有向图,Kahn算法拓扑排序,DFS检测循环依赖。依赖项需先启动。
熔断状态机: closed(正常) → open(熔断,拒绝请求) → half_open(探测) → closed/open。阈值5次失败,60秒恢复,半开最多1个探测请求。
Bulkhead隔离舱: 每MCP独立asyncio.Semaphore,最大并发10,排队等待30秒,防止故障MCP耗尽线程资源。
| 异常 | 错误码 | 处理 |
|---|---|---|
| mcp_name为空 | INVALID_ARG | 返回错误,提示必填 |
| depends_on非列表 | INVALID_ARG | 返回错误,提示类型 |
| 检测到循环依赖 | CYCLE_DETECTED | 回滚注册,返回环路径 |
| MCP不可用 | MCP_UNAVAILABLE | 重启resilience-mcp |
| 状态持久化失败 | PERSIST_ERROR | 记录日志,内存状态仍有效 |
| 隔离舱排队超时 | QUEUE_TIMEOUT | 返回降级建议,统计rejected |
{
"action": "register|graph|state|record_failure|record_success|check|reset|bulkhead|healthcheck",
"mcp_name": "content-publisher",
"depends_on": ["multi-publisher-mcp", "device-operations-mcp"],
"error_type": "timeout"
}
字段说明:
action: 操作类型(register注册/graph依赖图/state熔断状态/record_failure记录失败/record_success记录成功/check检查/reset重置/bulkhead隔离舱/healthcheck健康检查)mcp_name: MCP服务名(除graph/healthcheck外必填)depends_on: 依赖MCP列表(仅register使用)error_type: 错误类型(仅record_failure使用,如timeout/connection_error/http_5xx){
"success": true,
"data": {
"name": "content-publisher",
"state": "closed",
"failure_count": 0,
"success_count": 25,
"failure_threshold": 5,
"recovery_timeout_sec": 60,
"half_open_max_calls": 1,
"last_failure_time": null,
"last_success_time": 1730908800.0,
"opened_at": null,
"last_error_type": null
},
"error": null,
"code": null
}
字段说明:
state: 熔断状态(closed正常/open熔断/half_open半开探测)failure_count: 连续失败次数(达failure_threshold触发熔断)success_count: 累计成功次数opened_at: 进入open状态的时间戳(null表示非open)last_error_type: 最近错误类型(用于故障分类){success:true, data:{registered:true, topo_order:["sensitive-word-mcp","multi-publisher-mcp","content-publisher"]}}| 验证项 | 标准 |
|---|---|
| 依赖图拓扑排序 | Kahn算法,无环时返回完整序 |
| 循环依赖检测 | DFS检测,有环时回滚并返回路径 |
| 熔断阈值 | failure_count>=5触发open |
| 恢复超时 | open后60秒转half_open |
| 探测限制 | half_open仅放行1个请求 |
| 探测成功恢复 | half_open+success → closed |
| 探测失败回退 | half_open+failure → open |
| Bulkhead并发 | 每MCP最大10并发,超限排队 |
| 排队超时 | 等待30秒未获槽位则拒绝 |
| 状态持久化 | 原子写入data/circuit_breaker/state.json |
| 版本 | 日期 | 变更内容 |
|---|---|---|
| v1.0 | 2026-07-07 | ARCH-10初始版本:依赖图+熔断器+Bulkhead |