
MemoryCustodian
MemoryCustodianは、主要なコンテキストをプレーンなMarkdownとして保存し、マニフェストを介してタスクに関連する部分のみをロードすることで、コーディングエージェントに永続的でリポジトリネイティブなプロジェクトメモリを提供し、セッションやチーム間でのプロンプトのオーバーヘッドを最小限に抑えます。
https://github.com/waittim/MemoryCustodian?ref=producthunt&utm_source=aipure

製品情報
更新日:2026年07月30日
MemoryCustodianとは
MemoryCustodianは、AIコーディングエージェント向けの軽量な「プロジェクトメモリ」システムであり、チャット履歴や肥大化した指示プロンプトに頼ることなく、セッション間で重要なもの(決定、制約、却下されたアプローチ、現在のプロジェクトの形状)を保持するのに役立ちます。これは、永続的なコンテキストをリポジトリ内(通常は`docs/memory/`の下)でレビュー可能で差分可能なMarkdownとして保持し、高速でオフラインファーストのPython(stdlibのみ)CLIとエージェント統合(例:Codex、Claude Code、Geminiスタイルのスキル)を提供します。目標は、プロジェクトの知識をエージェント間で移植可能にし、人間がコードのように簡単に監査できるようにするとともに、ランタイムコンテキストを小さく意図的に保つことです。
MemoryCustodianの主な機能
MemoryCustodianは、コーディングエージェント向けのオフラインファーストな「プロジェクトメモリ」システムです。これは、耐久性のあるコンテキスト(決定、制約、却下されたアプローチ、現在のプロジェクトの形状)をリポジトリ内にプレーンなMarkdownとして保存します。大規模なプロンプトを貼り付けたり、チャット履歴に頼ったりする代わりに、マニフェストファーストのワークフローを使用して、タスクに関連するメモリファイルのみをエージェントのコンテキストパックにロードします。これにより、セッションを軽量に保ちながら、知識を検査可能、差分可能、エージェント/チーム間でポータブルにし、決定論的でstdlibのみのPython CLIと、保護されたプレビューファーストの変更(例:compact/forget/migrate)を通じて保守可能にします。
リポジトリネイティブなMarkdownメモリ: 耐久性のあるプロジェクト知識を`docs/memory/`の下にプレーンなMarkdownとして保存するため、人間はコードのようにメモリをレビュー、差分、コミット、ロールバックできます。ベクトルDB、RAGインデックス、またはクラウド依存性は不要です。
マニフェストファーストの選択的ロード: エージェントは`manifest.md`を読み込み、次に`brief.md`を読み込み、現在のタスク(計画/実装/成果物)に関連する特定のファイルのみをロードします。これにより、重要なコンテキストを保持しながらプロンプトの肥大化を最小限に抑えます。
プラットフォームをまたがる薄いエージェントブートストラップ: 大規模な命令ブロックを埋め込むのではなく、エージェントをマニフェストにポイントする小さなブートストラップファイル(例:`AGENTS.md`、`CLAUDE.md`、`GEMINI.md`)を生成し、Codex、Claude Code、Geminiスタイルのエージェント、および一般的なシェル使用をサポートします。
保護されたメンテナンスを備えた決定論的CLI: `init/status/check/read/add/enable/forget/compact/migrate`コマンドを提供します。メンテナンス操作はプレビューファーストで構造を保持し、変更を適用する前に予算チェックと安全な変更計画を行います。
スコープされたオプトインメモリモジュール: オプションの知識(例:`rules/`、`profiles/`、`areas/`、`archive/`)は、マニフェストによって明示的に有効にされるまでデフォルトのコンテキストから除外され、すべてのタスクを汚染することなくサブシステム固有のメモリを可能にします。
プライバシーを保護する忘却とアーカイブ制御: 墓石と編集ガードを備えたソフト/ハードな忘却およびパージフロー、および偶発的な意味的損失を避けるために明示的な確認を必要とする制御されたアーカイブ(例:最も古い決定のアーカイブ)をサポートします。
MemoryCustodianのユースケース
長期間にわたるコードベースを保守するソフトウェアチーム: アーキテクチャの決定、制約、却下されたアプローチをキャプチャすることで、新しいエージェントセッション(および新しいエンジニア)が以前の選択を再検討することを防ぎ、スプリント全体でのデバッグの繰り返しと手戻りを削減します。
規制された環境またはオフライン環境: 金融、ヘルスケア、防衛、またはエアギャップされたエンタープライズ設定など、クラウドメモリサービスが許可されていない場所で使用します。stdlibのみのCLIとローカルMarkdownストレージは、完全にオフラインのワークフローをサポートします。
マルチエージェント/ツール連携: 異なるエージェントホスト(Codex、Claude Code、Geminiスタイルのエージェント)間でプロジェクトメモリを標準化することで、チームはコンテキストを失ったり、プロンプトを再構築したりすることなくツールを切り替えることができます。
コンサルティングおよび代理店の引き継ぎ: 将来の保守担当者のために、根拠と境界を保持する監査可能でリポジトリに含まれるメモリパック(概要/決定/制約/使用禁止)をクライアントプロジェクトに提供します。
複雑なモノレポとサブシステム所有: `areas/`とマニフェストルーティングを使用して、ドメインに関連するメモリ(フロントエンド、同期、インフラなど)のみをロードし、エージェントが組織全体のコンテキストをすべてのタスクに引きずり込むことなく効果的に作業できるようにします。
メリット
ポータブルで監査可能:メモリはリポジトリ内のプレーンなMarkdownであり、レビュー、差分、バージョン管理が容易です。
低オーバーヘッドのコンテキスト:マニフェスト駆動の選択的ロードにより、プロンプトの肥大化を回避し、エージェントセッションを効率的に保ちます。
オフラインファーストで最小限の依存関係:コアCLIはPython stdlibのみであり、ネットワークサービスなしで動作するように設計されています。
デメリット
キュレーションの規律が必要:生成された`brief.md`の足場は、信頼できるものとなる前に権威ある情報源からキュレーションされる必要があります。
自動的な意味的検索ではない:設計上、埋め込み/RAGを回避するため、関連性は良好なマニフェスト構造と人間/エージェントの記述品質に依存します。
メンテナンス操作は保守的である可能性がある:プレビューファーストの安全対策と制約(例:広範囲一致保護)は、完全に自動的なクリーンアップを期待するユーザーにとってワークフローのステップを追加する可能性があります。
MemoryCustodianの使い方
1) MemoryCustodianをインストールする(エージェント/ワークフローに合ったパスを選択): インストール方法を1つ選択してください:
- コーディングエージェントにリポジトリからスキルをインストールするように依頼する: https://github.com/waittim/MemoryCustodian
- Codex(ローカルマーケットプレイス): チェックアウトから`codex plugin marketplace add .`を実行し、次に`codex plugin add memory-custodian@memory-custodian-dev`を実行します。
- Claude Code(プラグイン): ローカルテスト用に`claude --plugin-dir .`を実行するか、`./install.sh claude`で個人スキルにインストールします。
- Geminiスタイルのエージェント: `./install.sh gemini`または`gemini skills link ./skills/memory-custodian`でインストールします。
- CLI/ソースチェックアウト: `scripts/memory-custodian ...`を介してリポジトリから実行するか、`python3 -m pip install -e .`で編集可能にインストールして`memory-custodian`コマンドを取得します。
2) プロジェクトでMemoryCustodianを初期化する(リポジトリごとに1回): 各ターゲットプロジェクトに対して初期化を1回実行します:
- コンソールスクリプトとしてインストールされている場合: `memory-custodian init --project-root /path/to/project --agent all`
- ソースチェックアウトから: `scripts/memory-custodian init --project-root /path/to/project --agent all`
`--agent codex`、`--agent claude`、`--agent gemini`、または`--agent all`を使用して、エージェントが読み取る薄いブートストラップファイルを生成します。
3) 初期化が何を作成するかを理解する(メモリがどこに存在するのか): 初期化は、`docs/memory/`の下にデフォルトの永続メモリセットを作成します:
- `manifest.md`(何をロードするかをルーティング)
- `brief.md`(現在のプロジェクトの形状)
- `decisions.md`(主要な決定)
- `constraints.md`(厳密な要件)
- `do-not-use.md`(却下されたパス/墓石)
- `inbox.md`(ステージングエリア)
プラットフォームのブートストラップファイル(例:`AGENTS.md`、`CLAUDE.md`、`GEMINI.md`)は薄いままで、エージェントを`docs/memory/`にポイントします。
4) 生成されたブリーフに頼る前にキュレーションする: `init`の後、`brief.md`はTODOを含む足場として開始されます。メモリが準備完了と見なされる前に、権威あるプロジェクトソース(README、コード、ドキュメント)からそれを埋めます。`memory-custodian status --project-root /path/to/project`(または`scripts/memory-custodian status ...`)を使用して、ブリーフがまだキュレーションされていないかどうかを確認します。`status`と`check`はキュレーションされていないブリーフを報告します。
5) タスクに適したメモリをロードする(マニフェスト優先の読み取り): エージェントの意図されたワークフローは次のとおりです:
1) `docs/memory/manifest.md`を読み取る。
2) `docs/memory/brief.md`を読み取る。
3) マニフェストによって現在のタスクに関連するとマークされたファイルのみをロードする。
手動検査の場合、次のコマンドでコンテキストパックを生成します:
- `memory-custodian read --project-root /path/to/project --task planning`
- `memory-custodian read --project-root /path/to/project --task implementation`
- `memory-custodian read --project-root /path/to/project --task artifact`
6) 現在のチャットで残すべきものがある場合に永続メモリを追加する: CLIを使用して決定/制約/好み/却下されたアプローチを記録します:
- `memory-custodian add "We chose manifest-first loading." --type decision`
- `memory-custodian add "Persist sync retry backoff." --type decision --area sync --reason "Keep retries bounded across launches."`
決定エントリは短く保ちます(ツールはトークンガイドを強制し、明示的に長いエントリを許可しない限り、長すぎる書き込みを拒否します)。
7) 関連する場合にのみオプションのメモリモジュールを有効にする: オプションのモジュール(例:ルール、プロファイル、エリア)はオプトインであり、マニフェストによって有効化およびルーティングされない限りロードされません。必要に応じて有効にします:
- `memory-custodian enable preferences`
- `memory-custodian enable rules/output`
- `memory-custodian enable profile/git`
- `memory-custodian enable area/frontend`
有効化は既存のモジュールファイルを上書きすることはありません。
8) 却下されたアプローチを保持し、回帰を避けるために「do-not-use」を使用する: アプローチ(例:ストレージバックエンドまたはアーキテクチャ)を意図的に却下する場合、`docs/memory/do-not-use.md`に記録します(編集または適切な追加/忘却ワークフローを介して)。これにより、将来のセッションでそれが再提案されるのを防ぎます。
9) ヘルスとプロトコルの互換性を定期的にチェックする: 構造、予算、プロトコルメタデータが正しいことを確認するために決定論的な検証を実行します:
- `memory-custodian check --project-root /path/to/project`
簡単な概要とキュレーションされていないブリーフを検出するには、`memory-custodian status`を使用します。
10) メモリを圧縮および維持する(プレビュー優先、安全な変更): メモリを小さく最新の状態に保つためにメンテナンスコマンドを使用します:
- `memory-custodian compact --project-root /path/to/project`
圧縮は保護されており、プレビュー優先です。計画を確認した後にのみ変更を適用してください。インボックスの圧縮は保守的であり(例:正確な重複するトップレベルの箇条書き単位の削除と墓石のフィルタリング)、エージェント/人間が意味的な昇格を決定/制約に行うことを期待しています。
11) 古い情報を安全に忘れる(プレビュー優先): プレビュー優先の忘却で古いトピックを削除または編集します:
- プレビュー: `memory-custodian forget "old deployment note" --mode soft --project-root /path/to/project`
- レビュー後に適用: `memory-custodian forget "old deployment note" --mode soft --apply --project-root /path/to/project`
広範な一致には明示的な確認が必要です(例:`--allow-broad-match`)。一部のケースでは手動での書き換えが必要であり、ツールは安全でない一括削除を拒否します。
12) 必要に応じて既存のセットアップを修復または交換する: ファイルが不足している場合や、キュレーションされたコンテンツを上書きせずにメタデータを更新する必要がある場合:
- 修復: `memory-custodian init --project-root /path/to/project --repair`
完全に交換したい場合は、プレビュー優先の交換を使用し、正しい場合にのみ適用します:
- `memory-custodian init --project-root /path/to/project --replace-existing`
- その後、リストされたファイルを交換する必要がある場合にのみ`--apply`を追加します。
13) ツールが更新されたときにプロトコル/プロジェクトメモリのバージョンを移行する: `check`が古いまたは不足しているプロトコルメタデータを報告する場合、プロジェクトマニフェストをオフラインで移行します:
- プレビュー: `memory-custodian migrate --project-root /path/to/project`
- レビュー後に適用: `memory-custodian migrate --apply --project-root /path/to/project`
14) Windowsとソースチェックアウトで適切な呼び出しを使用する: Windowsでは、コンソールコマンドをインストールし、`memory-custodian ...`を使用します。任意のプラットフォームのレポチェックアウトから、ラッパーとして`scripts/memory-custodian ...`を実行できます。
MemoryCustodianのよくある質問
MemoryCustodianは、意思決定、制約、却下されたアイデア、プロジェクトのコンテキストをプレーンなMarkdownとしてリポジトリ内に保存し、現在のタスクに必要な部分のみをロードすることで、コーディングエージェントに永続的な「プロジェクトメモリ」を提供するツールです。











