這部影片由 Bilibili 創作者「碼里奧 Ziho」製作,深入拆解了 OpenClaw(原 Clawdbot)的 AI 記憶系統運作原理。影片圍繞記憶的寫入、儲存與讀取三個環節,說明該工具如何透過 Markdown 檔案儲存日常記錄與長期記憶,並運用 RAG(檢索增強生成)技術搭配向量索引,讓 AI 能夠回憶起過往的對話內容,實現「越用越聰明」的效果。
原影片連結:https://www.bilibili.com/video/BV1fv61B4EQ5
影片重點
- OpenClaw 的記憶以純 Markdown 形式儲存在智能體的工作區中
- 記憶系統分為「日常記錄」和「長期記憶」兩種類型
- 每次對話結束時會觸發 Silent Agent Turn,自動總結對話內容
- 長期記憶分散在 Memory.md、Sword.md、Tools.md、User.md 等檔案中
- AI 可主動記錄重要事件,使用者也可手動命令 AI 記住特定資訊
- 記憶讀取使用 RAG(Retrieval Augmented Generation)技術
- 新對話會自動載入過去兩天的對話記錄和長期記憶
- Memory.search 功能需手動開啟,否則 AI 只能逐一翻閱記憶檔案
- 索引系統使用 Embedding 模型將資料向量化,存入 SQLite 資料庫
- 支援 Hybrid Search,結合向量相似度匹配與 BM25 文本搜索
詳細內容
[00:00] OpenClaw 簡介與記憶系統概覽
OpenClaw(原名 Clawdbot)是一款近期備受關注的 AI 工具,它不僅能使用電腦上的各種工具、支援遠程指揮,最令人印象深刻的特色是它能「越用越智能」——能記住使用者之前的聊天記錄。
根據官方文件的描述,OpenClaw 的記憶是以「純 Markdown」的形式,儲存在智能體的工作區當中。整個記憶系統圍繞 Markdown 檔案運作,可以分為三個環節:記憶的寫入、記憶的儲存、以及記憶的讀取。
[00:43] 記憶儲存:日常記錄與長期記憶
記憶儲存路徑下有大量的 Markdown 檔案,分為兩大類:
日常記錄:每次和 AI 的對話結束(或即將達到上下文限制)時,系統會觸發一次「Silent Agent Turn」——這是一輪使用者不可見的對話。在這輪隱藏對話中,AI 會自動總結當次會話的內容,以日期格式寫入記錄。例如「小福喜歡吃什麼?小福最喜歡吃三文魚」這樣的精簡摘要。需要注意的是,這個功能需要在 Config 裡主動開啟。
長期記憶:由多個專門的 Markdown 檔案組成:
- Memory.md:記錄重要資訊
- Sword.md:記錄 AI 的聊天風格
- Tools.md:記錄可使用的工具
- User.md:記錄使用者資訊(如生日、寵物等)
[01:51] 長期記憶的兩種寫入方式
長期記憶有兩種儲存方式:
第一種是自動寫入:根據提示詞的設定,當 AI 發現了重要的事件、想法、決定、觀點或學到的內容時,它會主動將這些資訊記錄到長期記憶檔案中。
第二種是手動命令:使用者可以直接命令 AI,例如「幫我記住某件事情」,AI 就會將指定的內容寫入長期記憶的對應檔案。
[02:18] 記憶讀取:RAG 檢索增強生成
記憶的使用依賴一個核心概念——RAG(Retrieval Augmented Generation,檢索增強生成)。當使用者與 AI 進行對話時,系統會主動搜索已儲存的記憶,將相關內容拼接到上下文中,讓 AI 能夠了解之前發生的事情。
對於每個新的對話 Session,系統會自動載入過去兩天的對話記錄,以及長期記憶(即 Memory.md 等檔案的內容),作為上下文的一部分提供給 AI。
[03:04] Memory.search 功能與手動翻閱的對比
當使用者詢問例如「小福喜歡吃什麼」時,AI 會調用 Memory.search 工具進行搜索。但這個功能預設並未開啟,需要在 Config 的 Agents 設定中找到 Memory.search 手動打開。
在未啟用 Memory.search 的情況下,AI 會透過上下文手動翻閱記憶檔案,逐個閱讀 Markdown 檔案來查找資訊。這種方式效率非常低,尤其是當對話記錄越來越多時,問題會更加明顯。
[04:00] 索引系統:Embedding 與向量化
要提升記憶搜索效率,需要啟用索引功能。在 Config Agents 中找到 Memory.search session index 並開啟,同時配置 Google 或 OpenAI 的 API(也可使用 local,但配置較為複雜)。
有了 API 之後,系統會對記錄進行 Embedding。為了避免頻繁構建索引,系統採用了 Debounce(防抖)機制:距離上一次構建 1.5 秒之後,或達到閾值(50 條新消息或 100,000 bytes 的新內容)時,才會觸發新一輪索引構建。
構建索引時,系統會調用 Google 或 OpenAI 的 Embedding 模型,將資料切塊、向量化後保存到 SQLite 資料庫中。資料庫中的每個向量都會標示其所屬的檔案和位置。
[05:15] 索引搜索與 Hybrid Search
有了索引之後,使用 Memory.search 時,系統會比對搜索內容與索引資料的相似度,然後調用 Memory.get 獲取完整文件。
此外,系統還支援 Hybrid Search(Memory.searchHyper,預設開啟),同時使用:
- 向量相似度匹配:基於語意理解的搜索
- BM25 演算法:傳統的精確文本搜索
這兩種方式兼顧了語意理解和精確匹配,最終將搜索結果合併(merge)後拼接到上下文中,讓使用者能輕鬆找到之前的聊天記錄。
我的想法
這部影片清楚地拆解了 OpenClaw 的記憶系統架構,讓我們看到即使是看似神奇的「AI 記憶」功能,底層其實是相當務實的工程實作——Markdown 檔案 + RAG + 向量搜索。
值得注意的是,這套記憶系統的設計反映了當前 AI Agent 領域的一個重要趨勢:將非結構化的對話資訊轉化為結構化的知識儲存。透過 Silent Agent Turn 自動總結、分類儲存到不同的 Markdown 檔案,再用 Embedding + Hybrid Search 高效檢索,形成了一個完整的記憶生命週期。
對於想要建構類似系統的開發者,有幾個實用的啟示:第一,Debounce 機制在索引構建中很重要,可以避免不必要的 API 呼叫成本;第二,Hybrid Search 結合語意搜索和關鍵字搜索是目前的最佳實踐;第三,將記憶以 Markdown 純文字儲存的做法既簡單又具可移植性,值得參考。
進階測驗:AI 記憶系統拆解
共 5 題,包含情境題與錯誤診斷題。
1. 你正在使用 OpenClaw,發現它無法記住你昨天告訴它的寵物名字。你想讓 AI 能更有效率地搜索過往記憶。 情境題
你應該優先做什麼來改善搜索效率?
2. 你發現 OpenClaw 的索引系統在短時間內被頻繁觸發構建,導致 API 呼叫成本過高。 情境題
根據 OpenClaw 的設計,系統應該用什麼機制來避免這個問題?
3. 你希望 OpenClaw 在搜索記憶時,既能理解語意相近的內容,又能精確匹配特定關鍵字。 情境題
OpenClaw 使用什麼技術來同時實現這兩個需求?
4. 小華設定好 OpenClaw 後,發現每次開啟新對話時 AI 完全不記得之前的任何內容,但他確信之前有正常對話過。 錯誤診斷
最可能的根本原因是什麼?
5. 小明在 OpenClaw 中問「我昨天說了什麼?」,AI 花了很長時間才回覆,而且回覆中提到它「逐一讀取了多個 Markdown 檔案」。 錯誤診斷
這個效能問題最可能的原因是什麼?

