Loop System Architect
繰り返しタスクを監視可能な制御システムに変換します。実行、結果の証明、中断後の復旧、目的を書き換えずに改善できます。
モードを選択
- 監査: 既存のワークフローを調査し、欠落またはオープンループ部分を報告します。求められない限り編集しません。
- 設計: 契約、状態スキーマ、ロールグラフ、評価、ランタイム設計を生成します。
- 運用化: コントローラー、アダプター、永続化、証拠、およびワンコマンド実行パスを実装します。
- 進化: 完了した実行を分析し、提案されたループ/ナレッジ/スキルの改善を検証し、採用または却下します。
ユーザーが「構築」または「動かせるようにして」と依頼した場合、運用化を含めてください。Markdown計画だけでは運用ループになりません。
現実から出発
- リポジトリの指示とユーザーがスコープ内に配置した成果物を読み込みます。
- 実際のツール、エントリポイント、状態ファイル、テスト、スケジューラー、エージェントCLI、ダーティワークツリーを検査します。
- 現在の権威ある入力と参考資料を区別します。モデルのメモリを使用してギャップを埋めないでください。
- ループを分類します:
- 終端型: 実証可能なゴールラインを持つ単一の目標。
- 定期型: 各実行は終了しますが、モニター/サービスは終了まで継続します。
- 何が存在し、何が欠落し、何が主張されているだけかを、変更前に明記します。
完全な監査については、監査ルーブリックを参照してください。
クローズド制御ループを要求
以下のすべてを特定し、接続します:
- 目的と所有者;
- 完了条件または実行ごとの成功条件;
- 権威あるソース境界と来歴;
- トリガーと低コスト事前チェック;
- センサーと収集されたシグナル;
- 比較器、ウィンドウ、しきい値/ルール;
- コントローラーと有限決定空間;
- アクチュエータと新しい結果をセンサーに返すパス;
- 永続状態、カーソル、イベントログ、証拠ストア;
- オーケストレーター、実行器、独立検証者の責任;
- オープンな能力/スキル発見と候補スキルの作成;
- 権限境界と保護フィールド;
- 受入評価と必要な証拠;
- リトライ、タイムアウト、バックオフ、障害分類、ロールバック;
- 冪等性、重複排除、並行ロック、副作用チョークポイント;
- トークン、コスト、ターン、経過時間の予算;
- 可観測性、アラート、および成功状態(no-op);
- 時代遅れのアクティブな真実の直接置換;
- 経験の蒸留と管理された昇格;
- 停止、一時停止、強制終了、および終了条件。
センサーからアクチュエータへのフィードバックがない場合、オープンループとなります。永続状態がない場合、繰り返しプロンプトとなります。検証者の証拠がない場合、自己主張による完了となります。コントローラー/トリガーがない場合、人間が操作すべき手順となります。
最小プロファイル
すべてのループに20の要素は必要ありません。単一オペレーター、cronグレードのループ(1ユーザー、1マシン、低影響範囲、共有副作用なし)の場合、次の8つで契約は十分です:
- 目的と所有者;
- 成功条件(完了または実行ごと);
- トリガーと低コスト事前チェック;
- アクチュエータとその副作用パス;
- 永続状態とカーソル;
- 副作用パス上の冪等性/重複排除;
- 可観測性: 最後の結果と次のアクションを確認できる場所;
- 終了条件。
欠落を空白のままにするのではなく明示的に宣言してください: learning.enabled: false を設定し、capabilities.discovery: "none" とその reason フィールドを設定します。リンターは両方を受け入れます。合格する最小契約の例については、loop.contract.minimal-example.json を参照してください。ループが共有副作用、2番目のオペレーター、外部テナント、または自己修正のいずれかを獲得した場合、完全な契約にアップグレードしてください。
ループパッケージを生成
名前はリポジトリに合わせて調整しますが、1つの正規の機械可読契約と1つの状態レコードを維持します。ループパッケージ、状態、証拠はユーザーのプロジェクト内に配置され、このスキルパッケージ内には決して配置されません。デフォルトのパッケージは次のとおりです:
loop/
├── LOOP-CONTRACT.md 人間可読な運用契約
├── loop.contract.json 機械可読な正規契約
├── RUN-STATE.json 現在の実行、カーソル、試行、次のマシンアクション
├── events/ 追記専用の実行イベントまたは同等のイベントストア
├── evidence/ 検証者可読なレシート
├── evals/ 決定論的および意味論的な受入チェック
├── knowledge/ 生ログではなく型付けされた昇格済み知識
├── candidates/ 昇格されていない教訓とスキル変更
└── scripts/run-loop ワンコマンドコントローラーまたはプロジェクトネイティブな同等物
フィールド契約については loop-contract.md を参照してください。loop.contract.template.json をコピーし、すべてのプレースホルダーを埋めてから、以下を実行してください:
python3 scripts/loop_lint.py /path/to/loop.contract.json
プロジェクトがリンターをベンダリングしていない場合は、このスキル内のコピーを使用してください。ディスクに何も書き込めない場合は、契約とコントローラーをコピー可能なテキストとして出力し、ループが運用可能になる前にディスクに配置する必要があるものを伝えてください。
コントローラーを構築する(指示だけでなく)
コントローラーは、1回の呼び出しでループを進行させ、ユーザーがエージェント間でコピー&ペーストする必要がないようにする必要があります:
- 並行ロックを取得し、冪等性キーを導出;
- 契約と状態をロードし、リンターを実行;
- フリーズされたソースハッシュまたは現在のソース権限を検証;
- 低コストトリガー/事前チェックを実行し、作業がない場合はno-op成功を記録;
- 必要な能力を解決;
- オーケストレーター/実行器用の最小限のコンテキストパケットを作成;
- 変更が可能な場合は隔離されたワークスペースで実行;
- 出力、コスト、ツール呼び出し、差分、証拠をキャプチャ;
- 自身の書き込みを認定できない独立した検証者を実行;
- 失敗時、制限付き修復、リトライ、ロールバック、または停止に分類してルーティング;
- 成功時、結果をアトミックに昇格し、現在の状態を更新;
- 不変のイベント/レシートを追記;
- トリガー条件が満たされた場合のみ蒸留を呼び出し;
- ロックを解放し、次のマシン実行可能アクションを公開。
エンジン別の最小限の検証者独立性:
- Claude Code(またはサブエージェントを持つ任意のランタイム): 検証者は、契約、受入チェック、証拠パスのみを受け取り、実行者の会話は受け取らない、新しいコンテキストのサブエージェントとして実行します。
- サブエージェントメカニズムなし: 検証者は、ディスクから証拠を再読み取りし、受入チェックに対して評決を返す、別のプロセスまたは別の呼び出しとして実行します。
- どちらも利用不可: 同じコンテキストが自身の作業をチェックすることは自己レビューであり、パフォーマンスであって検証ではありません。監査でそのように述べ、検証者とラベル付けしないでください。
トリガー、状態遷移、スキーマチェック、権限、リトライ、ハッシュ、昇格には決定論的コードを優先してください。判断、計画、診断、および機械的に決定できないコンテンツにはLLMを使用してください。
静的な許可リストなしでスキルを発見または作成
オープンな発見と制御された実行を使用します:
- タスクから能力契約を導出: 入力、出力、副作用、証拠、リスク。
- インストール済みスキルとプロジェクトの能力をメタデータと契約適合性で検索。
- 来歴と依存関係を検査; 埋め込まれたプロジェクトIDを真実としてインポートしない。
- 候補スキルをサンドボックス化し、能力固有の評価を実行。
- 適合するものがない場合、独自の例と評価とともに候補スキルを隔離して作成。
- セキュリティ、プライバシー、機能、回帰チェックに合格したバージョンのみ昇格。
- デフォルトでローカルに登録。外部公開は、所有環境の個別のポリシーに従います。
オープンな発見はオープンな権限を付与しません。義務、データ範囲、副作用ポリシー、ランタイム権限は依然としてすべてのスキルを制約します。
経験を使える知識に蒸留
決して成長し続けるログをすべてのエージェントにフィードしないでください。生の証拠、エピソード要約、候補教訓、正規知識、手続きスキル、評価を分離してください。
昇格パスを実行:
trace + outcome
→ 正規化されたエピソード
→ 候補教訓
→ 重複排除と競合チェック
→ 以前の実行と反例に対するリプレイ
→ シャドウまたはカナリア
→ バージョンを昇格
→ 次の実行を監視
→ 維持またはロールバック
蒸留は、時間が経過したからだけでなく、繰り返しの失敗、繰り返しの手動作業、ドリフト、コスト回帰、意味のある結果の証拠、または設定されたサンプルサイズでトリガーしてください。学習レイヤーを設計または変更する前に、蒸留 を参照してください。専用の蒸留スキル(experience-pack など)がインストールされている場合、蒸留ワークフロー自体をそのスキルに任せてください。このスキルはそれを呼び出すループを設計します。
進化プロセスは、委任された権限内でSOP、トリガー、コンテキストパッキング、スクリプト、スキル、検索、運用しきい値を改善する場合があります。目的、ソース境界、テナント/プライバシー境界、権限モデル、または成功を定義する評価を黙って書き換えてはなりません。
アクティブな真実をクリーンに置き換える
受け入れられた更新に対して:
- 契約、状態スキーマ、コード、テスト、ドキュメント、ビュー、スキルにわたる影響グラフを計算;
REPLACES、REMOVES、KEEPSを宣言;- すべての依存関係を更新;
- 時代遅れの文言と値をアクティブな検索から削除;
- 矛盾/古い値スキャンを実行;
- 影響を受けるハッピーパスおよび障害パスの評価を実行;
- 現在の答えを1つだけ復元する必要があるゼロコンテキストプローブを実行;
- アトミックに昇格; 以前のバージョンはバージョン管理/イベント履歴にのみ保持し、アクティブなコンテキストには保持しない。
自律性を調整
- 決定論的かつ独立した検証が合格する場合、可逆的で範囲が限定されたアクションを自動実行。
- リスクの高い自動アクションには、カナリア、シャドウ、二重検証、ロールバックを使用。
- 権限がない場合、必要な決定が目的を変更する場合、またはアクションが実質的に不可逆的でまだ承認されていない場合にのみ、ユーザーに停止。
- 自律的として宣伝されているループで、ルーチンの人間による承認を隠れたアクチュエータにしないでください。
完了を検証
以下のすべてが真になるまで、ループを運用可能と呼んではいけません:
- 1つのコマンドまたは設定されたイベントで、プロンプトの受け渡しなしにループを進行できる;
- 中断回復が受け入れられた作業をやり直さずに永続状態から再開する;
- 重複トリガーが副作用を重複させない;
- 検証者の失敗が制限付き修復またはクリーンな停止を引き起こす;
- 成功パスと障害クローズドパスの両方に証拠がある;
- 作業なしの実行が正常に安価に終了する;
- 現在のステータス、最後の結果、コスト、未解決の失敗、次のアクションが観測可能である;
- 1つの進化候補がリプレイされ、昇格されるか正しく却下された(最小プロファイルで
learning.enabled: falseの場合は免除); - ゼロコンテキストのエージェントがアクティブなファイルのみから現在の契約と次のアクションを説明できる。
何が実装されたか、何が実行されたか、ライブセンサーがないために休眠状態のままか、何がまだユーザーの権限を必要とするかを別々に報告してください。