mcpField
C
circuit-breaker

circuit-breaker

github.com/pixel-process-ugエージェントワークフロー383 回インストール33 週間前に更新
リポジトリ

circuit-breaker について

circuit-breakerは、自律開発ループ向けの安全スキルです。停滞、エラーの反復、API上限、保護対象ファイルを監視し、しきい値に達すると停止して復旧手順を示します。

主な機能

  1. 01ループの停滞とエラー反復の検出
  2. 02API呼び出しの追跡と制限
  3. 03設定ファイルと計画ファイルの保護
  4. 04クールダウン後に一度だけ試行
  5. 05反復状況と進捗指標の記録

活用シーン

  1. 01進展しない自律ループの停止
  2. 02失敗の反復によるリソース消費の防止
  3. 03破壊的コマンド前のファイル確認
  4. 04定めた復旧手順での作業再開

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/pixel-process-ug/superkit-agents --skill circuit-breaker

インストール後、Claude Code で/circuit-breakerを入力して読み込まれたか確認します。

詳細

概要

サーキットブレーカーのスキルは、自律開発中の無限ループ、リソースの枯渇、意図しない破壊を防ぐ安全機構です。これはループレベルで動作し、タスクレベルで動作する resilient-execution を補完します。サーキットブレーカーによる保護がなければ、自律ループは進展のない問題に何時間も費やしたり、API の制限を使い果たしたり、設定ファイルを誤って破壊したりするおそれがあります。このスキルは、自律的な操作の生産性と安全性を保つための厳格な境界を設けます。

開始時に次のようにアナウンスします:「サーキットブレーカーが有効です — 停滞、レート制限、ファイル保護を監視しています。」


フェーズ 1:サーキット状態の確認

各ループの反復の前に、現在のサーキット状態を確認します。

+-----------+     threshold     +-----------+     cooldown     +------------+
|  CLOSED   |----exceeded----->|   OPEN    |----elapsed------>| HALF-OPEN  |
|  (normal) |                  |  (halted) |                  |  (probe)   |
+-----------+                  +-----------+                  +-----+------+
     ^                                                              |
     |                          success                             |
     +--------------------------------------------------------------+
     |                          failure                             |
     |                    +-----------+                              |
     +--------------------+   OPEN    |<----------------------------+
                          +-----------+
状態意味アクション
CLOSED通常動作反復を実行し、すべてのしきい値を監視します
OPENしきい値超過により停止中状態を報告し、クールダウンを待つか、エスカレーションします
HALF-OPENクールダウン後のプローブ中反復を 1 回だけ許可します。成功した場合は閉じます。失敗した場合は再度開きます。

STOP:ループの反復を実行する前に、必ずサーキット状態を確認してください。サーキットが OPEN の場合は実行しないでください。


フェーズ 2:停滞の検出

自律動作中、以下のしきい値を継続的に監視します。

条件しきい値検出方法アクション
進展なし意味のある変更がない状態が 3 ループ連続各ループで変更されたファイルと完了したタスクを追跡しますサーキットを OPEN にします
同一のエラー同じエラーが発生する状態が 5 ループ連続反復間でエラーメッセージを比較しますサーキットを OPEN にします
出力の減少反復をまたいで出力量が 70% 減少直近 3 回の反復の出力行数を比較しますサーキットを OPEN にします
権限拒否ツールの権限エラーが 3 回連続権限エラーを追跡しますサーキットを OPEN にします
テスト修正ループ作業の 80% 超がテスト修正のみに費やされている反復ごとに作業の種類を追跡しますサーキットを OPEN にし、根本原因を調査します
循環するアプローチ同じ 2~3 個のアプローチが解決しないまま交互に繰り返されるアプローチの履歴を追跡しますサーキットを OPEN にします
停滞スコアリング

各反復で、進捗スコアを計算します。

指標スコア
以前は失敗していたテストが新たに成功+3
タスクを完了としてマーク+5
意味のある変更を加えてファイルを修正+1
ビルド/リントエラーを解決+2
前回の反復と同じエラー-2
ファイルの変更なし-3
以前の変更を取り消した-1

しきい値: 3 回の反復における累積スコアが負の場合、サーキットを OPEN にします。

STOP:いずれかのしきい値を超えた場合、直ちにサーキットを OPEN にしてください。「もう一度だけ」試してはいけません。


フェーズ 3:復旧プロトコル

サーキットが開いた場合、次の復旧手順に従います。

クールダウン期間
  • デフォルト: 再試行まで 30 分
  • 目的: 同じ失敗状態を短時間に繰り返すのを防ぎます
  • クールダウン後: サーキットは HALF-OPEN 状態になります
HALF-OPEN の動作
  1. 実行を許可する反復は、正確に 1 回だけです
  2. 成功した場合(進捗スコアが正):サーキットを閉じ、通常動作を再開します
  3. 失敗した場合(同じ停滞パターン):サーキットを再度開き、クールダウン時間を 2 倍にします
停滞からの復旧戦略決定表
停滞の種類戦略 1戦略 2戦略 3戦略 4
進捗なし(同じタスクで行き詰まっている)新たな分析に基づいて計画を再生成する行き詰まったタスクを 3 つ以上のサブタスクに分割する次のタスクに進み、後で戻るユーザーにエスカレーションする
同一のエラー(同じエラーが繰り返し発生する)アプローチを完全に変更するエラーが環境に起因するか確認する既知の問題や回避策を検索するエラーログを添えてエスカレーションする
テスト修正ループ(テストが繰り返し失敗する)テストの前提を見直す実装方針に問題がないか確認する実装範囲を縮小するテスト分析を添えてエスカレーションする
循環的なアプローチ(同じ修正を交互に繰り返す)いったん立ち止まり、根本原因を再分析するまだ試していないアプローチを試す動作する最小限のバージョンまで範囲を縮小するアプローチの履歴を添えてエスカレーションする

停止:復旧後の次の 3 回の反復を注意深く監視してください。停滞が再発した場合は、ただちにエスカレーションしてください。


フェーズ 4:レート制限

API の使用制限を追跡し、適用します。

パラメーターデフォルト目的
MAX_CALLS_PER_HOUR100API の過剰使用を防止します
リセット間隔1 時間(ローリング方式)カウンターを自動的にリセットします
カウントダウン表示有効制限に達するまでの残り呼び出し回数を表示します
レート制限の動作
  1. ローリング方式の 1 時間あたりの API 呼び出し回数を追跡します
  2. 制限の 80% に達した時点で警告を表示し、残りの呼び出しを優先します
  3. 制限の 100% に達した時点で実行を一時停止し、リセットまでのカウントダウンを表示します
  4. 制限を超過することはありません。リセット間隔が経過するまで待機します
3 層のタイムアウト検出

長時間実行される操作(特に制限時間が長い API 呼び出し)の場合:

層検出方法フォールバック
1. タイムアウトガード終了コード 124 またはタイムアウトシグナル部分的な出力を取得し、完了した内容を記録します
2. JSON 検証レスポンスの構造を解析します生のレスポンスからテキストの抽出を試みます
3. テキストフォールバック生の出力を取得しますすべてを記録し、人によるレビューのために報告します

フェーズ 5:ファイル保護

自律的な操作中に設定ファイルを削除してはなりません。これは絶対に譲れない条件です。
保護対象パス
パス種類保護する理由
.ralph/ディレクトリループの状態と設定
.ralphrcファイルRalph の設定
IMPLEMENTATION_PLAN.mdファイル現在の計画 — ループの信頼できる唯一の情報源
AGENTS.mdファイルエージェントの定義
specs/ディレクトリ仕様 — 機能の信頼できる唯一の情報源
.claude/ディレクトリClaude Code の設定
CLAUDE.mdファイルエージェントの操作マニュアル
memory/ディレクトリセッションをまたいで保持される学習内容
保護の仕組み
仕組み動作方法実行されるタイミング
許可リストの適用許可されたツールのみが保護対象ファイルを変更できます保護対象パスへのファイル書き込みの前
整合性検証各反復後に保護対象ファイルの存在を確認しますすべてのループ反復の終了時
操作前チェック破壊的な操作の前に保護対象ファイルを確認しますrm、git clean、git checkout . の実行前
コマンド制限保護対象パスに対する git clean、git rm、設定ディレクトリに対する rm -rf をブロックしますコマンドが保護対象パスを指定したとき
破壊的な操作の前のチェックリスト

rm、git clean、または git checkout . を実行する前に:

  1. 影響を受けるすべてのファイルを一覧表示します
  2. 各ファイルを保護対象パスの一覧と照合します
  3. 保護対象ファイルが 1 つでも影響を受ける場合:中止して報告します
  4. 安全な場合:注意して続行します
  5. 操作後:すべての保護対象ファイルが引き続き存在することを確認します

停止:操作後に保護対象ファイルが見つからない場合は、ただちに停止して復元してください。


フェーズ 6:監視とメトリクス

ループの各反復で、以下のメトリクスを追跡します。

メトリクス目的アラートのしきい値
ループ回数実行した反復の合計1 つのタスクで >20
完了したタスク進捗の測定3 回以上の反復で 0
変更したファイル変更のペース3 回以上の反復で 0
テスト合格率品質の傾向3 回以上の反復で低下
エラー頻度停滞の早期警告3 回以上の反復で増加
出力量生産性の傾向70% の低下
残りの API 呼び出し回数レート制限への接近度残り <20%
進捗スコア全体的な健全性3 回の反復で負の値
各反復のステータスログ
## Iteration [N] — [timestamp]
- Circuit state: CLOSED / HALF-OPEN
- Tasks completed: [N]
- Files modified: [list]
- Tests: [X passed, Y failed, Z skipped]
- Errors encountered: [list]
- Progress score: [+/- N]
- API calls remaining: [N]
- Stagnation risk: LOW / MEDIUM / HIGH

アンチパターン/よくある間違い

やってはいけないこと失敗する理由代わりにすること
停滞の兆候を無視する解決できない問題に何時間も費やすことになりますしきい値を超えたらサーキットを開きます
開いたサーキットを手動で上書きする安全機構を迂回します復旧手順に正しく従います
ファイル保護の確認を省略する設定の削除によりプロジェクト全体が頓挫します操作後は必ず保護対象のファイルを確認します
クールダウンをゼロに設定する同じ失敗をすばやく繰り返すことになります最低 30 分のクールダウンを守ります
テスト修正だけの反復を進捗として数える本当の問題(アプローチの欠陥)を覆い隠しますテスト修正に >80% の労力を費やしている場合は、停滞として記録します
保護対象のファイルを削除して作り直す設定の状態が失われます保護対象のファイルは決して削除せず、更新のみ行います
レート制限の警告を無視する操作の途中でハードリミットに達します上限の 80% に達したら優先的に対処します
事前確認なしで破壊的なコマンドを実行する保護対象のファイルを削除する可能性があります影響を受けるファイルを必ず事前に確認します

正当化を防ぐガード

考え現実
「あと 1 回試せば直る」3 回前にもそう言っていました。サーキットを開きましょう。
「エラーはほぼ修正できている」5 回の反復で「ほぼ」なら、アプローチが間違っています。
「ここでは止められない。もう少しで終わる」サンクコストの誤謬です。サーキットを開いて、見直しましょう。
「クールダウンが長すぎる」クールダウンによって、同じ失敗にさらに時間を費やさずに済みます。
「これらの設定ファイルは重要ではない」保護されているのには理由があります。削除しないでください。
「レート制限には達しない」追跡しましょう。推測してはいけません。
「これは別のエラーだ」本当に別のエラーなのか、それとも同じ根本原因が異なる形で現れているのか確認しましょう。

開いたサーキットを上書きしてはいけません。復旧手順に従ってください。


統合ポイント

スキル関係
resilient-executionタスクレベルの再試行(3 回)。サーキットブレーカーは、個々のタスク内で resilient-execution の再試行を使い切った後に作動します。
autonomous-loopサーキットブレーカーがループを監視します。ループレベルの停滞を検知すると、サーキットを開きます。
ralph-statusステータスブロックが停滞検知用のメトリクスを提供します。
verification-before-completionサーキットブレーカーは、ループを終了する前に検証が通ることを確認します。
self-learning停滞パターンをメモリに保存し、今後の回避に役立てます。
auto-improvementサーキットブレーカーのイベントを改善メトリクスに反映します。
適用範囲の明確化
適用範囲スキル動作
タスクレベルresilient-execution1 つの失敗したタスクに対して 3 つのアプローチを試します
ループレベルcircuit-breakerパターンからシステム全体の障害が示唆された場合、ループ全体を停止します

サーキットブレーカーは、個々のタスク内で resilient-execution が再試行を使い切った後に作動します。各タスクが 3 回再試行しても失敗し続ける場合、サーキットブレーカーがそのパターンを検知します。


プロセスの概要

  1. 各ループの反復前: サーキットの状態(CLOSED/HALF-OPEN/OPEN)を確認します
  2. OPEN の場合: 状態を報告し、クールダウンを待つか、エスカレーションします
  3. HALF-OPEN の場合: 1 回のプローブ反復を許可し、結果を評価します
  4. CLOSED の場合: 通常どおり実行し、すべてのしきい値を監視します
  5. 各反復の後: メトリクスを更新し、進捗スコアを算出して、しきい値を評価します
  6. しきい値を超えた場合: サーキットを開き、理由を報告して、クールダウンを開始します
  7. クールダウンの後: HALF-OPEN に移行し、1 回のプローブを許可します
  8. プローブの後: 成功した場合は閉じ、失敗した場合はクールダウン時間を 2 倍にして再度開きます

スキルの種類

RIGID — しきい値と保護ルールを厳密に守る必要があります。サーキットブレーカーの条件を緩和してはいけません。開いているサーキットを上書きしてはいけません。ファイル保護チェックを省略してはいけません。停滞の兆候を無視してはいけません。

コメント