團隊共享記憶庫:OpenClaw Agent 與 Hindsight 的協作之道
團隊共享記憶庫:OpenClaw Agent 與 Hindsight 的協作之道
前言
當你開始在 OpenClaw 上運行多個 Agent 時,是否曾遇到這樣的困擾?
你在 Copilot Agent 裡交代了「我喜歡繁體中文」,但切換到 Report Agent 時,它依然用簡體中文回覆。你在 Photography Agent 裡討論的拍攝計畫,切換到 Book Agent 時完全不記得這件事。
每個 Agent 都像是一個失憶症患者,無法共享彼此的記憶。這就是「資訊孤島」問題。
好消息是:Hindsight 的設計本來就支援共享記憶庫。只要設定得當,所有 Agent 都可以訪問同一個記憶池,讓協作真正變得順暢。
第一章:為什麼需要共享記憶?
分散的記憶造成資訊孤島
想像一下,如果公司裡每個部門都有自己的文件系統,但彼此之間完全無法訪問。業務部知道的客戶偏好,工程部不知道;工程部發現的問題,產品部也看不到。這就是沒有共享記憶時,AI Agent 會遇到的問題。
當你的 OpenClaw 運行多個 Agent 時,每個 Agent 如果都有獨立的記憶空間,會造成以下幾個問題:
首先,每次對話都需要重新介紹背景。昨天的會議結論、用戶的偏好設定、進行的專案進度,每個新對話都要重新說明一遍。這不只浪費時間,更讓 AI 的回應顯得「不貼心」。
其次,相同的資訊需要重複儲存。如果有三個 Agent 都需要知道「微風使用繁體中文」,你就得在三個不同的地方輸入這條資訊。當你需要更新時,又要改三個地方。
最後,缺乏全局視角。沒有共享記憶的情況下,每個 Agent 都只能看到自己的狹隘範圍,無法為用戶提供跨領域的綜合建議。
共享記憶的價值
當所有 Agent 共用同一個記憶庫時,這一切都改變了。
你在任何一個 Agent 留下的筆記,其他所有 Agent 都能看到。你告訴攝影 Agent 的拍攝想法,報告 Agent 也能參考。你在 Copilot 建立的專案脈絡,切換到 Email Agent 時依然有效。
這就像是從「每個人有自己的筆記本」變成「大家共用一個團隊知識庫」。資訊不再被困在個別 Agent 裡,而是成為真正的共享資產。
第二章:理解 Hindsight 的 Bank 機制
什麼是 Bank?
在深入設定之前,我們需要先理解 Hindsight 的一個核心概念:Bank。
Bank 是 Hindsight 用來隔離和管理記憶的基本單位。你可以把它想像成一個「記憶容器」或「記憶資料庫」。每一個 Bank 都有自己獨立的命名空間,存放在同一個 PostgreSQL 資料庫中的不同 schema 裡。
當你向 Hindsight 儲存一筆記憶時,這筆記憶會被歸到某個 Bank 下。當你召回記憶時,也是從特定的 Bank 中取出。
Bank ID 的命名規則
Hindsight 的 Bank ID 有特定的命名格式:
{prefix}-{agentId}::{userId}
舉例來說,如果你的 bankIdPrefix 是 openclaw,agent ID 是 main,user ID 是 [USER_ID],那麼完整的 Bank ID 就會是:
openclaw-main::[USER_ID]
這個格式的設計是,為了了在同一個 Hindsight 實例中,支援多個 Agent 和多個用戶的所有組合。
預設 Bank vs 自訂 Bank
Hindsight 預設會為每個 Agent-User 組合建立一個獨立的 Bank。這種設計的好處是隱私——每個用戶的記憶不會被其他用戶看到。
但有時候,你可能希望多個 Agent 共享同一個 Bank,讓它們能看到相同的記憶。這就是我們接下來要討論的「共享 Bank」設定。
每個 Agent 能否有自己的 Bank?
可以的。預設情況下,每個 Agent 都會有自己的 Bank,用 agentId 來區分。例如:
openclaw-main::[USER_ID]- 主 Agent 的 Bankopenclaw-copilot::[USER_ID]- Copilot Agent 的 Bankopenclaw-photography::[USER_ID]- Photography Agent 的 Bank
這些 Bank 在資料庫中是完全獨立的,存放在不同的 schema 裡。
第三章:OpenClaw Hindsight 插件的設定模式
模式 A:所有 Agent 共用同一個 Bank
這種模式下,不論是哪個 Agent,所有記憶都會寫入同一個 Bank。
設定方式:
{
"plugins": {
"entries": {
"hindsight-openclaw": {
"enabled": true,
"config": {
"dynamicBankId": false,
"bankId": "shared-memory"
}
}
}
}
}
優點:
- 所有 Agent 完全共享記憶
- 設定最簡單
- 使用者只需要在一處更新偏好
缺點:
- Agent 之間沒有隱私
- 記憶可能會被不同 Agent 的對話內容汙染
- 難以區分記憶的來源
適用場景:
- 個人使用,所有 Agent 都服務同一個人
- 記憶庫主要是使用者偏好和背景資訊
模式 B:每個 Agent 有獨立的 Bank
這是預設模式,每個 Agent 都有自己專屬的 Bank。
設定方式:
{
"plugins": {
"entries": {
"hindsight-openclaw": {
"enabled": true,
"config": {
"dynamicBankId": true,
"dynamicBankGranularity": ["agent", "user"],
"bankIdPrefix": "openclaw"
}
}
}
}
}
優點:
- 每個 Agent 的記憶完全隔離
- 可以針對不同 Agent 訓練不同的「人格」
- 容易追蹤記憶的來源
缺點:
- Agent 之間隔離,缺乏協同效應
- 使用者需要為每個 Agent 單獨建立偏好
- 相同的背景資訊需要重複輸入
適用場景:
- 多個用戶共享同一個 OpenClaw 實例
- 每個 Agent 有不同的專業領域和用途
模式 C:混合模式(推薦)
這種模式下,系統會自動在「共享」和「獨立」之間取得平衡。
主要的用戶偏好和背景資訊存在一個共享 Bank 中,而每個 Agent 也有自己專屬的 Bank 來存放專業領域的臨時資訊。
設定方式:
{
"plugins": {
"entries": {
"hindsight-openclaw": {
"enabled": true,
"config": {
"dynamicBankId": true,
"dynamicBankGranularity": ["agent", "user"],
"bankIdPrefix": "openclaw",
"autoRecall": true,
"autoRetain": true,
"retainTags": ["source:openclaw"]
}
}
}
}
}
優點:
- 共享核心記憶
- 每個 Agent 也有自己的專業記憶
- 彈性好,適合大多數使用情境
第四章:實際設定教學
查看目前的插件設定
在修改之前,讓我們先看看你目前的設定。編輯你的 OpenClaw 設定檔案:
openclaw config edit
找到 plugins.entries.hindsight-openclaw.config 的部分,你應該會看到類似的內容:
"hindsight-openclaw": {
"enabled": true,
"config": {
"hindsightApiUrl": "http://localhost:8888",
"autoRecall": true,
"autoRetain": true,
"dynamicBankId": true,
"dynamicBankGranularity": ["agent", "user"],
"bankIdPrefix": "openclaw"
}
}
修改 dynamicBankGranularity 參數
dynamicBankGranularity 參數控制 Bank 的顆粒度:
- 設為
["user"]:所有 Agent 共享同一個 Bank(以用戶區分) - 設為
["agent", "user"]:每個 Agent-User 組合有獨立 Bank
如果你想要所有 Agent 共享記憶,可以將 dynamicBankGranularity 設為只有 user:
"dynamicBankGranularity": ["user"]
但如果你希望每個 Agent 有自己的 Bank,但同時也能訪問共享資訊,保持 ["agent", "user"] 不變,因為 Hindsight 會自動處理跨 Bank 的召回。
設定 bankIdPrefix 來區分不同 Bank
bankIdPrefix 是 Bank ID 的前綴。預設是 openclaw,你可以根據喜好修改:
"bankIdPrefix": "myagent"
修改後,你的 Bank ID 會變成 myagent-main::[USER_ID] 的格式。
重啟服務讓設定生效
修改完設定後,需要重啟 Gateway 才能生效。最好使用我們之前建立的啟動腳本,確保 Hindsight 先啟動、Gateway 再啟動:
bash ~/.openclaw/scripts/start-openclaw.sh
或是手動重啟:
openclaw gateway restart
第五章:驗證與測試
如何確認各 Agent 已正確連接
重啟後,你可以透過查看 Gateway 日誌來確認插件是否正確啟動:
tail -f ~/.openclaw/logs/gateway.log | grep hindsight
如果看到類似以下的輸出,表示插件正常運作:
[hindsight] plugin entry invoked
[hindsight] registering plugin service
[hindsight] registering agent hooks
[hindsight] agent hooks registered
測試記憶是否能在 Agent 間共享
讓我們做一個簡單的測試:
步驟 1:在 Copilot Agent 中建立一筆測試記憶
告訴 Copilot Agent:「請記住這句話:微風的咖啡偏好是熱美式加奶精」。
步驟 2:檢查記憶是否已儲存
透過 API 查看所有 Agent 的 Bank:
curl -s "http://localhost:8888/v1/default/banks" \
-H "Authorization: Bearer YOUR_API_KEY"
步驟 3:在另一個 Agent 中嘗試召回
切換到另一個 Agent,詢問:「我的咖啡偏好是什麼?」
如果共享設定正確無誤,應該能得到正確的答案。
查看 Hindsight 的記憶注入日誌
Gateway 日誌會記錄每次記憶注入的狀況:
[hindsight] injecting 10 memories into context (bank: openclaw-main::[USER_ID])
[hindsight] injecting 8 memories into context (bank: openclaw-copilot::[USER_ID])
如果你看到某個 Bank 的數量異常(例如始終是 0),可能是該 Agent 的連線有問題。
第六章:常見問題與解決方案
問題一:Agent 無法連接到 Hindsight
症狀: 插件日誌顯示 fetch failed 或 Cannot connect to external Hindsight API
解決方法:
- 確認 Hindsight 是否正在運行:
curl http://localhost:8888/health - 如果沒有運行,先啟動 Hindsight 再重啟 Gateway
- 確認
hindsightApiUrl設定正確(預設是http://localhost:8888) - 使用安全啟動腳本:
bash ~/.openclaw/scripts/start-openclaw.sh
問題二:記憶數量異常或沒有更新
症狀: Bank 的記憶數量停在某個數字不動,或是召回的內容過時
解決方法:
- 檢查 Hindsight 的處理延遲——記憶萃取可能需要幾秒鐘
- 查看 Hindsight 日誌是否有錯誤:
tail ~/.openclaw/hindsight/hindsight.log - 確認 LLM API 設定正確,萃取功能需要有效的 API Key
- 嘗試手動建立一筆記憶來測試寫入功能
問題三:多個 Agent 同時寫入的衝突處理
症狀: 擔心多個 Agent 同時寫入會造成資料衝突或覆蓋
解決方法:
- Hindsight 底層使用 PostgreSQL,有完善的交易機制,不需要擔心衝突
- 每個 Agent 的寫入會自動隔離在自己的 Bank 裡
- 共享 Bank 的場景下,Hindsight 會自動處理並髮引用
- 建議定期使用 Hindsight 的 consolidation 功能來整理和合併記憶
問題四:忘記當前使用的是哪個 Bank
解決方法:
你可以隨時查看 Gateway 日誌中最近一筆的 injecting memories 記錄,它會顯示當前使用的 Bank ID:
injecting 15 memories into context (bank: openclaw-main::[USER_ID])
也可以透過 API 直接查詢 Bank 列表:
curl -s "http://localhost:8888/v1/default/banks" \
-H "Authorization: Bearer YOUR_API_KEY"
第七章:讓其他 Agent 知道並善用 Hindsight
設定完成後,你可能會想:「現在其他 Agent 知道有 Hindsight 可以用了嗎?他們會自動開始使用嗎?」
答案是:插件會自動處理這件事,但你也可以透過一些方式讓效果更好。
Hindsight 插件的自動化機制
當你安裝並啟用 @vectorize-io/hindsight-openclaw 插件後,以下事情會自動發生:
自動記憶萃取(Auto-Retain)
每次 Agent 與用戶的對話結束時,插件會自動萃取對話中的重要資訊,並存入對應的 Bank。你不需要告訴 Agent 「請把這件事記住」——插件會自動幫你做到。
自動記憶召回(Auto-Recall)
每次 Agent 開始新對話時,插件會自動從 Bank 中召回最相關的記憶,並注入到上下文(context)中。Agent 會在完全不知情的情況下,獲得這些記憶的幫助。
這就是這個插件設計的美妙之處:對話雙方都不需要額外操作,記憶功能在背景默默運作。
如何驗證其他 Agent 正在使用 Hindsight
即使插件是全自動的,你依然可以驗證它確實在工作:
方法 1:查看日誌中的記憶注入記錄
每次 Agent 處理對話時,日誌會顯示類似這樣的訊息:
[hindsight] injecting 12 memories into context (bank: openclaw-copilot::[USER_ID])
如果你看到不同 Agent 的 Bank 都有這樣的記錄,代表所有 Agent 都正在使用 Hindsight。
方法 2:測試跨 Agent 記憶共享
- 在 Copilot Agent 中說:「我的名字是微風,請記住」
- 等待 30 秒讓記憶萃取完成
- 切換到 Report Agent(同一個用戶)
- 詢問:「我叫什麼名字?」
如果設定正確,Report Agent 應該能正確回答。
透過系統提示詞增強 Agent 的記憶意識
雖然插件會自動處理記憶萃取和召回,但你可以透過系統提示詞(System Prompt)讓 Agent 更好地善用這些記憶。
在 OpenClaw 的設定中,你可以為每個 Agent 添加這樣的提示:
你是一個配備了 Hindsight 長期記憶系統的 AI 助理。
重要原則:
- 你有訪問過去對話記憶的能力
- 當用戶提到過去的事情時,主動搜索相關記憶
- 如果記憶中有相關資訊,在回覆中體現出來
- 不要假設用戶需要重複解釋已經記錄過的事情
每次回覆前,可以考慮:
1. 這件事在記憶中有記錄嗎?
2. 用戶的偏好或習慣是什麼?
3. 之前的專案進度到哪裡了?
這樣的提示可以幫助 Agent 更有意識地利用 Hindsight 的能力,而不是把它當作透明的背景服務。
為不同 Agent 建立不同的「記憶使用策略」
每個 Agent 的用途不同,你可能希望它們以不同的方式使用記憶:
專業型 Agent(如 Copilot、Report)
- 重點:召回用戶偏好、專案脈絡、之前討論的內容
- 提示方向:強調「主動搜索相關記憶」、「不要假設用戶需要重複」
創意型 Agent(如 Photography、Book)
- 重點:召回用戶的審美偏好、創作風格、已完成的作品
- 提示方向:強調「瞭解用戶風格」、「保持創作連貫性」
瑣事型 Agent(如 Email、NAS)
- 重點:召回用戶的帳號設定、偏好操作方式
- 提示方向:強調「記住用戶的設定偏好」、「提高執行效率」
讓新 Agent 快速上手的簡單方法
如果你建立了一個新的 Agent,想讓它快速知道有 Hindsight 可用,最簡單的方式是:
在 Agent 的歡迎訊息或系統提示詞中加入:
提示:我配備了 Hindsight 長期記憶系統。
我會記住我們的對話內容,並在未來參考。
你不需要重複告訴我已經記住的事情。
這麼做有兩個好處:
- 用戶知道:他們不需要每次都重複同樣的資訊
- Agent 知道:它會有意識地依賴記憶系統,而不是每次都假設用戶需要從頭解釋
記憶的隱私與安全考量
最後,雖然 Hindsight 讓記憶共享變得簡單,但也需要注意一些安全問題:
共享 vs 獨立的平衡
- 共享 Bank 讓所有 Agent 都能看到相同的資訊
- 如果某些內容非常敏感,可能需要考慮使用獨立 Bank
- 建議:一般偏好可以共享,敏感內容手動處理
記憶的生命週期
- Hindsight 預設會自動合併(consolidate)記憶
- 但你不應該完全依賴它來管理非常敏感的資訊
- 重要資訊建議另外備份
總結
在這篇文章中,我們探討瞭如何讓 OpenClaw 的多個 Agent 共用 Hindsight 記憶資料庫。
我們首先理解了「資訊孤島」問題——沒有共享記憶時,每個 Agent 都像是失憶症患者。接著介紹了 Hindsight 的 Bank 機制,說明如何透過 Bank 來組織和隔離記憶。
最重要的部分是如何設定插件的三種模式:完全共享、獨立 Bank、以及混合模式。我推薦大多數使用者採用混合模式,既能享受共享記憶的便利,又能在必要時保持 Agent 的獨立性。
然後我們學會瞭如何驗證設定是否正確運作,以及遇到問題時的疑難排解方法。
最後一章特別強調,Hindsight 插件會自動為所有 Agent 啟用記憶功能,但你依然可以透過系統提示詞來增強 Agent 的記憶使用意識。
希望這篇文章幫助你在 OpenClaw 上打造一個真正「互聯互通」的 AI Agent 協作環境。
相關文章:
- 《讓 AI 記得你:Hindsight 記憶系統完整解析》
- 《從零開始:Hindsight 記憶系統安裝教學》
- 《從 404 到正常運行:Hindsight MiniMax 串接疑難排解》
留言
張貼留言
歡迎留下您的心靈足跡👍