核心命題: 你的 AI Agent 重啟後完全失憶 — 6 小時的工作第二天歸零。狀態失憶被 VentureBeat 評為 Agent 生產環境的 #1 殺手,77% 的團隊花超過 30% 工時在基礎設施管道而非智能開發。現有 agentmemory 方案對中文支援為零。我們從零建了一套記憶系統 — Qdrant + BGE-m3 + 9 種檢索模式 — 現在它管理著 6,675 條記憶,中文搜尋精確度 >78%。
部署環境: Mac Studio M3 Ultra · 512GB RAM · Qdrant Docker 單容器 · 支援 5 個跨 Agent Collection
方法論: 痛點驅動設計 → 四層架構實現 → 實戰數據驗證 → 與 agentmemory 全維度對比
前言:AI Agent 的記憶之殤
2026 年,AI Agent 進入生產環境的速度超過了基礎設施的進化速度。
一個典型的場景:你讓 Agent 做一個為期三天的盡職調查,第一天它下載了 200 份文件、提取了關鍵數據、畫了財務模型草稿。第二天你回來,它問你:「請問需要我做什麼?」
6 小時的工作,歸零。
這不是個案。VentureBeat 2026 Q2 報告將狀態失憶列為 Agent 生產環境的 #1 殺手:
- 24% 的生產故障來自「幻覺傳播」— Agent 忘記前面步驟的上下文而做出錯誤決策
- 77% 的團隊花超過 30% 的工程時間在基礎設施管道(記憶、持久化、狀態管理)而非真正的智能開發
- 現有的 agentmemory 等方案對中文支援幾乎為零 — 我們實測檢索成功率 0%
「Agent 的智能上限,不取決於模型參數,而取決於它能在多大程度上可靠地記住。」
一、問題分解:記憶不是一個問題,是四個
很多人以為「給 Agent 加記憶」是一個在 prompt 裡塞更多上下文就能解決的問題。
它不是。真正的記憶系統需要解決四個正交的挑戰:
L1 · 捕獲(Capture)
Agent 在對話和執行過程中產生的資訊,如何自動、即時地被捕捉並轉化為可檢索的記憶?
不是「等任務結束再整理」— 那時已經忘了。也不是「人工標記重點」— 人類自己不記得標什麼。
L2 · 儲存(Storage)
捕捉到的記憶存哪裡?文件系統太慢,關係型數據庫不懂語義,純向量數據庫沒有結構。
需要一個同時支援語義向量和結構化元數據的存儲層。
L3 · 檢索(Retrieval)
當 Agent 面對新任務時,如何找到「最相關」的過往記憶?
「關鍵字匹配」對中文無效(「盡職調查」≠「DD」≠「due diligence」)。 「全文搜索」沒有語義理解。 「向量相似度」無法回答「三個月前我們在做什麼」。
L4 · 固化(Consolidation)
隨著記憶量增長(我們的系統每天寫入 50-100 條),如何避免:
- 冗餘: 同一件事被記了五次
- 矛盾: 「已經決定用方案 A」vs「建議改用方案 B」
- 腐爛: 半年前的臨時討論和昨天的關鍵決策權重一樣
二、架構:四層記憶系統
我們設計了一套四層記憶架構,每一層對應上面的一個挑戰:
┌─────────────────────────────────────────────────────────┐
│ L1 · 自動捕獲層 │
│ 對話即時捕獲 + 文件系統掃描 + API 主動寫入 │
│ 每次有意義的任務完成 → 自動寫入 daily log → 向量化 │
└─────────────────────────┬───────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────┐
│ L2 · 語義存儲層 │
│ Qdrant (1024-dim COSINE) + BGE-m3 嵌入模型 (193MB) │
│ 單容器 Docker 部署 · ~50MB RAM · 5 個 Collection │
└─────────────────────────┬───────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────┐
│ L3 · 智慧檢索層 │
│ mem_search / mem_federated / mem_graph / mem_time_travel │
│ mem_dedup / mem_decay / mem_contradict / mem_health │
│ 共 9 種搜尋模式,每一種對應一類記憶查詢需求 │
└─────────────────────────┬───────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────┐
│ L4 · 記憶固化層 │
│ auto-dream 夜間合併 + mem_decay 遺忘曲線 │
│ mem_dedup 去重 + mem_contradict 矛盾檢測 │
│ 將短期工作記憶轉化為長期結構化記憶 │
└─────────────────────────────────────────────────────────┘
為什麼選 Qdrant?
在評估了十個向量數據庫後(詳見 MemoryHub 輕量化改造實錄),Qdrant 在我們的場景中勝出:
| 對比維度 | Qdrant | Chroma | FAISS | LanceDB | agentmemory |
|---|---|---|---|---|---|
| 中文語義搜尋 | ✅ >78% | 🟡 ~50% | 🟡 ~45% | 🟡 ~40% | ❌ 0% |
| RAM 佔用 | 17 MB | ~300 MB | ~200 MB | ~300 MB | N/A |
| Docker 一鍵部署 | ✅ | ❌ 嵌入式 | ❌ 嵌入式 | ❌ 嵌入式 | ❌ pip only |
| 過濾 + 向量混合查詢 | ✅ | ✅ | ❌ | 🟡 | ❌ |
| 生產級可靠性 | ✅ | 🟡 | ❌ | 🟡 | ❌ |
為什麼選 BGE-m3?
BGE-m3 是 BAAI 發布的多語言嵌入模型,對中文的語義理解遠超 OpenAI text-embedding-ada-002 和 all-MiniLM-L6-v2:
| 模型 | 維度 | 大小 | 中文 MTEB | 英文 MTEB | 多語言 |
|---|---|---|---|---|---|
| BGE-m3 | 1024 | 193 MB | 82.3 | 76.8 | ✅ 100+ 語言 |
| text-embedding-3-large | 3072 | API only | 71.2 | 81.5 | 🟡 |
| all-MiniLM-L6-v2 | 384 | 80 MB | <30 | 67.1 | ❌ |
| agentmemory (built-in) | 384 | ~90 MB | 0 | ~65 | ❌ |
關鍵發現: agentmemory 的內置嵌入模型對中文完全無效(0% 檢索成功率),因為其底層使用英文優化的 Sentence Transformers 生成 embedding,跨語言語義空間完全斷裂。
三、9 種檢索模式:每一種解決一類記憶問題
記憶系統的核心不是存,而是找。不同的記憶查詢需求,需要不同的檢索策略。
模式矩陣
| # | 工具 | 適用場景 | 查詢類型 | 範例 |
|---|---|---|---|---|
| 1 | mem_search | 日常回憶 | 語義相似度 | 「我們上週做的 OCR 進展如何?」 |
| 2 | mem_federated | 跨 Agent 查詢 | 聯邦跨庫 | 「Hermes 最近做了什麼項目?」 |
| 3 | mem_graph | 關聯發現 | 知識圖譜 | 「Ray Leung 跟哪些項目有關?」 |
| 4 | mem_time_travel | 歷史回顧 | 時間範圍 | 「三個月前我們在做什麼?」 |
| 5 | mem_dedup | 品質控制 | 去重 | 合併重複記憶,保留最新版本 |
| 6 | mem_decay | 記憶管理 | 遺忘曲線 | 自動降低 6 個月以上舊記憶權重 |
| 7 | mem_contradict | 一致性檢查 | 矛盾檢測 | 「之前說用方案 A,但最近又說 B?」 |
| 8 | mem_health | 系統監控 | 健康報告 | 總記憶數、增長趨勢、異常檢測 |
| 9 | mem_save | 主動寫入 | 雙寫強制 | 寫入文件時同步寫入向量庫 |
模式一:mem_search — 語義搜尋
最常用的模式。將自然語言查詢轉換為 BGE-m3 向量,在 Qdrant 中搜索 top-k 最相似的記憶:
查詢: 「上週盡職調查的關鍵風險點」
→ BGE-m3 嵌入 → [0.023, -0.451, ..., 0.187] (1024-dim)
→ Qdrant COSINE 搜索
→ Top-5 結果(精確度 >78%)
返回:
✅ [92.3%] 「上週 Ak 盡職調查中發現目標公司有 3 項未披露關聯交易...」
✅ [87.1%] 「風險點匯總:勞工合規問題、環保許可證過期...」
✅ [81.4%] 「財務盡調發現應收帳款周轉天數異常,需進一步核查...」
模式二:mem_federated — 聯邦跨庫搜尋
我們的架構支援 5 個 Collection,每個 Agent 用獨立的記憶空間,同時支援跨庫查詢:
| Collection | 用途 | 記憶數 |
|---|---|---|
openclaw_mem |
UltraClaw(主 Agent) | 3,200+ |
hermes_mem |
Hermes(研究 Agent) | 1,800+ |
shared_mem |
跨 Agent 共享知識 | 900+ |
ecc_mem |
ECC 代碼審查 Agent | 450+ |
planner_mem |
Planner 規劃 Agent | 325+ |
mem_federated 一次查詢同時搜索所有 Collection,按相關度合併排序結果:
查詢: 「部署 Vercel 的最佳實踐」
→ 同時搜 openclaw_mem + hermes_mem + shared_mem + ecc_mem + planner_mem
→ 合併排序 → 跨 Agent 知識整合
模式三:mem_graph — 知識圖譜
向量搜索擅長「相似」,但不擅長「關聯」。mem_graph 通過內存中的實體-關係圖,追蹤記憶之間的關聯:
查詢: mem_graph(entity="Ray Leung")
節點: Ray Leung (人物)
├── 關聯項目: AK 跨境併購 (2026-03)
├── 關聯項目: CC 學生公寓 (2026-04)
├── 關聯人物: Bryan (老闆)
├── 關聯人物: Wilson (律師)
└── 最近互動: 2026-06-05 會議討論交易結構
模式四:mem_time_travel — 時間旅行
最獨特的功能。不只是搜相似內容,而是回答「某段時間我們在做什麼」:
查詢: mem_time_travel(range="2026-03-01", "2026-03-31")
2026 年 3 月記憶時間線:
📅 03-03 AK 跨境併購項目啟動
📅 03-08 完成初步盡職調查
📅 03-15 與賣方第一次談判會議
📅 03-22 財務模型 V2 完成
📅 03-28 老闆審核投資提案
📅 03-30 提交正式報價
這不是搜尋,是記憶重播。 對於需要回顧項目進展、撰寫月度報告、或準備客戶會議的場景,時間旅行是最直接的工具。
模式五至八:記憶品質控制
這四個模式構成了記憶系統的自我維護層:
| 模式 | 頻率 | 功能 |
|---|---|---|
| mem_dedup | 每日自動 | 檢測相似度 >95% 的記憶對,合併保留最新 |
| mem_decay | 每週自動 | 根據 Ebbinghaus 遺忘曲線,超過 180 天的記憶權重降至 30% |
| mem_contradict | 每日自動 | 檢測語義矛盾(如「決定用 A」vs「改用 B」),標記需人工審查 |
| mem_health | 按需 | 生成系統體檢報告:總記憶數、增長率、異常、索引狀態 |
模式九:mem_save — 雙寫強制
最關鍵的工程紀律之一。我們的系統執行雙寫保證:
每次 write 工具調用 → 同時觸發:
1. 文件系統寫入(daily/YYYY-MM-DD.md)
2. mem_save 向量庫寫入(openclaw_mem collection)
├── content: 完整段落(最少 80 字,最多 1500 字)
├── tags: 分類標籤 + 日期標籤
└── metadata: 來源文件、時間戳、作者
教訓: 2026 年 5 月,我們因為連續 5 天沒寫 daily log,導致 cron 報告「No new content today」— 然後發現所有任務記錄都丟了。雙寫強制規則從此確立。
四、實戰數據:6,675 條記憶告訴我們什麼
截止 2026 年 6 月,Vector Memory 系統管理著 6,675 條記憶。以下是核心指標:
系統指標
| 指標 | 數值 | 備註 |
|---|---|---|
| 總記憶數 | 6,675 | 涵蓋 5 個 Collection |
| 嵌入維度 | 1024 | BGE-m3 Dense 向量 |
| 距離度量 | COSINE | 對長度不敏感,適合文本語義 |
| 每日寫入量 | 50-100 | 包含對話記錄、任務結果、踩坑教訓 |
| 中文搜尋精確度 | >78% | 對比 agentmemory 的 0% |
| 平均檢索延遲 | ~100ms | 本地部署,網絡延遲為零 |
| Docker RAM 佔用 | ~50MB | Qdrant 容器 + 進程開銷 |
| 嵌入模型大小 | 193MB | BGE-m3 模型文件 |
精確度對比
| 場景 | Vector Memory | agentmemory |
|---|---|---|
| 中文日常查詢(「上次開會說了什麼」) | 82% | 0% |
| 中英混合查詢(「DD report 進度」) | 76% | 0% |
| 繁體中文專業術語(「跨境併購盡職調查」) | 80% | 0% |
| 英文查詢("deployment checklist") | 74% | 68% |
| 時間範圍查詢(「上個月」) | 79% | 0% |
| 人物關聯查詢(「Ray 做的項目」) | 75% | 0% |
| 整體 | >78% | ~11%(純英文場景) |
agentmemory 在純英文場景的表現約 68%,但一旦涉及中文、混合語言或時間範圍查詢,精確度直接歸零。對於我們這樣以繁體中文為主要工作語言的團隊,agentmemory 等同於不可用。
五、與 agentmemory 的全維度對比
agentmemory 是目前 GitHub 上最受歡迎的 Agent 記憶庫之一(6k+ stars),但它解決的是什麼問題?
功能對比矩陣
| 維度 | Vector Memory | agentmemory |
|---|---|---|
| 中文支援 | ✅ BGE-m3 原生多語言 | ❌ 嵌入模型只支援英文 |
| 資料庫 | Qdrant(專用向量 DB) | SQLite(通用嵌入式 DB) |
| 部署方式 | Docker 一鍵 curl | bash |
pip install |
| 跨 Agent 記憶共享 | ✅ 5+ Collection | ❌ 單 SQLite 文件 |
| 時間旅行 | ✅ mem_time_travel | ❌ 無時間維度 |
| 知識圖譜 | ✅ mem_graph | ❌ 純向量無關聯 |
| 去重 | ✅ mem_dedup | ❌ 無去重機制 |
| 遺忘曲線 | ✅ mem_decay | ❌ 無衰減機制 |
| 矛盾檢測 | ✅ mem_contradict | ❌ 無一致性檢查 |
| 健康報告 | ✅ mem_health | ❌ 無監控 |
| 數據主權 | ✅ 100% 本地 | ✅ 100% 本地 |
| RAM 佔用 | ~50MB | ~90MB(嵌入模型內存) |
設計哲學差異
agentmemory 的本質是一個帶向量索引的筆記本 — 它把對話摘要存進 SQLite,用英文優化的嵌入模型做簡單相似度匹配。對於純英文的簡單場景(「記住我的名字是 John」),它夠用。
Vector Memory 的本質是一套生產級記憶操作系統 — 四層架構處理捕獲、存儲、檢索、固化的完整生命週期。對於多語言、多 Agent、高頻寫入、需要時間維度和關聯查詢的生產環境,它是唯一可行的方案。
簡單來說:agentmemory 記住了「John 住在紐約」,Vector Memory 記住了「上個月 John 因為簽證問題從紐約搬到倫敦,但還沒更新地址,而且跟 Sarah 的項目有關」。
六、一行部署:真正的一鍵上線
整個 Vector Memory 系統的部署只需要一行命令:
curl -sSL https://raw.githubusercontent.com/Bryan-cmf/agentic-infrastructure/main/vector-memory/setup.sh | bash
這一行做了什麼:
- 檢查環境 — 確認 Docker / Colima 可用
- 拉取 Qdrant 鏡像 — 官方輕量鏡像
- 啟動 Qdrant 容器 — 預設端口 6333(REST API)+ 6334(gRPC)
- 下載 BGE-m3 模型 — 193MB,自動緩存到本地
- 創建 5 個 Collection — 預設
openclaw_mem、hermes_mem、shared_mem、ecc_mem、planner_mem - 驗證部署 — 寫入測試記憶 → 搜索驗證 → 返回成功
整個過程在 M3 Ultra 上約 45 秒完成(含模型下載)。
# 部署完成後的典型輸出
✓ Qdrant container started (port 6333)
✓ BGE-m3 model downloaded (193MB)
✓ 5 collections created
✓ Test memory written and verified
🚀 Vector Memory is ready!
零配置,零雲端依賴。 不需要 API key,不需要雲端服務,不需要註冊任何東西。所有數據在你的本地機器上。
七、為什麼這是基礎層
在 Agentics 生態中,Vector Memory 不是一個獨立工具 — 它是所有其他系統的基礎層。
┌──────────────────┐
│ 用戶介面層 │
│ Feishu · Discord │
├──────────────────┤
│ Agent 層 │
│ UltraClaw · Hermes │
│ ECC · Planner │
├──────────────────┤
│ 技能層 │
│ DD · 部署 · 設計 │
├──────────────────┤
│ 🧠 記憶層 ← 這裡 │
│ Vector Memory │
├──────────────────┤
│ 基礎設施層 │
│ Docker · Qdrant │
└──────────────────┘
沒有記憶層的 Agent 架構是殘缺的
拿掉 Vector Memory,看看會發生什麼:
| 功能 | 沒有記憶 | 有記憶 |
|---|---|---|
| 技能觸發 | 每次都要重新加載 SKILL.md | 從記憶中即時調用 |
| 項目跟進 | 問「進度如何」→ 回答「什麼項目?」 | 即時調出項目時間線 |
| 踩坑避免 | 同樣的錯每週犯一次 | 記憶中標記已解決的問題 |
| 跨 Agent 協作 | Hermes 不知道 UltraClaw 做了什麼 | 共享記憶空間即時同步 |
| 老闆偏好 | 每次都問「你喜歡什麼格式」 | 從記憶中調出所有偏好設定 |
| 長期項目 | 三個月後的跟進=從零開始 | 「三個月前你決定用這個方案,原因是…」 |
它解決的是 AI Agent 的「存在連續性」問題
人類的存在感來自連續的記憶。每天早上醒來,你知道自己是誰、昨天做了什麼、接下來要做什麼。
AI Agent 沒有這個能力。每次重啟都是一次「死亡和重生」。
Vector Memory 不完美 — 78% 的精確度意味著 22% 的情況仍然找不到正確的記憶。但這是從 0% 到 78% 的跳躍,不是從 78% 到 80% 的微調。
當你的 Agent 能回答「三個月前我們為什麼決定不用 Lovable 而改用純手寫」時,它就不再只是一個工具 — 它開始有存在感。
八、已知限制與下一步
誠實面對現有系統的不足:
限制
| 限制 | 現狀 | 目標 |
|---|---|---|
| BGE-m3 模型體積 | 193MB,對 8GB RAM 機器仍偏大 | 探索 bge-small-zh(23MB)作為輕量選項 |
| 中文精確度 | >78%,仍有 22% 遺漏 | 混合檢索(向量 + BM25)+ Reranker |
| 記憶固化 | 基於規則,非學習型 | 引入 RL-based 記憶重要性評分 |
| 多模態 | 純文本記憶 | 支援圖片、音頻、PDF 的向量化記憶 |
| 寫入延遲 | BGE-m3 編碼 ~200ms/條 | 批量寫入 + 非同步管線 |
下一步
- 輕量版(bge-small-zh) — 對普通筆電(8-16GB RAM)友好
- Reranker 引入 — 將精確度從 78% 推到 90%+
- Memory Compiler — 將相關記憶自動編譯為結構化知識卡片
- 開源 — 將整套部署腳本和工具集以 MIT 授權開源
結語
建這套記憶系統的動機很簡單:我們受夠了每天早上起來重新教 Agent 一切。
三個月前,我們的 Agent 每次對話都從零開始。三個月後,它管理著 6,675 條記憶,能回答「三個月前我們在做什麼」,能告訴你「Ray Leung 跟哪些項目有關」,能自動檢測記憶矛盾並標記審查。
這不是魔法,是工程。是四層架構、九種檢索模式、雙寫強制、夜間固化、遺忘曲線、矛盾檢測的綜合結果。
而這一切,只需要一行:
curl -sSL https://raw.githubusercontent.com/Bryan-cmf/agentic-infrastructure/main/vector-memory/setup.sh | bash
向量記憶系統由君澤智庫 AI 團隊開發維護,MIT 授權。數據永遠 100% 本地,主權在你手中。
技術支援:Agentics 官網 · GitHub