skills-experimental/circuit-breaker/SKILL.md
Circuit breaker for LLM API calls with failure threshold and automatic recovery. Protects against cascading failures and API rate limits. Use when experiencing repeated LLM failures or configuring API resilience.
npx skillsauth add bianhaifeng789-hue/openclaw-config circuit-breakerInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
借鉴 DeerFlow 2.0 的 CircuitBreakerConfig 熔断器机制。
LLM API 调用可能失败:
问题: 连续失败会导致雪崩效应,影响整个系统。
解决方案: Circuit Breaker 熔断器
Closed (正常) → failure_threshold → Open (熔断)
↑ ↓
│ │
│ recovery_timeout_sec
│ │
└ ↓
Half-Open (尝试恢复) ← ─────┘
│
│ success → Closed
│ failure → Open
状态转换:
failure_thresholdrecovery_timeout_sec 后尝试恢复gateway-config.yaml:
circuit_breaker:
enabled: true
failure_threshold: 5 # 连续失败5次触发熔断
recovery_timeout_sec: 60 # 60秒后尝试恢复
impl/bin/circuit-breaker.js:
class CircuitBreaker {
constructor(config) {
this.enabled = config.enabled;
this.failureThreshold = config.failure_threshold;
this.recoveryTimeoutSec = config.recovery_timeout_sec;
this.failures = 0;
this.state = 'closed'; // closed, open, half-open
this.lastFailureTime = null;
}
async call(fn) {
if (!this.enabled) {
return await fn();
}
// Check state
if (this.state === 'open') {
const elapsed = (Date.now() - this.lastFailureTime) / 1000;
if (elapsed < this.recoveryTimeoutSec) {
throw new Error('Circuit breaker is OPEN (too many failures)');
}
this.state = 'half-open';
}
try {
const result = await fn();
this.onSuccess();
return result;
} catch (err) {
this.onFailure();
throw err;
}
}
onSuccess() {
this.failures = 0;
this.state = 'closed';
}
onFailure() {
this.failures++;
this.lastFailureTime = Date.now();
if (this.failures >= this.failureThreshold) {
this.state = 'open';
}
}
getState() {
return {
state: this.state,
failures: this.failures,
lastFailureTime: this.lastFailureTime,
isOpen: this.state === 'open'
};
}
}
LLM provider 包装:
const circuitBreaker = new CircuitBreaker(config.circuit_breaker);
async function callLLM(prompt) {
return await circuitBreaker.call(async () => {
return await llm.invoke(prompt);
});
}
State tracking:
{
"state": "closed",
"failures": 0,
"lastFailureTime": null,
"totalCalls": 100,
"totalFailures": 5,
"totalOpenEvents": 1
}
DeerFlow 2.0 - backend/packages/harness/deerflow/config/app_config.py
class CircuitBreakerConfig(BaseModel):
failure_threshold: int = Field(default=5)
recovery_timeout_sec: int = Field(default=60)
创建时间: 2026-04-15 借鉴来源: https://github.com/bytedance/deer-flow
business
IAA 日报飞书输出能力。 支持把固定 CSV 模板一键转换成: - 中文运营结论 - 飞书卡片 JSON - 飞书发送载荷 Use when: - 需要把 IAA 日报直接发到飞书 - 需要从 CSV 一键生成运营日报
data-ai
IAA日报分析模型 功能: - 渠道日报自动分析 - 小时级+日级ROI联动判断 - 按地区输出加量/降量/停投建议 - 按产品类型输出阈值 - 自动识别利润区/观察区/止损区 Use when: - 分析每天投放数据 - 生成运营日报结论 - 判断是否加量/降量/停投 - 对比美加澳/日韩表现 Keywords: - 日报模型, 投放日报, 加量, 降量, 停投, ROI日报, 分地区分析
data-ai
IAA固定日报分析模板 功能: - 固定字段模板(可直接贴每天数据) - 自动输出总盘结论 - 自动输出美加澳/日韩结论 - 自动给出加量/降量/停投建议 - 适配文件修复/清理两类产品 Use when: - 需要固定日报格式 - 每天复盘渠道表现 - 给运营团队出统一结论 Keywords: - 固定模板, 日报模板, ROI模板, IAA日报, 运营模板
development
# HyperlinkPool Pattern Skill HyperlinkPool Pattern - HyperlinkPool class + strings array + stringMap + Index 0 no hyperlink + intern(hyperlink) + get(id) + undefined handling + 5-minute reset + OSC8 hyperlink interning。 ## 功能概述 从Claude Code的ink/screen.ts提取的HyperlinkPool模式,用于OpenClaw的OSC8超链接池管理。 ## 核心机制 ### HyperlinkPool Class ```typescript export class HyperlinkPool { private strings: string[] = [''] // Index 0 = no hyperlink private stringMap = new Map<string, number>() // strings