Community画像github.com

gavdalf/total-recall

自律的に監視する唯一の記憶スキル。データベースもベクトルも手動保存も不要。LLMオブザーバーが会話を優先順位付きのメモに圧縮し、成長に応じて統合し、見逃したものを復旧します。5層の冗長性、ゼロメンテナンス。月額約0ドル(無料モデル使用)。他の記憶スキルが「覚えておくこと」を要求する中、これだけはただ注意を払います。

total-recall とは?

Total Recallは、AIエージェント(OpenClaw、Claude Codeなど)向けの完全自律型記憶管理スキルです。データベースやベクトル埋め込みに依存せず、LLMオブザーバーを使用して会話を優先順位付きメモ(observations.md)に圧縮し、成長に応じて統合し、セッション開始時に見逃したものを復旧します。5層の冗長性(Observer、Reflector、Session Recovery、Reactive Watcher、Pre-compaction hook)により、手動介入なしでエージェントが重要なコンテキストを保持できるようにします。Linuxではinotifyベースのリアクティブウォッチャーが高速キャプチャを提供します。さらに、オプションのDream Cycleは夜間にメモを統合・アーカイブし、セマンティックフックと信頼度スコアを追加します。OpenRouter、Ollama、GroqなどのOpenAI互換APIを無料モデルでサポートし、コストは通常月額約0ドルです。

対応✓Claude Code✓Codex CLI~Cursor
npx skills add gavdalf/total-recall

Installed? Explore more 画像 skills: steipete/songsee, affaan-m/frontend-design, mattpocock/improve-codebase-architecture · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

Total Recall — 自律型エージェント記憶

自律的に監視する唯一の記憶スキル。

データベースもベクトルも手動保存も不要。LLMオブザーバーが会話を優先順位付きのメモに圧縮し、成長に応じて統合し、見逃したものを復旧します。5層の冗長性、ゼロメンテナンス。月額約0ドル(無料モデル使用)。

他の記憶スキルが「覚えておくこと」を要求する中、これだけはただ注意を払います。

アーキテクチャ

Layer 1: Observer (cron, 15~30分ごと)
    ↓ 最近のメッセージを圧縮 → observations.md
Layer 2: Reflector (observations > 8000語で自動トリガー)
    ↓ 統合、古い情報を削除 → 40~60%削減
Layer 3: Session Recovery (/new または /reset のたびに実行)
    ↓ Observerが見逃したセッションをキャッチ
Layer 4: Reactive Watcher (inotifyデーモン、Linuxのみ)
    ↓ 40回以上の新しいJSONL書き込み後にObserverをトリガー、5分間のクールダウン
Layer 5: Pre-compaction hook (memoryFlush)
    ↓ OpenClawがコンテキストを圧縮する前に緊急キャプチャ

機能

  • Observer: 最近のセッション書き起こし(JSONL)を読み取り、LLMに送信し、優先度レベル(高、中、低)を付けて圧縮された観測結果を observations.md に追加します。
  • Reflector: 観測結果が大きくなりすぎると作動し、関連項目を統合し、古くなった低優先度エントリを削除します。
  • Session Recovery: セッション開始時に実行され、前回のセッションがキャプチャされたかを確認し、キャプチャされていなければ緊急観測を行います。
  • Reactive Watcher: inotifyを使用してセッションディレクトリを監視し、高活動期間をcron間隔より速くキャプチャします。
  • Pre-compaction hook: OpenClawがコンテキストを圧縮しようとするときに発動し、何も失われないことを保証します。

クイックスタート

1. スキルをインストール

clawdhub install total-recall

2. APIキーを設定

.env または OpenClaw 設定に追加:

OPENROUTER_API_KEY=sk-or-v1-xxxxx

3. セットアップスクリプトを実行

bash skills/total-recall/scripts/setup.sh

これにより以下が行われます:

  • メモリディレクトリ構造を作成 (memory/, logs/, バックアップ)
  • Linuxでinotify + systemdを使用している場合: リアクティブウォッチャーサービスをインストール
  • 手動で追加するためのcronジョブとエージェント設定手順を表示

4. エージェントが観測結果を読み込むように設定

エージェントのワークスペースコンテキスト(例: MEMORY.md やシステムプロンプト)に追加:

セッション起動時に `memory/observations.md` を読み込み、セッション間コンテキストとして使用する。

または、OpenClaw の memoryFlush.systemPrompt を使用して起動指示を注入します。

プラットフォームサポート

プラットフォームObserver + Reflector + RecoveryReactive Watcher
Linux (Debian/Ubuntuなど)フルサポートinotify-tools あり
macOSフルサポート利用不可(cronのみ)

すべてのコアスクリプトはポータブルなbashを使用しています。stat、date、md5 コマンドは _compat.sh を通じてクロスプラットフォームで処理されます。

設定

すべてのスクリプトは環境変数から読み取り、適切なデフォルト値を持ちます:

変数デフォルト説明
OPENROUTER_API_KEY(必須)LLM呼び出し用のOpenRouter APIキー
MEMORY_DIR$OPENCLAW_WORKSPACE/memoryobservations.md が置かれる場所
SESSIONS_DIR~/.openclaw/agents/main/sessionsOpenClawセッション書き起こし
OBSERVER_MODELstepfun/step-3.5-flash:free圧縮用のプライマリモデル(無料)
OBSERVER_FALLBACK_MODELnvidia/nemotron-3-nano-30b-a3b:freeプライマリが失敗した場合のフォールバック(無料)
OBSERVER_LOOKBACK_MIN15遡る時間(分)(日中)
OBSERVER_MORNING_LOOKBACK_MIN480遡る時間(分)(午前8時前)
OBSERVER_LINE_THRESHOLD40リアクティブトリガーまでの行数(Linux)
OBSERVER_COOLDOWN_SECS300リアクティブトリガー間のクールダウン(秒)(Linux)
REFLECTOR_WORD_THRESHOLD8000Reflectorが作動するまでの単語数
REFLECTOR_MODELnvidia/nemotron-3-super-120b-a12b:free観測結果統合用モデル(無料)
REFLECTOR_FALLBACK_MODELopenrouter/hunter-alphaReflectorモデルが失敗した場合のフォールバック(無料)
OPENCLAW_WORKSPACE~/your-workspaceワークスペースルート

LLMプロバイダー設定

Total RecallはOpenAI互換のチャット補完APIを使用します。環境変数を設定することでプロバイダーを切り替えられます:

変数デフォルト説明
LLM_BASE_URLhttps://openrouter.ai/api/v1APIエンドポイント
LLM_API_KEYOPENROUTER_API_KEY にフォールバックAPIキー
LLM_MODELdeepseek/deepseek-v3.2使用するモデル

プロバイダー例

# OpenRouter(デフォルト)
export OPENROUTER_API_KEY="your-key"

# Ollama(ローカル)
export LLM_BASE_URL="http://localhost:11434/v1"
export LLM_API_KEY="ollama"
export LLM_MODEL="llama3.1:8b"

# Groq
export LLM_BASE_URL="https://api.groq.com/openai/v1"
export LLM_API_KEY="your-groq-key"
export LLM_MODEL="llama-3.3-70b-versatile"

作成されるファイル

memory/
  observations.md          # メインの観測ログ(起動時に読み込まれる)
  observation-backups/     # Reflectorのバックアップ(最新10件を保持)
  .observer-last-run       # 最後にObserverが実行されたタイムスタンプ
  .observer-last-hash      # 最後に処理されたメッセージの重複排除用ハッシュ
logs/
  observer.log
  reflector.log
  session-recovery.log
  observer-watcher.log

Cronジョブ

セットアップスクリプトは以下のOpenClaw cronジョブを作成します:

ジョブスケジュール説明
memory-observer15分ごと最近の会話を圧縮
memory-reflector毎時観測結果が大きい場合に統合

リアクティブウォッチャー(Linuxのみ)

リアクティブウォッチャーは inotifywait を使用してセッションアクティビティを検出し、cron単独よりも速くObserverをトリガーします。Linux + inotify-tools が必要です。

# inotify-toolsのインストール(Debian/Ubuntu)
sudo apt install inotify-tools

# ウォッチャーステータスの確認
systemctl --user status total-recall-watcher

# ログの表示
journalctl --user -u total-recall-watcher -f

コスト

OpenRouterのデフォルトの無料モデルを使用:

  • 通常の使用(observer + reflector)で月額約0ドル(無料モデル使用)
  • 1日あたり約15~30回のcron実行、各実行で数百トークンを処理
  • すべてのデフォルトモデルは無料枠モデル

モデルに関する注意

スクリプトはAPIレスポンスの .content フィールドと .reasoning フィールドの両方を防御的に処理します。ほとんどのモデルは標準の .content フィールドにコンテンツを返しますが、.reasoning へのフォールバックにより、異なるレスポンス形式を使用するモデルとの互換性が確保されます。

動作の仕組み(技術詳細)

Observer

  1. 最近変更されたセッションJSONLファイルを検索
  2. サブエージェント/cronセッションをフィルタリング
  3. ルックバックウィンドウからユーザー + アシスタントメッセージを抽出
  4. MD5ハッシュ比較で重複排除
  5. Observerプロンプトを使用してLLMに送信(優先度ベースの圧縮)
  6. 結果を observations.md に追加
  7. 観測結果が単語しきい値を超えた場合、Reflectorをトリガー

Reflector

  1. 現在の観測結果をバックアップ
  2. 統合指示とともにログ全体をLLMに送信
  3. 出力が入力より短いことを検証(健全性チェック)
  4. 観測結果を統合版に置き換え
  5. 古いバックアップを削除(最新10件を保持)

Session Recovery

  1. /new または /reset のたびに実行
  2. 最後のセッションファイルの最近の行をハッシュ化
  3. 最後のObserver実行時に保存されたハッシュと比較
  4. 不一致の場合: 回復モードでObserverを実行(4時間ルックバック)
  5. フォールバック: Observerが失敗した場合、生のメッセージを抽出

Reactive Watcher

  1. inotifywait を使用してセッションディレクトリを監視
  2. メインセッションファイルへのJSONL書き込みのみをカウント
  3. 40行以上の場合: Observerをトリガー(5分間のクールダウンあり)
  4. cron/外部Observerの実行が検出された場合、カウンターをリセット

プロンプトのカスタマイズ

ObserverとReflectorのシステムプロンプトは prompts/ にあります:

  • prompts/observer-system.txt — 会話の圧縮方法を制御
  • prompts/reflector-system.txt — 観測結果の統合方法を制御

これらを編集して、エージェントの性格や優先順位に合わせてください。


ドリームサイクル

ドリームサイクルはオプションの夜間エージェントで、営業時間外に observations.md を統合します。古いアイテムをアーカイブし、セマンティックフックを追加することで、有用なものが実際に失われることがないようにします。コンテキストはスリムに保たれ、すべてを見つけられる状態が維持されます。

機能

マルチフック検索 — アーカイブされたアイテムごとに4~5の代替検索フレーズ。元の単語と異なる検索でも記憶を見つけられます。

信頼度スコア — すべての観測結果に信頼度スコア(0.0~1.0)とソースタイプ(explicit、implicit、inference、weak、uncertain)が付与されます。高信頼度アイテムはより長く保存され、低信頼度アイテムはより早くアーカイブされます。

メモリタイプシステム — タイプごとにTTLを持つ7つのタイプ: event(14日)、fact(90日)、preference(180日)、goal(365日)、habit(365日)、rule(無期限)、context(30日)。observations.md に非表示のHTMLメタデータコメントとして埋め込まれます。

観測チャンク分割 — 3つ以上の関連する観測結果のクラスターが単一のサマリーエントリに圧縮されます。元の観測結果はアーカイブされ、チャンクフックが代わりに配置されます。最大75%のトークン削減を実現します。

重要度の減衰 — タイプごとの1日あたりの減衰が、各アーカイブ判断の前に重要度スコアに適用されます。アーカイブしきい値を下回ったアイテムは削除対象としてキューに入れられます。レート: event(-0.5/日)、fact(-0.1/日)、preference(-0.02/日)、rule/habit/goal(減衰なし)。

パターンプロモーション — 最近のドリームログから繰り返し発生するテーマ(3日以上にわたって3回以上の発生)をスキャンします。プロモーション提案を memory/dream-staging/ に書き込み、人間のレビューを待ちます。staging-review.sh を使用して、提案の一覧表示、内容確認、承認、または拒否を行います。context タイプは自動的にプロモーションされることはありません。

セットアップ

  1. bash skills/total-recall/scripts/setup.sh を実行 — ドリームサイクルディレクトリが自動的に作成されます。

  2. 夜間のcronジョブを完全なエージェントターンとして追加:

    # ドリームサイクル — 夜間(午前3時推奨。タイムゾーンに合わせて調整)
    # ドリームサイクルは完全なエージェントターンとして実行されます — 直接bash呼び出しではありません。
    # dream-cycle.shはエージェントが呼び出すファイル操作ヘルパーであり、エントリポイントではありません。
    #
    # 0 3 * * * bash -c 'source ~/.openclaw/shared/secrets/openclaw-secrets.env \
    #   && openclaw agent --agent main \
    #   --message "Total Recall ドリームサイクルを実行。$WORKSPACE/skills/total-recall/prompts/dream-cycle-prompt.md の指示に正確に従ってください。\
    # READ_ONLY_MODE=false および DREAM_PHASE=1 を使用。" \
    #   --json >> $WORKSPACE/logs/dream-cycle.log 2>&1'
    
  3. システムプロンプトとして prompts/dream-cycle-prompt.md を使用してcronエージェントを設定。推奨モデル: Claude Sonnet(Dreamer: 分析+判断)、DeepSeek v3.2(Observer: 安価、高速)。

  4. 最初の数夜は READ_ONLY_MODE=true で開始。各実行後に memory/dream-logs/ をチェックし、何をアーカイブしたかを確認。

  5. 満足したら READ_ONLY_MODE=false に切り替え。

設定

変数デフォルト説明
DREAM_TOKEN_TARGET8000統合後のobservations.mdのトークン目標値
READ_ONLY_MODEfalsetrue に設定して書き込みなしのドライラン分析を有効化

ファイル

ファイル説明
scripts/dream-cycle.shエージェントが呼び出す シェルヘルパー(スタンドアロンランナーではありません): プリフライト、アーカイブ、observationsの更新、ログ書き込み、メトリクス書き込み、検証、ロールバック
prompts/dream-cycle-prompt.md夜間ドリームサイクル実行用のエージェントプロンプト
dream-cycle/README.mdドリームサイクルクイックリファレンス
schemas/observation-format.md拡張観測結果メタデータ形式

作成されるディレクトリ

memory/
  archive/
    observations/        # アーカイブされたアイテム(1夜につき1つの.mdファイル)
    chunks/              # チャンク化された観測グループ
  dream-logs/            # 夜間実行レポート
  dream-staging/         # 人間のレビューを待つパターンプロモーション提案
  .dream-backups/        # 実行前の安全バックアップ
research/
  dream-cycle-metrics/
    daily/               # 夜間ごとのJSONメトリクス

トラブルシューティング

Observerが動作しない?

  • logs/observer.log でエラーを確認
  • OPENROUTER_API_KEY が設定され、有効であることを確認
  • cronがアクティブであることを確認: crontab -l

セッション開始時に観測結果が読み込まれない?

  • エージェントの起動指示に memory/observations.md の読み込みが含まれていることを確認
  • MEMORY_DIR が正しい場所を指していることを確認

リアクティブウォッチャーがトリガーしない(Linux)?

  • systemctl --user status total-recall-watcher を実行
  • inotify-tools がインストールされていることを確認: which inotifywait
  • ウォッチャーログを表示: journalctl --user -u total-recall-watcher -f

ドリームサイクルがアーカイブしすぎる?

  • READ_ONLY_MODE=true を有効にし、本稼働前にドリームログを確認
  • DREAM_TOKEN_TARGET を引き上げて、1回の実行あたりのアーカイブを減らす

ドリームサイクルが十分にアーカイブしない?

  • DREAM_TOKEN_TARGET を引き下げて、より積極的な統合をトリガー

インスピレーション

このシステムは、人間の記憶が睡眠中にどのように機能するかに触発されています。海馬(オブザーバー)が経験をキャプチャし、睡眠中の統合(リフレクター)中に重要な記憶が強化され、ノイズが破棄されます。

詳しく読む: Your AI Has an Attention Problem

"Get your ass to Mars." — さあ、エージェントの記憶を機能させましょう。

関連スキル