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 編程工作流添加記憶功能?歡迎在評論區分享你的經驗。