Featured image of post 給 OpenCode 裝上記憶:opencode-mem 插件使用體驗

給 OpenCode 裝上記憶:opencode-mem 插件使用體驗

厭倦了每次都要向 AI 重複解釋專案背景和個人偏好?了解 opencode-mem 如何為 OpenCode 添加持久化記憶功能。本文詳細介紹其輕量級架構、隱私保護特性,以及如何讓 AI 自動學習你的編碼習慣。

引言:重複解釋的煩惱

WebUI

如果你用過 OpenCode(或者其他 AI 編程助手)一段時間,肯定遇到過這種煩人的情況:每次新對話都得從零開始。你得反覆告訴 AI 你的專案結構、編碼偏好、某個特定的 Linux 配置,甚至是最基本的「我喜歡 TypeScript 而不是 JavaScript」這種事實。

每次會話的前幾分鐘都在重複建立那些早就該被記住的上下文。

這就是我為什麼要嘗試 opencode-mem 這個插件的原因——它能讓 OpenCode 擁有持久化記憶能力。用了幾週之後,我想分享一下使用體驗,以及為什麼我認為它是 AI 輔助開發的利器。

GitHub 倉庫: https://github.com/tickernelz/opencode-mem

核心特性:opencode-mem 的獨特之處

1. 輕量且本地優先

opencode-mem 最吸引我的地方是它的本地優先架構。不同於那些把資料發到外部伺服器的雲端記憶方案,opencode-mem 把所有內容都存在本地:

  • SQLite 負責持久化儲存
  • USearch 提供快速的向量索引(失敗時自動回退到精確掃描)
  • 核心功能零外部 API 依賴

這意味著你的資料除非你主動配置,否則永遠不會離開你的機器。對於注重隱私的人來說,這一點非常重要。

2. 自動學習用戶畫像

User Profile

這裡就有意思了。這個插件不只是儲存原始對話記錄——它還會分析你的互動來構建用戶畫像。隨著時間推移,它會學習:

  • 你的編碼風格和偏好
  • 你常用的技術棧
  • 專案中的常見模式
  • 個人習慣和快捷鍵

唯一需要呼叫外部 AI 的是在初始畫像生成階段,這時候用 ChatGPT 或相容的模型。之後所有東西都本地運行。

3. Web 管理介面

有時候你想看看 AI 到底記住了你什麼。內建的 Web 介面(訪問地址 http://127.0.0.1:4747)提供了:

  • 記憶時間線視覺化
  • 用戶畫像查看器
  • 記憶搜尋和管理
  • 專案專屬記憶瀏覽器

對於一個開發者工具來說,這個介面設計得相當不錯——簡潔、快速、而且真的有用。

工作原理:技術架構解析

了解 opencode-mem 的工作原理後,我更欣賞它的優雅設計了:

自動記憶提取

插件用 AI 自動從對話中提取關鍵資訊。當你提到類似「這個專案用微服務架構」這種重要內容時,它會被捕獲為一條記憶。

智能去重

記憶不是簡單地往資料庫裡一丟了事。系統會合併重複或相似的記憶,保持儲存的整潔和相關性。如果你多次提到同一個偏好,它會整合而不是重複儲存。

雙重儲存策略

  • SQLite: 所有持久化資料的源頭
  • USearch: 記憶體中的向量索引,提供閃電般的相似度搜尋

如果 USearch 失敗或不可用,系統會優雅地回退到精確向量掃描——不會崩潰,也不會丟資料。

上下文注入

當你開始新會話時,相關的記憶會自動注入 AI 的上下文中。這個過程是透明的——你會注意到 AI「記得」一些不應該從當前會話知道的事情。

安裝與配置

上手非常簡單:

1
2
# 添加到 OpenCode 配置
# 編輯 ~/.config/opencode/opencode.json
1
2
3
{
  "plugin": ["opencode-mem"]
}

就這些。插件會在下次啟動時自動下載。

配置選項

要自定義的話,建立 ~/.config/opencode/opencode-mem.jsonc

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
{
  "storagePath": "~/.opencode-mem/data",
  "embeddingModel": "Xenova/nomic-embed-text-v1",
  "webServerEnabled": true,
  "webServerPort": 4747,
  "autoCaptureEnabled": true,
  "userProfileAnalysisInterval": 10,
  "maxMemories": 10,
  "compaction": {
    "enabled": true,
    "memoryLimit": 10
  },
  "chatMessage": {
    "enabled": true,
    "maxMemories": 3,
    "excludeCurrentSession": true
  }
}

記憶服務配置

對於 AI 驅動的記憶提取和畫像生成,你需要配置一個大模型提供商:

1
2
3
4
5
6
{
  "memoryProvider": "openai-chat",
  "memoryModel": "deepseek-chat",
  "memoryApiUrl": "https://api.deepseek.com/v1",
  "memoryApiKey": "sk-..."
}

我用的是 DeepSeek-V3.2,因為性價比很高——從對話中提取記憶不需要特別大的模型。

實際使用與最佳實踐

基本記憶操作

插件提供了一個 memory 工具供 AI 使用:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
// 添加記憶
memory({ mode: "add", content: "專案使用微服務架構" });

// 搜尋記憶
memory({ mode: "search", query: "架構決策" });

// 查看畫像
memory({ mode: "profile" });

// 列出最近記憶
memory({ mode: "list", limit: 10 });

我的踩坑經驗

  1. 先開啟自動捕獲: 讓系統自然地學習你的模式,不要急於手動干預
  2. 定期檢查畫像: 每隔幾天看看 Web UI,了解 AI 都學到了你什麼
  3. 對重要偏好要明說: 雖然自動提取效果不錯,但明確說「記住我喜歡…」能確保捕獲
  4. 善用記憶類型: 系統會給記憶分類(偏好、學習到的模式、專案配置等),理解這些有助於有效搜尋

與我的工作流整合

我一直把 opencode-mem 和 oh-my-opencode 模型配置 一起使用。兩者配合得很好——持久化記憶加上優化的 agent 模型,真的打造了一個智能編程助手。

如果你也在用 OpenSpec(我在之前的文章裡寫過),記憶在 spec-driven 開發會話之間也是持久存在的。

與替代方案對比

在選定 opencode-mem 之前,我評估了幾個替代品:

特性 opencode-mem 雲端方案 其他本地插件
隱私 優秀 良好
成本 免費(僅提取用 API) 訂閱制 免費
Web 介面 內建 不一 很少
用戶畫像學習 支援 有時支援 不支援
配置複雜度 中等
本地嵌入 支援 不支援 有時支援

內建的 Web 介面和自動畫像學習是我最終選擇它的決定性因素。

總結

用了 opencode-mem 幾週之後,我已經無法想像回到沒有記憶的編程助手了。不用反覆解釋節省的時間,加上 AI 對我偏好的不斷理解,明顯提升了我的開發效率。

本地優先的方案意味著不用擔心敏感代碼或偏好被發到外部伺服器。Web 介面讓我能看到和控制 AI 知道的內容。而自動學習意味著它會越用越好。

如果你在用 OpenCode 但還沒試過 opencode-mem,我強烈推薦試試。配置簡單,收益立竿見影,而且隱私方面的考量也很重要。


你有沒有嘗試過給 AI 編程工作流添加記憶功能?歡迎在評論區分享你的經驗。