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 编程工作流添加记忆功能?欢迎在评论区分享你的经验。