跨對話記憶
對於個人或完全受信任的代理程式,可透過每個代理程式的一項設定,啟用跨其他私人對話的範圍受限回想:session.dmScope 必須未設定或為 "main",且任何繫結都不得覆寫 session.dmScope。任何已設定的私訊隔離都會使其預設關閉。明確設定的 true 或 false 一律優先。啟用後,OpenClaw 會為該代理程式的工作階段逐字稿建立索引,並在符合條件的私人回覆前執行主動記憶擷取程序。此程序可讀取同一代理程式其他私人對話中的相關逐字稿摘錄,但不包含目前正在回答的對話。
隱私界線是固定的:
- 私人直接對話與持續存在的明確 UI 對話可彼此回想
- 群組和頻道既不是回想來源,也不是回想目的地
- 其他代理程式的逐字稿永遠不符合條件
- 沒有足夠對話中繼資料的未知或已封存逐字稿會遭拒絕
tools.sessions.visibility,也不會授予更廣泛的 sessions_* 工具存取權。共用工作區記憶(MEMORY.md 和 memory/*.md)會維持既有行為。
主動記憶必須維持啟用。擷取會在符合條件的回覆中增加一個範圍受限的阻塞步驟;發生逾時、搜尋無法使用或結果為空時,回覆都會繼續進行,不附帶回想出的逐字稿情境。OpenClaw 的內建記憶提供者可透過內建和 QMD 後端支援這條受保護的逐字稿回想路徑。其他記憶提供者會維持各自的回想行為,但不會自動取得私人逐字稿授權。openclaw doctor 會回報不受支援的提供者或缺少 memory_search 工具。
進階主動記憶快速入門
貼入openclaw.json 以套用進階安全預設值:開啟外掛、範圍限定為 main、僅限私訊工作階段,且模型繼承自工作階段。
plugins.entries.*(包括 active-memory.config)屬於無須重新啟動的設定類別:閘道會自動重新載入外掛執行階段,不需要手動重新啟動。若仍要強制完整重新啟動,請執行:
plugins.entries.active-memory.enabled: true會開啟外掛config.agents: ["main"]僅讓main代理程式加入config.allowedChatTypes: ["direct"]將範圍限定為私訊工作階段(群組/頻道必須明確加入)config.model(選用)會固定使用專用回想模型;未設定時會繼承目前的工作階段模型- 僅在無法解析明確指定或繼承的模型時,才會使用
config.modelFallback config.fastMode可選擇性覆寫回想的快速模式,而不變更主要代理程式config.promptStyle: "balanced"是recent模式的預設值- 主動記憶仍只會針對符合條件的互動式持續對話工作階段執行(請參閱執行時機)
運作方式
阻塞式子代理程式只能呼叫已設定的記憶回想工具(請參閱記憶工具)。若查詢與可用記憶之間的關聯薄弱,它會傳回NONE,主要回覆則不附加額外情境並繼續進行。
主動記憶是對話強化功能,而非全平台推論功能:
適用情境包括工作階段會持續存在且面向使用者、代理程式擁有值得搜尋的長期記憶,而且連續性/個人化比原始提示詞的確定性更重要,例如穩定偏好、重複習慣,以及應自然呈現的長期情境。它不適合自動化、內部工作程式、單次 API 工作,或任何隱藏個人化會令人意外的場合。
執行時機
主動記憶有兩條啟用路徑:- 跨對話記憶會自動以有效
memory.search.rememberAcrossConversations設定已啟用的代理程式為目標,但僅限私人直接對話或持續存在的明確 UI 對話。 - 進階主動記憶以
plugins.entries.active-memory.config.agents中列出的代理程式 ID 為目標,並套用外掛的聊天類型與聊天 ID 控制。
/active-memory off 會暫停該對話的兩條路徑。若任何條件不成立,主動記憶不會在該輪執行,主要回覆也不受影響。
工作階段類型
config.allowedChatTypes 控制哪些對話類型可執行進階主動記憶路徑。它無法擴大跨對話記憶的範圍:即使進階主動記憶允許用於群組或頻道,該產品設定仍僅限私人對話。預設值:
direct、group、channel、explicit(具有不透明工作階段 ID 的入口網站式工作階段,例如 agent:main:explicit:portal-123)。
私訊工作階段預設會執行;群組、頻道和明確工作階段則必須選擇加入:
config.allowedChatIds 和 config.deniedChatIds:
allowedChatIds是已解析對話 ID 的允許清單。當清單非空時,主動記憶只會針對對話 ID 位於清單中的工作階段執行——這會同時縮小所有允許聊天類型的範圍,包括私訊。若要保留所有私訊,同時只縮小群組範圍,也請將直接對話對象 ID 加入allowedChatIds,或讓allowedChatTypes僅限於正在測試的群組/頻道推出範圍。deniedChatIds是拒絕清單,其優先順序一律高於allowedChatTypes和allowedChatIds。
chat_id/open_id、Telegram 聊天 ID、Slack 頻道 ID)。比對不區分大小寫。若 allowedChatIds 非空,且 OpenClaw 無法解析該工作階段的對話 ID,主動記憶會略過該輪,而不會猜測。
工作階段切換
無須編輯設定,即可暫停或繼續目前聊天工作階段的主動記憶:plugins.entries.active-memory.config.enabled、代理程式的 memory.search.rememberAcrossConversations 設定或其他全域設定。
若要改為暫停/繼續所有工作階段,請使用全域形式(需要擁有者或 operator.admin):
plugins.entries.active-memory.config.enabled,但維持 plugins.entries.active-memory.enabled 開啟,因此之後仍可使用此命令重新開啟主動記憶。
如何查看
主動記憶預設會注入隱藏且不受信任的提示詞前置內容,不會顯示在一般回覆中。請開啟與所需輸出相符的工作階段切換項目:/verbose on會新增狀態行:🧩 Active Memory: status=ok elapsed=842ms query=recent summary=34 chars/trace on會新增偵錯摘要:🔎 Active Memory Debug: Lemon pepper wings with blue cheese.
/trace raw 時,追蹤的 Model Input (User Role) 區塊會顯示原始隱藏前置內容:
查詢模式
config.queryMode 控制阻塞式子代理程式可看到多少對話內容。請選擇仍足以妥善回答後續問題的最小模式;隨著情境大小增加,將 timeoutMs 從 message 增加至 recent,再增加至 full。
- message
- recent
- 完整
僅傳送最新的使用者訊息。適合需要最快速度、最強烈偏向回想穩定偏好,而且後續輪次不需要對話情境時使用。使用
config.timeoutMs 時,可從約 3000-5000 ms 開始。提示詞樣式
config.promptStyle 控制子代理程式傳回記憶時的積極程度或嚴格程度:
未設定
config.promptStyle 時的預設對應:
config.promptStyle 一律會覆寫此對應。
模型備援政策
若未設定config.model,主動記憶會依下列順序解析模型:
config.modelFallbackPolicy 是為舊版設定保留的已棄用相容性欄位;
它不再變更執行階段行為——modelFallback 嚴格來說只是上述鏈中的最後手段,
並非在已解析模型發生錯誤時改用另一個模型的執行階段容錯移轉機制。
速度建議
不設定config.model(繼承工作階段模型)是最安全的預設做法:
它會遵循你現有的供應商、驗證及模型偏好。若要降低延遲,
請改用專用的快速模型——回憶品質固然重要,但此處的延遲比主要回答路徑
更重要,而且工具範圍很窄(僅限記憶回憶工具)。
合適的快速模型選項:
cerebras/gpt-oss-120b,專用的低延遲回憶模型google/gemini-3-flash,不變更主要聊天模型的低延遲備援模型- 不設定
config.model,使用一般的工作階段模型
Cerebras 設定
chat/completions 存取權限——
僅有 /v1/models 可見性並不保證具備該權限。
記憶工具
config.toolsAllow 設定阻塞式子代理程式可為進階主動記憶呼叫的
具體工具名稱。預設值取決於目前的記憶供應商:
如果已設定的工具皆不可用,或子代理程式執行失敗,
主動記憶會略過該輪的回憶,而主要回覆會在沒有記憶上下文的情況下繼續。
對於自訂回憶工具,非空白且模型可見的工具輸出會視為回憶證據,
除非結構化結果欄位明確回報空白結果或失敗。
toolsAllow 僅接受具體的記憶工具名稱:萬用字元、group:*
項目,以及核心代理程式工具(read、exec、message、web_search
及類似工具)都會在隱藏的子代理程式啟動前被靜默篩除。
內建記憶
不需要明確設定toolsAllow:
LanceDB 記憶
安裝並設定 LanceDB 後,主動記憶會自動使用memory_recall;不需要明確設定 toolsAllow:
memory.search.rememberAcrossConversations 不會透過 memory_recall 公開私人工作階段
逐字稿。當 LanceDB 是作用中的記憶供應商時,請使用 LanceDB 的自動回憶
或上述進階設定。
Lossless Claw
Lossless Claw 是具有自有回憶工具的 外部上下文引擎外掛(openclaw plugins install @martian-engineering/lossless-claw)。請先將其設定為
上下文引擎;請參閱上下文引擎。接著將
主動記憶指向其工具:
lcm_expand 加入 toolsAllow;Lossless Claw 將其用作
委派展開的較低階工具,不適合頂層的主動記憶子代理程式。
Lossless Claw 會變更上下文組裝方式,但不會取代目前的記憶供應商。
同時使用 rememberAcrossConversations 時,請將 memory_search 保留在 toolsAllow
中;僅包含 LCM 工具的清單對進階主動記憶仍然有效,
但會停用產品的逐字稿回憶路徑。
進階替代設定
不屬於建議設定。config.thinking 會覆寫子代理程式的思考層級(預設為 "off",
因為主動記憶在回覆路徑中執行,而額外思考時間會直接增加
使用者可感受到的延遲):
config.fastMode 僅覆寫阻塞式記憶子代理程式的快速模式。
請使用 true、false 或 "auto";若不設定,則繼承一般的
代理程式、工作階段及模型預設值。"auto" 會使用回憶模型已設定的
fastAutoOnSeconds 截止值:
config.promptAppend 會在預設提示詞之後、對話上下文之前加入
操作人員指示——當非核心記憶外掛需要特定工具順序或查詢塑形時,
請搭配自訂 toolsAllow 使用:
config.promptOverride 會完全取代預設提示詞(之後仍會附加對話
上下文)。除非刻意測試不同的回憶契約,否則不建議使用——
預設提示詞已調校為向主要模型傳回 NONE
或精簡的使用者事實上下文:
逐字稿持久保存
阻塞式子代理程式執行時,會在呼叫期間建立真正的session.jsonl
逐字稿。預設會將其寫入暫存目錄,並在執行完成後立即刪除。
若要將這些逐字稿保留在磁碟上以供偵錯:
config.transcriptDir 變更相對子目錄。請謹慎使用:
在繁忙的工作階段中,逐字稿可能快速累積;full 查詢
模式會重複大量對話上下文,而且這些逐字稿包含隱藏的提示詞上下文
及回憶出的記憶。
設定
所有主動記憶設定都位於plugins.entries.active-memory 下。
實用的調校欄位:
建議設定
從recent 開始:
/verbose on 顯示狀態行,並使用 /trace on 顯示偵錯摘要
— 兩者都會在主要回覆後作為後續訊息傳送,而非在主要回覆
之前。接著改用 message 以降低延遲,或者若額外內容
值得較慢的子代理程式執行時間,則改用 full。
冷啟動寬限時間
在 v2026.5.2 之前,外掛會在冷啟動期間,默默將timeoutMs 額外延長 30000
毫秒,讓模型暖機、嵌入索引載入及第一次
回想能共用一個較大的預算。v2026.5.2 將該寬限時間移至明確的
setupGraceTimeoutMs 設定後方:除非你選擇啟用,否則 timeoutMs 現在預設為回想工作的
預算。阻塞式掛鉤會以兩個固定階段包覆該預算:回想
開始前,工作階段/設定預檢最多可使用 1500 毫秒;
回想工作停止後,另有固定的 1500 毫秒用於中止收尾和逐字稿
復原。這兩項額度都不會延長模型或工具的
執行時間。
如果你是從 v2026.4.x 升級,並曾針對舊版
隱含寬限機制調整 timeoutMs(建議的起始值 timeoutMs: 15000 就是其中一個
範例),請設定 setupGraceTimeoutMs: 30000,以恢復 v5.2 之前的有效
預算:
timeoutMs + setupGraceTimeoutMs + 3000 ms(已設定的
回憶工作預算,加上最多 1500 ms 的預檢時間,再加上固定的
1500 ms 回憶後完成寬限時間)。內嵌的回憶執行器使用
相同的有效逾時預算,因此 setupGraceTimeoutMs 同時涵蓋
外層提示詞建構監控器與內層阻塞式回憶執行。
對於資源吃緊、且可接受冷啟動延遲作為
取捨的閘道,也可使用較低的值(5000-15000 ms)——代價是
閘道重新啟動後的第一次回憶更可能在暖機完成前
傳回空結果。
偵錯
如果主動記憶未出現在預期位置:- 確認外掛已在
plugins.entries.active-memory.enabled下啟用。 - 若要跨對話使用記憶功能,請確認代理程式的有效
memory.search.rememberAcrossConversations設定已啟用,執行openclaw doctor以驗證目前的記憶提供者支援受保護的 對話逐字稿回憶,並確認明確設定時,config.toolsAllow包含memory_search。 若要使用進階主動記憶,請確認代理程式 ID 已列於config.agents。 - 確認你是透過符合條件的互動式持續對話進行測試。
- 請記住,群組和頻道絕不會使用跨對話的對話逐字稿回憶。
- 開啟
config.logging: true並觀察閘道日誌。 - 使用
openclaw status --deep驗證記憶搜尋本身是否正常運作。
maxSummaryChars。如果主動記憶速度太
慢,請降低 queryMode、降低 timeoutMs,或減少近期輪次數量和
每輪字元上限。
常見問題
進階主動記憶使用已設定記憶外掛的回憶 流水線,因此大多數非預期的回憶結果都是嵌入提供者的問題,而非 主動記憶的錯誤。預設的memory-core 路徑使用 memory_search 和
memory_get;memory-lancedb 插槽使用 memory_recall。如果你使用其他
記憶外掛,請確認 config.toolsAllow 指定該外掛實際
註冊的工具。跨對話記憶的範圍較窄:目前的記憶
提供者必須支援 OpenClaw 受保護的同一代理程式/私人工作階段回憶
路徑。
嵌入提供者已切換或停止運作
嵌入提供者已切換或停止運作
如果未設定
memory.search.provider,OpenClaw 會使用 OpenAI 嵌入。若要使用 Bedrock、DeepInfra、Gemini、GitHub
Copilot、LM Studio、本機、Mistral、Ollama、Voyage 或 OpenAI 相容的
嵌入,請明確設定 memory.search.provider。如果設定的提供者無法運作,memory_search 可能
降級為僅使用詞彙的擷取;提供者選定後發生的執行階段
失敗不會自動改用備援提供者。只有在你刻意需要單一備援提供者時,才設定選用的
memory.search.fallback。如需完整的提供者清單和範例,請參閱記憶搜尋。回憶速度緩慢、結果為空或不一致
回憶速度緩慢、結果為空或不一致
- 開啟
/trace on,以在工作階段中顯示由外掛擁有的主動記憶偵錯 摘要。 - 開啟
/verbose on,以便在每次回覆後也查看🧩 Active Memory: ...狀態列。 - 查看閘道日誌中是否出現
active-memory: ... start|done、memory sync failed (search-bootstrap)或提供者嵌入錯誤。 - 執行
openclaw status --deep,以檢查記憶搜尋後端和 索引健康狀態。 - 如果你使用
ollama,請確認已安裝嵌入模型 (ollama list)。
閘道重新啟動後的第一次回憶傳回 `status=timeout`
閘道重新啟動後的第一次回憶傳回 `status=timeout`
在 v2026.5.2 及更新版本中,如果第一次回憶觸發時,冷啟動設定(模型暖機 + 嵌入
索引載入)尚未完成,該次執行可能會用完設定的
timeoutMs 預算,並傳回
status=timeout 和空白輸出。閘道日誌會在重新啟動後第一次符合條件的回覆前後顯示
active-memory timeout after Nms。如需建議的 setupGraceTimeoutMs 值,請參閱建議設定中的冷啟動寬限。