Theme / v13.24.1

Claude-Mem

Claude Code 持久化記憶系統

指令詳解

get_observations 工具詳解

如何使用 get_observations 檢索本地持久化記憶庫中與當前任務相關的核心決策與規則

指令用途

在大語言模型開始執行一項任務(例如進行程式碼重構)時,如果沒有對專案的歷史限制(ADR、代碼偏好、硬體配置)進行檢索,AI 助手極易寫出不符合當前儲存庫規範的程式碼。

get_observations 是 Claude-Mem 提供的 持久化記憶檢索器。當 AI 助手啟動新會話,或開發者在對話中提及某個特定主題(如 DatabasePLC)時,AI 會調用此工具在本地 SQLite 記憶體資料庫中進行語意向量或關鍵字檢索,將歷史 Session 沉澱下來的架構事實注入到當前會話中,避免重複犯錯。


運作流程

  1. 語意比對:接收 query(查詢字串)與 limit(回傳筆數限制)。
  2. 記憶庫檢索:在本地資料庫中檢索與關鍵字關聯度最高的長期觀察(Long-term Observations)。
  3. 安全注入:回傳高純度的摘要,自動格式化為 System Context 一部分。

實戰對話範例

範例:查詢與 PLC 通訊連線相關的記憶

  • You:
    /opsx:explore "我們需要修改 PLC 通訊模組。請幫我查詢我們之前有沒有關於 PlcConnection 的記錄或注意事項。"
  • AI:

    好的,為了遵循我們之前的設計決策,我將調用 claude-memget_observations 工具,拉取與 “PlcConnection” 相關的持久化記憶。

    CM 呼叫: get_observations(query: "PlcConnection")
    CM 回傳:

    [
      {
        "observationId": "obs_1002",
        "category": "architecture",
        "summary": "PLC 連線在生產環境下高載延遲大,必須在 AppDbContext 和 Socket 連線中強制設定 CommandTimeout 為 60 秒,嚴禁改回預設 30 秒。"
      }
    ]

    分析
    檢索到一筆黃金記憶:我們曾經在 2026-07-16 決定將逾時時間調整為 60 秒

    這項記憶提醒了我們在重構時,必須保留 60 秒的逾時設定,防止因為改回 30 秒而引發隨機斷連 Bug。接下來我們開始檢視修改的程式碼嗎?