executing-plans
executing-plans
Use when executing an implementation plan in the current session as the implementer yourself — your human partner chose inline execution, or no subagent tool is available
manage-token-budgetエージェントシステムにおけるコンテキスト蓄積を監視、制限、回復します。 サイクルごとのコスト追跡、コンテキストウィンドウの監査、 強制ポリシーを伴う予算上限、制限に近づいたときの緊急プルーニング、 およびルーティングのトークン消費を最小化するプログレッシブディスクロージャの統合をカバーします。 長時間稼働するエージェントループ(ハートビート、ポーリング、自律ワークフロー)の実行時、 サイクル間でコンテキストウィンドウが予測不能に増加している時、 APIコストが予想ベースラインを超えてスパイクした時、 最初からコストガードレールを必要とする新しいエージェントワークフローを設計する時、 またはポストモーテム分析でコンテキスト蓄積によるコストインシデントが明らかになった時に使用します。
Independent GitHub snapshot · Automated classification · Original documentation governs
サイクルごとのトークン使用量を追跡し、コンテキストスペースを消費するものを監査し、予算上限を強制し、圧力下で低価値なコンテキストをプルーニングし、完全なプロシージャをロードする前にメタデータを通じてルーティングすることで、エージェントシステムのコストとコンテキストフットプリントを制御します。核心的な原則: コンテキストウィンドウ内のすべてのトークンはその場所を正当化する必要があります。決定を情報するトークンは残り、出力に影響を与えずにスペースを占有するトークンはプルーニングされます。
コミュニティの証拠: 37時間の自律セッションが、30分のハートビートインターバルと冗長なシステム指示および未チェックのコンテキスト蓄積の組み合わせで$13.74のコストになりました。修正は、ハートビートを4時間インターバルに書き直し、通知のみモードに切り替え、ループからフィードブラウジングを排除することでした。このスキルはそのようなインシデントを防ぐパターンを体系化しています。
すべての実行境界でトークン使用量をログに記録するようにエージェントループを計装します。
各サイクル(ハートビート、ポーリング、タスク実行)で以下を取得します:
これらをコンテキストウィンドウ自体ではなく構造化されたログ(JSON lines、CSV、またはデータベース)に保存します:
{"cycle": 47, "ts": "2026-03-12T14:30:00Z", "trigger": "heartbeat",
"input_tokens": 18420, "output_tokens": 2105, "cost_usd": 0.0891,
"cumulative_cost_usd": 3.42}
システムに計装がない場合は、API請求から推定します:
期待結果: サイクルごとのトークン数とコストを示すログ。どのサイクルが高コストでその理由を特定するのに十分な粒度を持つ。ログ自体はコンテキストウィンドウの外に存在する。
失敗時: 正確なトークン数が利用できない場合(一部のAPIは使用メタデータを返さない)、請求ダッシュボードを使用して平均値を導出します。大まかな追跡(1日のコスト / 1日のサイクル数)でさえトレンドを明らかにします。追跡が全くできない場合は、ステップ2に進んでコンテキスト監査から作業します — コンテキストサイズからコストを推定できます。
コンテキストウィンドウを占有するものを測定し、サイズで消費者をランク付けします。
コンテキストをその構成要素に分解して各を測定します:
コンテキスト予算テーブルを作成します:
Context Budget Audit:
+------------------------+--------+------+-----------------------------------+
| Component | Tokens | % | Notes |
+------------------------+--------+------+-----------------------------------+
| System prompt | 4,200 | 21% | Includes CLAUDE.md chain |
| Memory (auto-loaded) | 3,800 | 19% | MEMORY.md + 4 topic files |
| Tool schemas | 2,600 | 13% | 3 MCP servers, 47 tools |
| Active skill procedure | 1,900 | 9% | Full SKILL.md loaded |
| Conversation history | 5,100 | 25% | 12 prior turns |
| Current cycle content | 2,400 | 12% | Tool outputs from this cycle |
+------------------------+--------+------+-----------------------------------+
| TOTAL | 20,000 | 100% | Model limit: 200,000 |
| Remaining headroom |180,000 | | |
+------------------------+--------+------+-----------------------------------+
意思決定の価値に比べて不釣り合いに大きいコンポーネントにフラグを立てます。現在のタスクが決して参照しない4,000トークンのメモリファイルは純粋なオーバーヘッドです。
期待結果: 各コンテキスト消費者、そのサイズ、ウィンドウの割合を示すランク付けされたテーブル。少なくとも1つのコンポーネントが削減の候補として際立つ — 最も一般的なのは会話履歴または冗長なツール出力。
失敗時: コンポーネントごとの正確なトークン数の取得が難しい場合は、英語テキストの粗い近似として文字数 / 4 を使用します。構造化データ(JSON、YAML)の場合は文字数 / 3 を使用します。目標は相対的なランク付けであり、正確な測定ではありません。
ハードリミットとソフトリミットを定義し、それぞれに達したときに何が起こるかを指定します。
ソフトリミット(警告しきい値): 通常はハードリミットの60〜75%。達したとき:
ハードリミット(停止しきい値): 支出またはコンテキストサイズの絶対最大値。達したとき:
サイクルごとの上限: 単一のサイクルの最大トークンまたはコスト。単一の暴走サイクルが予算全体を消費するのを防ぐ:
ワークフロー設定に上限を文書化します:
token_budget:
soft_limit_usd: 5.00 # warn and begin pruning
hard_limit_usd: 10.00 # halt and alert
per_cycle_cap_usd: 0.50 # max per individual cycle
soft_limit_pct: 70 # % of context window triggering pruning
hard_limit_pct: 90 # % of context window triggering halt
enforcement: strict # strict = halt on hard limit; advisory = log only
alert_channel: notification # how to notify the operator
期待結果: 3つのレベル(ソフト、ハード、サイクルごと)での文書化された予算上限と、それぞれの明示的な強制アクション。ポリシーは「制限に達したときに何が起こるか?」という質問に制限が到達する前に答える。
失敗時: 正確なドル制限の設定が時期尚早な場合(コストプロファイルが不明な新しいワークフロー)、コンテキストパーセンテージ制限のみから始め(ソフトを70%、ハードを90%)、24〜48時間のコスト追跡データの後にドル制限を追加します。アドバイザリモード(ログに記録するが停止しない)は較正期間中は許容されます。
制限に近づいたとき、低価値なコンテキストを体系的に削除して予算内に収まるようにします。
プルーニングの優先順位(最低価値から先に削除):
プルーニングされた各アイテムに対して、一行のトゥームストーンを保存します:
[PRUNED: 2,400 tokens of npm audit output from cycle 12 — 3 vulnerabilities found, all patched]
トゥームストーンは約20トークンのコストがかかりますが、意思決定に関連する結論を保存します。
期待結果: プルーニング後にコンテキストウィンドウの使用量がソフトリミットを下回る。プルーニングされた各アイテムに結論を保存するトゥームストーンがある。重要な決定情報は失われない — 既に行われた決定の証拠のみ。
失敗時: 優先度レベル4までプルーニングしても使用量がソフトリミットを超えている場合、ワークフローは現在のサイクル頻度に対して根本的にコンテキストが重すぎる。人間のオペレーターにエスカレートする: 「プルーニング後にコンテキスト使用量がN%。選択肢: (a) サイクルインターバルを増やす、(b) サイクルあたりのスコープを減らす、(c) サブワークフローに分割する、(d) 高コストを受け入れる。」
完全なスキルプロシージャをロードする前にレジストリメタデータを通じてルーティングする — 読み取りではなくルーティングにトークンを使用します。
パターン:
_registry.yml からスキルのレジストリエントリ(id、説明、ドメイン、複雑さ、タグ)を読む — 約3〜5行、〜50トークン他の大きなコンテキストペイロードに同じパターンを適用します:
プログレッシブディスクロージャなし:
5つの候補スキルをロード → 5 × 1,500トークン = 7,500トークン → 1つのスキルを使用
プログレッシブディスクロージャあり:
5つのレジストリエントリを通じてルーティング → 5 × 50トークン = 250トークン
1つの一致したスキルをロード → 1 × 1,500トークン = 1,500トークン
合計: 1,750トークン(77%削減)
期待結果: スキルのロードが2フェーズパターンに従う: メタデータによる軽量ルーティング、確認された一致時のみ完全ロード。同じパターンがメモリ、ツールスキーマ、ファイルコンテンツにも適用される。
失敗時: レジストリメタデータがルーティングに不十分な場合(説明が曖昧すぎる、タグが欠落している)、プログレッシブディスクロージャを放棄するのではなくレジストリエントリを改善します。修正はより良いメタデータであり、より多くのコンテキストのロードではありません。
任意のスケジュールではなく、コストデータに基づいてサイクルインターバルを設定します。
現在のサイクルインターバルでの1時間あたりのコストを計算します:
cost_per_hour = avg_cost_per_cycle × cycles_per_hour予算と比較します:
hours_until_hard_limit = (hard_limit - cumulative_cost) / cost_per_hour最小有効インターバルを決定します:
インターバルを適用します:
変更前: 30分ハートビート、冗長な処理
→ 48サイクル/日 × $0.09/サイクル = $4.32/日
変更後: 4時間ハートビート、通知のみ
→ 6サイクル/日 × $0.04/サイクル = $0.24/日
→ 94%コスト削減
期待結果: サイクルインターバルがコストデータによって正当化され、監視されているシステムの更新レートと一致している。インターバルとコストのトレードオフが文書化されており、将来の調整にベースラインがある。
失敗時: システムが低レイテンシのレスポンスを必要とし、より長いインターバルを許容できない場合は、代わりにサイクルごとのコストを削減します(小さなシステムプロンプト、ロードされるツールスキーマの削減、要約された履歴)。予算の方程式には2つのレバーがあります: 頻度とサイクルごとのコスト。
すべてのコントロールが機能しており、システムが予算内で運用されていることを確認します。
Budget Validation Report:
+-----------------------+----------+--------+
| Check | Expected | Actual |
+-----------------------+----------+--------+
| Per-cycle logging | Present | |
| Soft limit warning | Fires | |
| Hard limit halt | Halts | |
| Per-cycle cap | Truncates| |
| Progressive disclosure| Routes | |
| Daily cost projection | < $X.XX | |
+-----------------------+----------+--------+
期待結果: 5つのコントロール(追跡、ソフトリミット、ハードリミット、サイクルごとの上限、プログレッシブディスクロージャ)すべてが機能していることが確認される。コスト予測が意図された予算内にある。
失敗時: コントロールが発動しない場合は、強制メカニズムが単に文書化されているのではなく、実際の実行ループに接続されていることを確認します。強制なしの設定は計画であり、コントロールではありません。コスト予測が予算を超える場合は、ステップ6に戻ってサイクルインターバルまたはサイクルごとのコストを調整します。
assess-context — 構造的な健全性のための推論コンテキストを評価する。ステップ2のコンテキストウィンドウ監査を補完するmetal — コードベースから概念的な本質を抽出する。プログレッシブディスクロージャパターンはmetalの見込みフェーズに適用されるchrysopoeia — 価値抽出と無駄な重みの排除。コードレベルで同じトークンあたりの価値の考え方を適用するmanage-memory — 永続メモリファイルを整理してプルーニングする。コンテキスト予算のメモリコンポーネントを直接削減する