三維記憶系統
概述
工作空間的記憶系統採用三維架構,在帳戶、企業和會話三個維度儲存和管理知識。記憶與對話深度整合 —— 每次對話都會查詢相關記憶注入上下文,每輪互動結束後自動擷取新的記憶。
技術基座: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 實體)
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
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 顏色穩定化:
- 透過
djb2hash 計算實體類型 → 顏色索引 - 同一類型的實體在不同視圖、不同時間都保持同一顏色
- 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
- ...
記憶工具
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 設定 → 記憶,可以瀏覽列表和圖譜
相關文件
- 記憶管理 — APP 端記憶管理介面
- 進階設定 — 企業記憶 — 企業級記憶管理
- 工具管理 — 記憶相關工具(memory_query、memory_manage)
- 多節點架構 — 跨帳號 Gateway 隔離機制
