Sessions and memory

推斷出的承諾

承諾是短期存在的後續追蹤記憶。啟用後,OpenClaw 可以 注意到某段對話建立了未來回訪的機會,並記得稍後再提出。

範例:

  • 你提到明天有面試。OpenClaw 可能會在之後回訪。
  • 你說你很疲憊。OpenClaw 可能稍後詢問你是否睡了覺。
  • 代理表示會在某件事改變後跟進。OpenClaw 可能會追蹤 那個未閉合事項。

承諾不是像 MEMORY.md 那樣的持久事實,也不是精確的 提醒。它們介於記憶與自動化之間:OpenClaw 會記住一個 綁定於對話的義務,然後由 Heartbeat 在到期時送出。

啟用承諾

承諾預設為關閉。請在設定中啟用:

openclaw config set commitments.enabled true
openclaw config set commitments.maxPerDay 3

等效的 openclaw.json

{
  "commitments": {
    "enabled": true,
    "maxPerDay": 3
  }
}

commitments.maxPerDay 會限制在滾動的一天內,每個代理工作階段 可以送出的推斷後續追蹤數量。預設值為 3

運作方式

代理回覆後,OpenClaw 可能會在獨立脈絡中執行隱藏的背景擷取流程。 該流程只尋找推斷出的後續追蹤承諾。它不會寫入可見對話,也不會要求主要代理 針對擷取流程進行推理。

找到高信心候選項目時,OpenClaw 會儲存一項承諾,其中包含:

  • 代理 id
  • 工作階段金鑰
  • 原始頻道與傳送目標
  • 到期時間範圍
  • 簡短的建議回訪內容
  • 供 Heartbeat 判斷是否送出的非指令性中繼資料

傳送會透過 Heartbeat 進行。承諾到期時,Heartbeat 會將該承諾加入同一代理與頻道範圍的 Heartbeat 回合中。 模型可以送出一則自然的回訪訊息,或回覆 HEARTBEAT_OK 來略過它。 如果 Heartbeat 設定為 target: "none",到期承諾會保留在內部, 不會送出外部回訪。承諾傳送提示不會重播原始對話文字,而到期承諾的 Heartbeat 回合 會在沒有 OpenClaw 工具的情況下執行。

OpenClaw 絕不會在寫入推斷出的承諾後立即傳送它。 到期時間會被限制在承諾建立後至少一個 Heartbeat 間隔之後, 因此後續追蹤不會在被推斷出的同一刻回響。

範圍

承諾會限定在建立時的確切代理與頻道脈絡中。在 Discord 中與某個代理對話時 推斷出的後續追蹤,不會由另一個代理、另一個頻道或不相關的工作階段送出。

此範圍是此功能的一部分。自然回訪應該感覺像同一段對話的延續, 而不是全域提醒系統。

承諾與提醒

需求 使用
"Remind me at 3 PM" 排程任務
"Ping me in 20 minutes" 排程任務
"Run this report every weekday" 排程任務
"I have an interview tomorrow" 承諾
"I was up all night" 承諾
"Follow up if I do not answer this open thread" 承諾

精確的使用者請求本來就屬於排程器路徑。承諾只用於 推斷出的後續追蹤:也就是使用者沒有要求提醒, 但對話明確建立了有用的未來回訪時刻。

管理承諾

使用 CLI 檢查並清除已儲存的承諾:

openclaw commitments
openclaw commitments --all
openclaw commitments --agent main
openclaw commitments --status snoozed
openclaw commitments dismiss cm_abc123

請參閱 openclaw commitments 取得命令參考。

隱私權與成本

承諾擷取會使用一次 LLM 流程,因此啟用它會在符合條件的回合後增加背景模型 用量。該流程會對使用者可見的對話隱藏,但它可以讀取最近的交流,以判斷是否存在 後續追蹤。

已儲存的承諾是本機 OpenClaw 狀態。它們是操作性記憶,不是 長期記憶。使用以下命令停用此功能:

openclaw config set commitments.enabled false

疑難排解

如果預期的後續追蹤沒有出現:

  • 確認 commitments.enabledtrue
  • 檢查 openclaw commitments --all 中是否有待處理、已略過、已延後或已過期的 記錄。
  • 確保該代理的 Heartbeat 正在執行。
  • 檢查該代理工作階段的 commitments.maxPerDay 是否已達上限。
  • 請記住,精確提醒會被承諾擷取略過,應改為出現在排程任務下。

相關