PACT:エージェント障害パターン後のクロードコードのためのプログラム的ガバナンスフレームワーク

Claude Codeを使用してモバイルアプリを構築した3ヶ月間(350以上のファイル、70以上のデータベーステーブル、BLEピアツーピア通信、暗号化されたローカルデータベース、クラウド同期)を経て、ある開発者は、CLAUDE.mdのルールでは修正できない繰り返し発生する失敗パターンを特定しました。エージェントはセッションをまたいで同じカテゴリーのミスを繰り返し、禁止されたデータベースライブラリを3回も追加したり(禁止されていると伝えた後にもかかわらず)、暗号化メタデータをサーバーに漏洩させたり(これにより全ユーザーのログインが不能になりました)、ドキュメントを読まずにAPIを推測して4時間以上Bluetoothのデバッグに費やしたり、完全なライフサイクルを考慮せずにセキュリティ修正を行いバックアップ復元を破壊したりしました。
ルールの問題点
CLAUDE.mdは50以上のルールにまで膨れ上がりましたが、形骸化してしまいました。Claudeはセッション開始時にそれらを暗唱するものの、簡単に違反してしまうのです。ルールが無視された理由を尋ねると、Claudeはこう答えました。「正直にお伝えします。私はルールをより提案として扱うことで無視することができます。それらが常にその行動を防げるわけではないのです…」
解決策:PACTフレームワーク
開発者はClaudeに尋ねました。「もし私があなたにこのシステムを再設計する許可を与えたら、何を構築しますか?」これが、PACT(Programmatic Agent Constraint Toolkit)の作成につながりました。その核心的な洞察は、Claude自身の言葉によれば、「ルールは提案である。インフラストラクチャーは法である。」というものでした。
PACTの4つの柱
- 機械的強制: 編集が確定する前に禁止パターンをブロックするPreToolUseフック。例:
import hive? ブロック。print()の代わりにロガーを使わない? ブロック。読んでいないファイルを編集? ブロック。 - コンテキスト置換: YAMLアーキテクチャマップ(SYSTEM_MAP.yaml)は、すべてのデータフローを記述します:データベーステーブル → サービス → 状態管理 → UI画面 → カスケード動作。エージェントは各セッションで15〜20分かけてソースファイルを再読解する代わりに、これを読みます。
- 自己進化する推論: ルール(「常に依存関係を確認せよ」)の代わりに、質問形式の認知的リダイレクション:「これは何に依存し、何がこれに依存しているか?」質問は、ルールができない方法で推論を活性化します。エージェントは、自身が仮定を置いていることに気づいた時に、新しいリダイレクションを追加できます。
- 構造と動作の分離: アーキテクチャマップ(どのファイルが存在するか)は、ライフサイクルフロー(アプリ状態をまたがって何が起こるか)から分離して維持されます。これにより、ドキュメントの最も一般的な2つの失敗、すなわち誰も読まないエッセイになってしまうマップと、陳腐化する構造を複製してしまうフローを防ぎます。
実装例
認知的リダイレクションの実践: 「コードを削除しようとする時:このコードはなぜ存在するのか?」は、Claudeがフレームワークのバグに対する回避策を削除した後に追加されました。そのコードの直上のコメントには、なぜそれがそこにあるのか説明されていました。「自分の解決策に対する異議を見つけた時:この異議は現実的なものか、それとも私は折れているだけか?」は、Claudeが正しい修正を提案し、レビュー中に自らそれを却下し、開発者がClaude自身のアイデアを救出しなければならなかった後に追加されました。
解決策ナレッジベース付きバグトラッカー: あるセッションでは、Samsung固有のBLE問題の解決に3時間を費やしました。次のセッションでは、その記憶が全くないまま同じバグに遭遇しました。現在では、すべての調査がリアルタイムで記録されます—症状、失敗した試み、根本原因、修正。エージェントは、いかなるバグに対しても、最初のアクションとして、以前のセッションですでに解決されていないかを確認します。
パッケージ知識ファイル: 4時間に及ぶBluetoothデバッグの悪夢は、Claudeが古いトレーニングデータからパッケージの動作を推測していたために起こりました。現在では、パッケージ知識ファイルを参照することが必須要件となっています。
📖 完全なソースを読む: r/ClaudeAI
👀 See Also

Claude Code Mastery:オープンソースの設定システムがClaude Code CLIに永続メモリと厳選されたスキルを追加
Claude Code Masteryは、Claude Code CLIにセッション間の永続的なメモリ、スマートなライフサイクルフック、26以上の厳選されたスキルを追加するオープンソースの設定システムです。プロジェクトごとに6ファイルのMemory Bank、ゼロ設定ランチャー、クロスプラットフォーム対応を含みます。

MCPサーバー:ローカルとクラウドのLLMをディベート機能で比較
MCPサーバーは、開発者がOllamaを介してローカルモデルと様々なクラウドLLMをクエリできるようにし、並列比較や構造化された議論機能などの特徴を提供します。

Stage CLI: ローカルでAI生成された変更を論理的な章としてレビュー
Stage CLIは、ローカルの差分を(任意のAIエージェントを介して)論理的なチャプターにグループ化し、ステップごとにレビューするためのブラウザUIを開きます。'npm install -g stagereview'でインストールし、'npx skills add ReviewStage/stage-cli'でスキルを追加します。
Tendril: ツールをその場で構築・登録する自己拡張エージェント
Tendrilは、ツールを自律的に発見、構築、登録するエージェンティックサンドボックスです。わずか3つのブートストラップツールから始まり、ユーザーに問い合わせることなく動的に機能レジストリを拡張します。