Community影像github.com

gavdalf/total-recall

唯一一個會自行監控的記憶技能。無需資料庫、無需向量、無需手動儲存。只靠一個 LLM 觀察者,將對話壓縮成優先級筆記,在筆記增長時進行合併,並能恢復遺漏的任何內容。五層備援,零維護。每月約 $0.00(使用免費模型)。其他記憶技能要你記得去記,而這個技能只管專心傾聽。

total-recall 是什麼?

Total Recall 是一個專為 AI Agent(如 OpenClaw)設計的自動化記憶技能。 它通過一個 LLM 觀察者,在後台持續監控對話記錄,自動壓縮並生成帶優先級的觀察筆記,當筆記過長時自動合併,並能恢復因會話重置等原因遺漏的內容。 支援 Linux 和 macOS,其中 Linux 平台還能利用 inotify 實現即時響應。 該技能無需手動干預,所有操作(壓縮、合併、恢復、備份)全自動完成,成本極低(每月約 $0.00,使用免費模型)。 其獨特的「夢境循環」功能可在夜間模擬人類睡眠時的記憶鞏固過程,對舊觀察進行歸檔、語義掛鉤、置信度評分、重要性衰減和模式提升,確保上下文保持精簡且信息可被檢索。

相容平台✓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 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

Total Recall — 自主 Agent 記憶

唯一一個會自行監控的記憶技能。

無需資料庫。無需向量。無需手動儲存。只靠一個 LLM 觀察者,將對話壓縮成優先級筆記,在筆記增長時進行合併,並能恢復遺漏的任何內容。五層備援,零維護。每月約 $0.00(使用免費模型)。

其他記憶技能要你記得去記,而這個技能只管專心傾聽。

架構

第 1 層:觀察者(cron,每 15-30 分鐘)
    ↓ 壓縮最近的訊息 → observations.md
第 2 層:反射器(自動觸發,當 observations 超過 8000 字時)
    ↓ 合併,移除已過時的資訊 → 減少 40-60%
第 3 層:會話恢復(每次 /new 或 /reset 時執行)
    ↓ 捕捉觀察者可能遺漏的任何會話
第 4 層:反應式監視器(inotify 守護行程,僅 Linux)
    ↓ 在 40 次以上新的 JSONL 寫入後觸發觀察者,冷卻 5 分鐘
第 5 層:預壓縮鉤子(memoryFlush)
    ↓ 在 OpenClaw 壓縮上下文之前緊急捕捉

功能說明

  • 觀察者:讀取最近的會話記錄(JSONL),傳送給 LLM,並將壓縮後的觀察結果附加到 observations.md,附帶優先級(高、中、低)
  • 反射器:當觀察結果過大時自動介入,合併相關項目並移除過時的低優先級條目
  • 會話恢復:在會話啟動時執行,檢查上一個會話是否被捕捉,若無則進行緊急觀察
  • 反應式監視器:使用 inotify 監控會話目錄,確保高活動時期的捕捉速度比 cron 間隔更快
  • 預壓縮鉤子:在 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 工作和 Agent 設定指示,供您手動新增

4. 設定 Agent 載入觀察結果

在 Agent 的工作區上下文(例如 MEMORY.md 或系統提示)中加入:

在會話啟動時,讀取 `memory/observations.md` 以取得跨會話上下文。

或使用 OpenClaw 的 memoryFlush.systemPrompt 來注入啟動指令。

平台支援

平台觀察者 + 反射器 + 恢復反應式監視器
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_THRESHOLD8000觸發反射器的字數門檻
REFLECTOR_MODELnvidia/nemotron-3-super-120b-a12b:free用於合併觀察結果的模型(免費)
REFLECTOR_FALLBACK_MODELopenrouter/hunter-alpha反射器模型失敗時的備用模型(免費)
OPENCLAW_WORKSPACE~/your-workspace工作區根目錄

LLM 提供商設定

Total Recall 使用任何與 OpenAI 相容的聊天補全 API。透過設定環境變數切換提供商:

變數預設值說明
LLM_BASE_URLhttps://openrouter.ai/api/v1API 端點
LLM_API_KEY備用為 OPENROUTER_API_KEYAPI 金鑰
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/     # 反射器備份(保留最近 10 份)
  .observer-last-run       # 上次觀察者執行的時間戳記
  .observer-last-hash      # 上次處理訊息的去重雜湊值
logs/
  observer.log
  reflector.log
  session-recovery.log
  observer-watcher.log

Cron 工作

設定腳本會建立以下 OpenClaw cron 工作:

工作排程說明
memory-observer每 15 分鐘壓縮最近的對話
memory-reflector每小時若觀察結果過大則進行合併

反應式監視器(僅 Linux)

反應式監視器使用 inotifywait 檢測會話活動,並比 cron 更快觸發觀察者。需要 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(使用免費層模型)
  • 每天約 15-30 次 cron 執行,每次處理幾百個 token
  • 所有預設模型皆為免費層模型

模型注意事項

腳本包含對 API 回應中 .content 和 .reasoning 欄位的防禦性處理。雖然大多數模型在標準的 .content 欄位中回傳內容,但備用至 .reasoning 可確保與可能使用不同回應格式的模型相容。

運作方式(技術細節)

觀察者

  1. 尋找最近修改過的會話 JSONL 檔案
  2. 過濾掉子Agent/cron 會話
  3. 從回顧視窗中提取使用者和助理訊息
  4. 使用 MD5 雜湊比較進行去重
  5. 將結果傳送給 LLM,附上觀察者提示(基於優先級的壓縮)
  6. 將結果附加到 observations.md
  7. 若觀察結果超過字數門檻,觸發反射器

反射器

  1. 備份目前的觀察結果
  2. 將整個記錄傳送給 LLM,附上合併指示
  3. 驗證輸出比輸入短(合理性檢查)
  4. 用合併後的版本取代觀察結果
  5. 清除舊備份(保留最近 10 份)

會話恢復

  1. 每次 /new 或 /reset 時執行
  2. 對上一個會話檔案的最新幾行進行雜湊
  3. 與上次觀察者執行時儲存的雜湊進行比較
  4. 若不匹配:以恢復模式執行觀察者(4 小時回顧)
  5. 備用方案:若觀察者失敗,則提取原始訊息

反應式監視器

  1. 使用 inotifywait 監控會話目錄
  2. 僅計算對主要會話檔案的 JSONL 寫入次數
  3. 超過 40 行後:觸發觀察者(附帶 5 分鐘冷卻)
  4. 當檢測到 cron/外部觀察者執行時,重置計數器

自訂提示

觀察者和反射器的系統提示位於 prompts/ 目錄:

  • prompts/observer-system.txt — 控制對話如何被壓縮
  • prompts/reflector-system.txt — 控制觀察結果如何被合併

編輯這些檔案以符合 Agent 的個性和優先級。


夢境循環

夢境循環是一個可選的夜間 Agent,在離峰時段執行以合併 observations.md。它會歸檔過時的項目,並加入語義掛鉤,確保有用的東西不會真正遺失。上下文保持精簡;一切仍然可以找到。

功能說明

  • 根據影響力(關鍵 / 高 / 中 / 低 / 極低)和時效對每個觀察進行分類
  • 歸檔已超過相關性門檻的項目
  • 為每個歸檔項目加入一個語義掛鉤(特定關鍵字 + 歸檔參考)
  • 驗證結果,若出現問題則自動回退

特性

多重掛鉤檢索 — 每個歸檔項目有 4-5 個替代搜尋措辭。即使用與原始詞彙不同的詞語搜尋,仍能找到記憶。

置信度評分 — 每個觀察都獲得一個置信度評分(0.0-1.0)和來源類型(explicit、implicit、inference、weak、uncertain)。高置信度項目保留更久;低置信度項目較早歸檔。

記憶類型系統 — 7 種類型,各有不同的壽命:event(14 天)、fact(90 天)、preference(180 天)、goal(365 天)、habit(365 天)、rule(永不)、context(30 天)。作為不可見的 HTML 元數據註解嵌入在 observations.md 中。

觀察分塊 — 3 個以上相關觀察的叢集被壓縮成單一摘要條目。原始觀察被歸檔;一個塊掛鉤取代它們。可實現高達 75% 的 token 減少。

重要性衰減 — 每次歸檔決策前,對重要性分數應用每日衰減。衰減至歸檔門檻以下的項目將被排入移除佇列。衰減率: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 工作新增為完整的 Agent 回合:

    # 夢境循環 — 夜間(建議淩晨 3 點;請根據您的時區調整)
    # 夢境循環作為一個完整的 Agent 回合執行 — 而不是直接呼叫 bash。
    # dream-cycle.sh 是由 Agent 呼叫的檔案操作輔助工具,而非進入點。
    #
    # 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 Agent。推薦模型:Claude Sonnet 作為夢想家(分析 + 決策),DeepSeek v3.2 作為觀察者(便宜、快速)。

  4. 前幾個晚上使用 READ_ONLY_MODE=true 啟動。每次執行後檢查 memory/dream-logs/,以驗證它原本會歸檔哪些內容。

  5. 滿意後切換至 READ_ONLY_MODE=false。

設定

變數預設值說明
DREAM_TOKEN_TARGET8000合併後 observations.md 的 token 目標
READ_ONLY_MODEfalse設為 true 以進行乾執行分析而不寫入

檔案

檔案說明
scripts/dream-cycle.sh由 Agent 呼叫的 shell 輔助工具(非獨立執行工具):前置檢查、歸檔、更新觀察、寫入日誌、寫入指標、驗證、回退
prompts/dream-cycle-prompt.md夜間夢境循環執行的 Agent 提示
dream-cycle/README.md夢境循環快速參考
schemas/observation-format.md擴展觀察元數據格式

建立的目錄

memory/
  archive/
    observations/        # 歸檔項目(每晚一個 .md 檔案)
    chunks/              # 分塊的觀察組
  dream-logs/            # 夜間執行報告
  dream-staging/         # 等待人工審查的模式提升建議
  .dream-backups/        # 執行前安全備份
research/
  dream-cycle-metrics/
    daily/               # 每晚的 JSON 指標

疑難排解

觀察者沒有執行?

  • 檢查 logs/observer.log 中的錯誤
  • 確認 OPENROUTER_API_KEY 已設定且有效
  • 確認 cron 處於活動狀態:crontab -l

會話啟動時未載入觀察結果?

  • 確保 Agent 的啟動指示包含讀取 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.」— 嗯,讓你的 Agent 的記憶動起來吧。

相關技能