memory-dag-compactor について
Memory DAG Compactor は MEMORY.md の項目を多層の要約グラフに整理し、元の項目は保持します。セッションをまたいでコンテキストを検索するエージェント向けで、要約の確認、検索、統合の取り消しができます。
主な機能
- 01階層型のDAG要約を作成
- 02元のMEMORY.md項目を保持
- 03元の項目と要約を検索
- 04DAG構造と要約の系譜を確認
- 05要約の統合を取り消し
活用シーン
- 01増え続けるエージェントメモリを整理
- 02メモリ要約から詳細を検索
- 03要約と元項目の関係を確認
- 04不適切な要約統合を取り消し
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ archieindian/ openclaw-superpowers --skill memory-dag-compactorインストール後、Claude Code で/memory-dag-compactorを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
compact.pyexample-state.yamlSTATE_SCHEMA.yaml詳細
メモリ DAG コンパクター
概要
標準的なメモリ圧縮は情報が失われ、古いエントリーは切り捨てられ、詳細は永久に消えてしまいます。Memory DAG Compactor は、フラットな圧縮を、lossless-claw の Lossless Context Management のアプローチに着想を得た、階層型サマリーの**有向非巡回グラフ(DAG)**に置き換えます。
DAG の各深度では、その抽象度に合わせて調整された専用のプロンプトを使用します。
| 深度 | 名前 | 保持する内容 | タイムラインの粒度 |
|---|---|---|---|
| d0 | リーフ | ファイル操作、タイムスタンプ、具体的なアクション、エラー | 時間単位 |
| d1 | 圧縮 | 前のコンテキストからの変更点、決定事項 | セッション単位 |
| d2 | アーク | 目標 → 結果 → 引き継ぐ内容 | 日単位 |
| d3+ | 長期保存 | 数週間の非アクティブ期間後も残る長期的なコンテキスト | 日付範囲 |
元の MEMORY.md エントリーは削除されず、検索可能な多段階のサマリー階層に整理されるだけです。
実行するタイミング
- 毎晩午後 11 時に自動実行(cron)し、その日のメモリエントリーを圧縮します
- MEMORY.md が設定可能なしきい値(デフォルト:200 エントリー)を超えたとき
- 長時間実行するタスクの前に、メモリをコンパクトで検索可能な状態にします
- メモリにあるはずの情報について、エージェントが「覚えていません」と報告したとき
使用方法
python3 compact.py --compact # Run leaf + condensation passes
python3 compact.py --compact --depth 0 # Only leaf summaries (d0)
python3 compact.py --compact --depth 2 # Condense up to d2 arcs
python3 compact.py --status # Show DAG stats and health
python3 compact.py --tree # Print the summary DAG as a tree
python3 compact.py --search "deployment issue" # Search across all depths
python3 compact.py --inspect <summary-id> # Show a summary with its children
python3 compact.py --dissolve <summary-id> # Reverse a condensation
python3 compact.py --format json # Machine-readable output
手順
ステップ 1 — 圧縮を実行する
python3 compact.py --compact
コンパクターは次の処理を行います。
- MEMORY.md からすべてのエントリーを読み込みます
- エントリーをチャンクにグループ化します(デフォルト:リーフあたり 20 エントリー)
- 運用上の詳細を保持する d0 リーフサマリーを生成します
- リーフ数がファンアウト(デフォルト:5)を超えると、d1 サマリーに集約します
- DAG が予算内に収まるまで、各深度で集約を繰り返します
- サマリー DAG を状態に書き込みます
ステップ 2 — 深度をまたいでメモリを検索する
python3 compact.py --search "API migration"
元のエントリーとすべてのサマリー深度を検索します。結果は関連性と深度に基づいて順位付けされます。深いサマリー(d0)はより詳細で、浅いサマリー(d3+)は全体像を示します。
ステップ 3 — 検査と修復
python3 compact.py --tree # Visualize the full DAG
python3 compact.py --inspect s-003 # Show summary with lineage
python3 compact.py --dissolve s-007 # Reverse a bad condensation
深度を考慮したプロンプト設計
d0(リーフ)— 運用上の詳細
保持する内容:タイムスタンプ、ファイルパス、実行したコマンド、エラーメッセージ、具体的な値。省く内容:会話上の冗長な部分、繰り返した試行、詳細すぎるツール出力。
d1(圧縮)— セッションのコンテキスト
保持する内容:前の状態からの変更点、決定事項とその理由、発生した障害。省く内容:ファイルごとの詳細、正確なタイムスタンプ、中間ステップ。
d2(アーク)— 目標から結果までの流れ
保持する内容:目標の定義、最終結果、引き継ぐ内容、未解決の質問。省く内容:セッションレベルの詳細、個々の決定事項、使用した具体的なツール。
d3+(長期保存)— 長期的なコンテキスト
保持する内容:プロジェクトの概要、アーキテクチャ上の決定、ユーザーの好み、繰り返し現れるパターン。省く内容:2 週間の非アクティブ期間後には重要でなくなる情報。
設定
| パラメーター | デフォルト | 説明 |
|---|---|---|
chunk_size | 20 | リーフサマリーあたりのエントリー数 |
fanout | 5 | 圧縮が始まるまでの最大子ノード数 |
max_depth | 4 | DAG の最大深度 |
token_budget | 8000 | 組み立てるコンテキストの目標トークン数 |
状態
DAG の構造、サマリーの内容、系譜は ~/.openclaw/skill-state/memory-dag-compactor/state.yaml に保存されます。
フィールド:last_compact_at、dag_nodes、dag_edges、entry_count、compact_history。
注意事項
- MEMORY.md の変更や削除は行いません。DAG はその上に重ねるものです
- 各サマリーには、圧縮した内容を示す
[Expand for details about: ...]フッターが含まれます - Dissolve を実行すると圧縮が元に戻り、子サマリーがアクティブセットに復元されます
- lossless-claw の DAG ベースの要約階層と、深度を考慮したプロンプトシステムに着想を得ています