total-recall
自動で監視する唯一のメモリスキルです。データベースも、ベクトル化も、手動保存も不要。LLMオブザーバーが会話を優先度付きのメモに圧縮し、増えたら統合し、見落としたものを復元します。5層の冗長性で、メンテナンスはゼロ。月額費用は約$0.00(フリーティアモデル使用時)。他のメモリスキルが「記憶することを忘れるな」と求める一方、このスキルは単に注意を払い続けます。
description の原文を見る
The only memory skill that watches on its own. No database. No vectors. No manual saves. Just an LLM observer that compresses your conversations into prioritised notes, consolidates when they grow, and recovers anything missed. Five layers of redundancy, zero maintenance. ~$0.00/month (using free-tier models). While other memory skills ask you to remember to remember, this one just pays attention.
SKILL.md 本文
Total Recall — 自律型エージェントメモリ
唯一、自動的に監視するメモリスキル。
データベース不要。ベクトル不要。手動保存不要。会話をLLMオブザーバーが優先度付きノートに圧縮し、増大時に統合し、見落とした情報を復旧します。5層の冗長性、ゼロメンテナンス。無料層モデル使用時は月額約$0.00。
他のメモリスキルは「覚えておくことを思い出してください」と言いますが、このスキルは単に注意を払います。
アーキテクチャ
Layer 1: Observer (cron, every 15-30 min)
↓ compresses recent messages → observations.md
Layer 2: Reflector (auto-triggered when observations > 8000 words)
↓ consolidates, removes superseded info → 40-60% reduction
Layer 3: Session Recovery (runs on every /new or /reset)
↓ catches any session the Observer missed
Layer 4: Reactive Watcher (inotify daemon, Linux only)
↓ triggers Observer after 40+ new JSONL writes, 5-min cooldown
Layer 5: Pre-compaction hook (memoryFlush)
↓ emergency capture before OpenClaw compacts context
機能概要
- Observer は最近のセッショントランスクリプト(JSONL)を読み込み、LLMに送信し、優先度レベル(高、中、低)付きの圧縮された観察結果を
observations.mdに追記します - Reflector は観察結果が大きく成長した際に起動し、関連項目を統合し、古い低優先度エントリを削除します
- Session Recovery はセッション開始時に実行され、前回のセッションがキャプチャされたか確認し、されていない場合は緊急観察を実行します
- Reactive Watcher はinotifyでセッションディレクトリを監視するため、高活動期は定期実行間隔より高速でキャプチャされます
- 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/, backups) - Linux + inotify + systemd の場合: リアクティブウォッチャーサービスをインストール
- 手動で追加するcronジョブとエージェント設定の指示を表示
4. エージェントを設定して観察結果を読み込む
エージェントのワークスペースコンテキスト(例:MEMORY.md またはシステムプロンプト)に追加:
セッション開始時に、セッション間のコンテキストのために `memory/observations.md` を読み込みます。
または、OpenClawの memoryFlush.systemPrompt を使用してスタートアップ指示をインジェクトします。
プラットフォームサポート
| プラットフォーム | Observer + Reflector + Recovery | Reactive Watcher |
|---|---|---|
| Linux (Debian/Ubuntu/等) | フルサポート | inotify-tools対応 |
| macOS | フルサポート | 利用不可(cronのみ) |
すべてのコアスクリプトはポータブルなbashを使用します。stat、date、md5 コマンドは _compat.sh を通じてクロスプラットフォーム対応です。
設定
すべてのスクリプトは妥当なデフォルト値を持つ環境変数から読み込みます:
| 変数 | デフォルト | 説明 |
|---|---|---|
OPENROUTER_API_KEY | (必須) | LLM呼び出し用のOpenRouter APIキー |
MEMORY_DIR | $OPENCLAW_WORKSPACE/memory | observations.md が存在する場所 |
SESSIONS_DIR | ~/.openclaw/agents/main/sessions | OpenClawセッショントランスクリプト |
OBSERVER_MODEL | stepfun/step-3.5-flash:free | 圧縮用の主要モデル(無料) |
OBSERVER_FALLBACK_MODEL | nvidia/nemotron-3-nano-30b-a3b:free | 主要モデル失敗時のフォールバック(無料) |
OBSERVER_LOOKBACK_MIN | 15 | 過去を遡る分数(昼間) |
OBSERVER_MORNING_LOOKBACK_MIN | 480 | 過去を遡る分数(午前8時前) |
OBSERVER_LINE_THRESHOLD | 40 | リアクティブトリガー前の行数(Linux) |
OBSERVER_COOLDOWN_SECS | 300 | リアクティブトリガー間のクールダウン(Linux) |
REFLECTOR_WORD_THRESHOLD | 8000 | reflectorが実行される前の単語数 |
REFLECTOR_MODEL | nvidia/nemotron-3-super-120b-a12b:free | 観察結果統合用モデル(無料) |
REFLECTOR_FALLBACK_MODEL | openrouter/hunter-alpha | reflectorモデル失敗時のフォールバック(無料) |
OPENCLAW_WORKSPACE | ~/your-workspace | ワークスペースのルート |
LLMプロバイダー設定
Total Recallは任意のOpenAI互換チャット完了APIを使用します。環境変数を設定してプロバイダーを切り替えます:
| 変数 | デフォルト | 説明 |
|---|---|---|
LLM_BASE_URL | https://openrouter.ai/api/v1 | APIエンドポイント |
LLM_API_KEY | OPENROUTER_API_KEY にフォールバック | APIキー |
LLM_MODEL | deepseek/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-observer | 15分ごと | 最近の会話を圧縮 |
memory-reflector | 1時間ごと | 観察結果が大きい場合は統合 |
リアクティブウォッチャー(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経由の無料モデルを使用した場合:
- 無料層モデル使用時は月額約$0.00(通常使用時 observer + reflector)
- 1日約15~30回の定期実行、各実行で数百トークンを処理
- すべてのデフォルトモデルは無料層モデル
モデルに関する注記
スクリプトにはAPIレスポンスの .content と .reasoning の両フィールドに対する防御的な処理が含まれています。ほとんどのモデルは標準的な .content フィールドでコンテンツを返しますが、.reasoning へのフォールバックは異なるレスポンス形式を使用する可能性があるモデルとの互換性を保証します。
技術的な仕組み
Observer
- 最近変更されたセッションJSONLファイルを検出
- サブエージェント/cronセッションを除外
- ルックバックウィンドウからユーザー+アシスタントメッセージを抽出
- MD5ハッシュ比較を使用して重複排除
- observerプロンプト(優先度ベースの圧縮)と共にLLMに送信
- 結果を
observations.mdに追記 - 観察結果が単語閾値を超える場合、reflectorをトリガー
Reflector
- 現在の観察結果をバックアップ
- 統合指示と共にLLMにログ全体を送信
- 出力が入力より短いことを検証(サニティチェック)
- 観察結果を統合版に置き換え
- 古いバックアップをクリーンアップ(最新10個を保持)
Session Recovery
/newまたは/resetの際に実行- 最後のセッションファイルの最近の行をハッシュ化
- 最後のobserver実行時に保存されたハッシュと比較
- 不一致の場合: リカバリーモード(4時間ルックバック)でobserverを実行
- フォールバック: observerが失敗した場合、未加工メッセージ抽出
Reactive Watcher
inotifywaitを使用してセッションディレクトリを監視- メインセッションファイルのみへのJSONL書き込みをカウント
- 40行以上後: observerをトリガー(5分クールダウン付き)
- cron/外部observerの実行を検出時にカウンターをリセット
プロンプトのカスタマイズ
observerとreflectorのシステムプロンプトは prompts/ にあります:
prompts/observer-system.txt— 会話がどのように圧縮されるかを制御prompts/reflector-system.txt— 観察結果がどのように統合されるかを制御
エージェントの個性と優先度に合わせて編集します。
ドリームサイクル
ドリームサイクルはオプションの夜間エージェントで、営業時間後に実行され observations.md を統合します。古い項目をアーカイブし、意味論的フックを追加するため、有用な情報は実質的に失われません。コンテキストは簡潔に保たれ、すべてが検索可能なままです。
機能
- すべての観察結果を影響度(critical/high/medium/low/minimal)と経過時間で分類
- 関連性閾値を過ぎた項目をアーカイブ
- アーカイブされた各項目に意味論的フックを追加(特定のキーワード+アーカイブ参照)
- 結果を検証し、何か問題が生じた場合は自動的にロールバック
機能
マルチフック検索 — アーカイブされた各項目につき4~5個の代替検索フレーズ。元の単語とは異なる単語を使用した検索でも記憶が見つかります。
信頼度スコアリング — すべての観察結果は信頼度スコア(0.0~1.0)とソースタイプ(explicit、implicit、inference、weak、uncertain)を取得します。信頼度の高い項目はより長く保持され、信頼度の低い項目はより早くアーカイブされます。
メモリタイプシステム — 7つのタイプとタイプごとのTTL: event (14日)、fact (90日)、preference (180日)、goal (365日)、habit (365日)、rule (無期限)、context (30日)。 observations.md の目に見えないHTMLメタデータコメントとして埋め込まれます。
観察結果チャンキング — 関連する3つ以上の観察結果のクラスタは単一の要約エントリに圧縮されます。ソース観察結果はアーカイブされ、チャンクフックがそれらを置き換えます。最大75%のトークン削減を実現します。
重要度減衰 — 各アーカイブ決定前にタイプごとの日次減衰が重要度スコアに適用されます。減衰して削除閾値を下回った項目は削除キューに入ります。レート: event (-0.5/日)、fact (-0.1/日)、preference (-0.02/日)、rule/habit/goal (減衰なし)。
パターン昇格 — 最近のドリームログをスキャンして再発するテーマ(3日以上にわたって3回以上の出現)を検出します。昇格提案を memory/dream-staging/ に書き込みます。staging-review.sh を使用して提案を一覧表示、表示、承認、または拒否します。context タイプは自動的に昇格されることはありません。
セットアップ
-
bash skills/total-recall/scripts/setup.shを実行 — ドリームサイクルディレクトリが自動的に作成されます。 -
夜間cronジョブを完全なエージェント実行として追加:
# Dream Cycle — 夜間 (推奨: 午前3時; タイムゾーンに合わせて調整) # ドリームサイクルは完全なエージェント実行として実行されます — 直接のbash呼び出しではなく。 # dream-cycle.sh は、エントリポイントではなく、エージェントによって呼び出されるファイル操作ヘルパーです。 # # 0 3 * * * bash -c 'source ~/.openclaw/shared/secrets/openclaw-secrets.env \ # && openclaw agent --agent main \ # --message "Run the Total Recall Dream Cycle. Follow the instructions in \ # $WORKSPACE/skills/total-recall/prompts/dream-cycle-prompt.md exactly. \ # Use READ_ONLY_MODE=false and DREAM_PHASE=1." \ # --json >> $WORKSPACE/logs/dream-cycle.log 2>&1' -
prompts/dream-cycle-prompt.mdをシステムプロンプトとして使用してcronエージェントを設定します。推奨モデル: Dreamer用Claude Sonnet(分析+決定)、Observer用DeepSeek v3.2(安価、高速)。 -
最初の数晩は
READ_ONLY_MODE=trueで開始します。各実行後にmemory/dream-logs/をチェックして、何がアーカイブされるかを検証します。 -
満足したら
READ_ONLY_MODE=falseに切り替えます。
設定
| 変数 | デフォルト | 説明 |
|---|---|---|
DREAM_TOKEN_TARGET | 8000 | 統合後の observations.md のトークンターゲット |
READ_ONLY_MODE | false | 書き込みなしのドライラン分析の場合は true に設定 |
ファイル
| ファイル | 説明 |
|---|---|
scripts/dream-cycle.sh | エージェント によって呼び出される シェルヘルパー(スタンドアロン実行ではない): preflight、archive、update-observations、write-log、write-metrics、validate、rollback |
prompts/dream-cycle-prompt.md | 夜間ドリームサイクル実行用エージェントプロンプト |
dream-cycle/README.md | ドリームサイクルクイックリファレンス |
schemas/observation-format.md | 拡張観察メタデータ形式 |
作成されるディレクトリ
memory/
archive/
observations/ # アーカイブされた項目(夜間につき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を上げてアーカイブを少なくする
ドリームサイクルのアーカイブが不十分?
DREAM_TOKEN_TARGETを下げてより積極的な統合をトリガー
インスピレーション
このシステムは睡眠中の人間の記憶の仕組みにインスパイアされています — 海馬(オブザーバー)が経験をキャプチャし、睡眠統合(リフレクター)中に重要な記憶は強化され、ノイズは破棄されます。
詳細: Your AI Has an Attention Problem
"Get your ass to Mars." — エージェントの記憶をいよいよ機能させましょう。
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- gavdalf
- リポジトリ
- gavdalf/total-recall
- ライセンス
- MIT
- 最終更新
- 2026/4/1
Source: https://github.com/gavdalf/total-recall / ライセンス: MIT