logo
開發者文件
搜尋
三維記憶系統

三維記憶系統

概述

工作空間的記憶系統採用三維架構,在帳戶、企業和會話三個維度儲存和管理知識。記憶與對話深度整合 —— 每次對話都會查詢相關記憶注入上下文,每輪互動結束後自動擷取新的記憶。

技術基座:mem0 REST API + Neo4j 知識圖譜


三維架構

維度 作用域 寫入方式 管理權限 對話注入
帳戶級 userId(跨組織) 手動新增 + 對話自動擷取 使用者自行管理 「使用者概況」注入 system prompt
企業級 orgId(組織隔離) 管理員手動維護 僅工作空間管理員 「企業概況」注入 system prompt
會話級 runId(單次會話) 每輪自動擷取 自動管理 會話內語意查詢

帳戶級記憶

  • 跨組織共享:綁定到 userId,在使用者所有組織中可用
  • 寫入方式
    • 手動:在記憶管理介面或對話中透過命令新增
    • 自動:對話中自動偵測值得記住的資訊
  • 管理介面:APP 設定 → 記憶
  • 詳細文件記憶管理

企業級記憶

  • 組織隔離:綁定到 orgId,僅目前組織成員可見
  • 管理權限:只有工作空間管理員可維護
  • 管理介面:空間管理 → 進階設定 → 企業記憶
  • 詳細文件進階設定 — 企業記憶

會話級記憶

  • 單次會話:綁定到 runId,僅在目前會話內有效
  • 每輪擷取:每輪對話結束後自動分析並擷取記憶
  • 無需管理:系統自動處理

記憶擷取機制

顯式命令(信心值 0.99)

使用者直接要求 Agent 記住或遺忘資訊:

操作 觸發關鍵字
新增記憶 「記住」、「記下」、「儲存記憶」、「儲存到記憶」、「remember」、「store in memory」
刪除記憶 「刪除記憶」、「忘掉」、「忘記」、「forget this」、「remove from memory」

隱式偵測(信心值 0.5-0.93)

系統透過正則模式自動偵測對話中的持久性事實:

訊號類型 範例 信心值
個人檔案 「我叫張三」、「我是前端開發」、「my name is」 0.93
個人所有 「我有一隻貓」、「我養了」、「I own」 0.90
個人偏好 「我喜歡用 TypeScript」、「I prefer」 0.88
助手風格 「以後請用中文回覆」、「always use」、「回應格式偏好」 0.86

信心值閾值

模式 閾值 說明
strict 0.85 保守模式,只擷取高信心值記憶
standard(預設) 0.65 平衡模式
relaxed 0.50 積極模式,更多內容被記住

自動排除規則

以下內容不會被擷取為記憶:

  • 純提問(問號結尾、疑問詞開頭)
  • 閒聊/寒暄
  • 程式碼區塊中的內容
  • 時效性/時間綁定資訊(日期、新聞、臨時狀態)
  • 非持久性話題(bug 回報、錯誤訊息)

知識圖譜

後端儲存(Neo4j)

記憶關係以三元組形式儲存在 Neo4j 圖資料庫中:

(source 實體) --[relationship]--> (target 實體)
                      
                      (source 實體) --[relationship]--> (target 實體)

                    
此代碼塊在浮窗中顯示

N-hop 鄰域查詢(1-4 跳):

MATCH path = (n {name: $entity})-[*1..depth]-(m) WHERE ALL(node IN nodes(path) WHERE node.user_id = $user_id) UNWIND relationships(path) AS rel RETURN source, relationship, target
                      
                      MATCH path = (n {name: $entity})-[*1..depth]-(m)
WHERE ALL(node IN nodes(path) WHERE node.user_id = $user_id)
UNWIND relationships(path) AS rel
RETURN source, relationship, target

                    
此代碼塊在浮窗中顯示

Cypher 查詢保證永遠不跨使用者邊界

前端視覺化

使用 react-force-graph-2d 渲染力導向圖:

節點類型 顏色 說明
Hub 紫色 #6d28d9 使用者/組織中心節點
Fact 藍色 #2563eb 記憶條目
Entity 琥珀色 #f59e0b(預設) 擷取的實體;具體顏色由 djb2 hash 對應到 10 色調色盤

圖譜渲染最佳化(2026-04 更新)NEW

新版圖譜引入兩個密度門閾值,避免節點過多導致標籤重疊:

閾值常數 含義
PILL_READABILITY_MIN_SCALE 1.5 縮放小於 1.5x 不渲染文字標籤
PILL_MIN_SCREEN_AREA_PER_NODE 3000 每節點螢幕面積少於 3000 像素不渲染標籤

兩個條件同時滿足才顯示標籤。未達到時只渲染圓點。

Entity Type 顏色穩定化

  • 透過 djb2 hash 計算實體類型 → 顏色索引
  • 同一類型的實體在不同視圖、不同時間都保持同一顏色
  • 10 色調色盤支援無限類型循環使用

Bug 修復:圖譜關係對應時 sourceTypes / targetTypes 欄位之前被丟棄,導致所有節點都回退到灰色 fallback。此 Bug 已修復(見 sidecar/src/mem0Service.ts)。

多級鑽取

點擊節點可展開其關聯實體,逐層深入知識網路。圖引擎支援:

  • neighborhood() — N-hop 鄰域查詢
  • shortestPath() — 兩實體間最短路徑
  • extractEntitiesFromText() — 從文字擷取實體名

記憶與對話的協同

記憶查詢時機

時機 動作
新建對話 查詢帳戶概況記憶 + 企業概況記憶,拼接到 system prompt
使用者傳送訊息 memory_query 工具語意檢索相關記憶
圖譜擴展 searchWithGraphExpansion — 語意檢索 + 1-hop 圖擴展,返回相關實體和邊

記憶注入位置

在 system prompt 中注入兩段記憶概況:

你是 GPTBots AI 助手... ## 用戶概況 - 用戶是前端開發工程師 - 偏好使用 TypeScript - ... ## 企業概況 - 公司使用 React 技術棧 - 專案代號 Project Alpha - ...
                      
                      你是 GPTBots AI 助手...

## 用戶概況
- 用戶是前端開發工程師
- 偏好使用 TypeScript
- ...

## 企業概況
- 公司使用 React 技術棧
- 專案代號 Project Alpha
- ...

                    
此代碼塊在浮窗中顯示

記憶工具

Agent 可透過以下工具主動查詢和管理記憶:

工具 操作 說明
memory_query list / search / graph_traverse 列表、語意搜尋、圖譜遍歷
memory_manage add / update / delete 新增、修改、刪除記憶
conversation_search search 搜尋歷史對話
recent_chats list 列出近期對話

跨帳號 Gateway 隔離 NEW

當節點以 enterprise 範圍被跨帳號呼叫時:

  • 帳戶級記憶(userId 綁定):❌ 不可存取
  • 企業級記憶(orgId 綁定):✅ 可存取
  • 會話級記憶(本次會話內):✅ 可存取

透過 isRemoteSession 標誌在 mem0Service 查詢階段強制過濾 —— 跨帳號呼叫無法讀取目標節點擁有者的個人記憶。

設計目的:保護個人隱私,同時不影響組織級知識的協同共享。詳見 多節點架構


mem0 能力

記憶後端基於 mem0 提供以下自動化能力:

能力 說明
自動更新 新資訊覆蓋舊資訊(如「我喜歡 Python」 → 「我喜歡 TypeScript」)
自動合併 相似記憶合併為更完整的條目
自動遺忘 矛盾資訊自動清理舊版本

逾時保護

操作 逾時
記憶查詢/管理 25 秒
會話級記憶操作 5 秒(快速逾時,不阻塞對話)
圖譜關係取得 3 秒(逾時後優雅降級)

對使用者意味著什麼

記憶系統讓 Agent 能「認識你」。 沒有記憶,每次對話 Agent 都像初次見面的陌生人;有了記憶,Agent 知道你的偏好、專案背景和工作習慣。

三個維度在實際中的體現

  • 帳戶記憶:「你說過喜歡 TypeScript」 → Agent 在所有組織的對話中都優先使用 TypeScript
  • 企業記憶:管理員新增了「公司使用 PostgreSQL 資料庫」 → 組織內所有成員與 Agent 討論資料庫時,Agent 預設推薦 PostgreSQL 方案
  • 會話記憶:你在這次對話中說「目前專案叫 Project Alpha」 → 這次對話中 Agent 記得,新對話中不一定

你可以這樣管理記憶

  • 對於個人偏好:在對話中說「記住我偏好用 dark 主題」,或在 APP 設定 → 記憶中手動新增
  • 對於企業知識:聯絡管理員在空間管理 → 進階設定 → 企業記憶中新增
  • 發現記憶有誤:在對話中說「忘掉之前關於 Python 的偏好」,或在記憶管理中直接刪除
  • 檢視已有記憶:APP 設定 → 記憶,可以瀏覽列表和圖譜

相關文件