普通的 AI 每次对话都是「失忆」的——关掉窗口,它就不认识你了。

Mem0 解决的问题就是这个。它像一个动态知识库,不是传统那种「把文件分门别类存好、需要的时候自己去翻」的档案柜。它的工作机制更像人脑:

Mem0 · 三个机制
自动提取 —— 你说过的话,它自动提取成记忆。不需要你手动标记「这条记一下」。
自动联想 —— 下次对话,它自动联想。你说到相关话题,它就把之前存过的记忆调出来,注入到当前对话里。
语义检索 —— 不是关键词匹配。你说「我最近睡不好」,它会联想到你之前提过的「半夜三四点醒」「焦虑」「低血糖」——哪怕这些词你没直接说。

你不需要记得你跟 AI 说过什么。它替你记得,到了该用的时候自己就跳出来了。

这就是我们要搭的东西:一个真正有记忆的 Hermes


前置准备

  1. 获取对话模型(商汤 / OpenCodeGo,二选一)
    • 方案 A:注册商汤科技 —— 打开 https://www.sensenova.cn/ 注册账号,进入控制台创建 API Key,复制保存好(格式类似 sk-xxxxx)。API 端点:https://platform.sensenova.cn。商汤提供免费额度,DeepSeek V4 Flash 模型可以免费用,放心注册
    • 方案 B:OpenCodeGo 免费模型(推荐,零注册零费用) —— 不用注册、不用登录、不用花钱。Base URL:https://opencode.ai/zen(Hermes Studio 会自动补全 /v1,别手动加),Key 固定填 public。完整配置见第二步
  2. 注册硅基流动,获取 API Key
    • 打开 https://siliconflow.cn/ 注册账号,进入控制台创建 API Key
    • 硅基流动的 BAAI/bge-m3 嵌入模型有免费额度
  3. 下载安装包
    • Hermes Studio 桌面版:https://hermes-studio.ai/
    • Qdrant Windows 版本:https://github.com/qdrant/qdrant/releases/
懒人包:夸克网盘

也可以从夸克网盘下载我打包好的安装包:Hermes Studio 桌面版安装程序(.exe,安装时选 Cloudflare 源)+ Qdrant Windows 桌面版(qdrant.exe,解压即用)。

链接:https://pan.quark.cn/s/cb5f60be91f0 提取码:FmLC

第一步:安装和启动

启动顺序非常重要

必须先开 Qdrant,再开 Hermes。Hermes 启动时会读取 mem0.json 并尝试连接 Qdrant,如果 Qdrant 没先跑起来,mem0 初始化就会失败——后面再怎么折腾,记忆系统也不会工作。你甚至看不出报错,就是记忆死活不生效。

记住:先开数据库,再开软件。

安装 Hermes Studio

  1. 双击安装程序
  2. 如果 Windows 弹出「Windows 已保护你的电脑」的蓝色警告框——这是因为安装包没有微软数字签名,不是病毒。点击「更多信息」(或「查看更多」),再点击「仍要运行」,之后正常安装即可
  3. 安装时选 Cloudflare 源
  4. 安装完成后,桌面会出现 Hermes Studio 图标
  5. 先别急着打开它,先把下面的 Qdrant 启动

启动 Qdrant(必须先做)

  1. 把压缩包里的 qdrant.exe 解压到某个目录(比如 C:\qdrant\)
  2. 双击 qdrant.exe,出现命令行窗口,保持这个窗口开着不要关
  3. Qdrant 运行在 localhost:6333

现在可以启动 Hermes 了

  1. Qdrant 窗口确认开着之后,双击桌面上的 Hermes Studio 图标
  2. Hermes 启动时会自动连接 localhost:6333 上的 Qdrant

第二步:在 Hermes Studio 中配置模型(商汤 / OpenCodeGo)

Hermes Studio 自带了很多内置模型提供商,但商汤和 OpenCodeGo 都需要手动添加。下面两种方案任选其一,推荐方案 B——连注册都省了。

  1. 打开 Hermes Studio,看左边那一排导航按钮,滑到最下面,点击「模型」
  2. 进入模型管理页面后,找到「新增 Provider」按钮,选择「自定义」
  3. 填写以下信息(按你选的方案填):
    • 方案 A(商汤) —— 名称:商汤;API 端点:https://platform.sensenova.cn;API Key:粘贴你在商汤控制台创建的 Key;点击「获取模型」,在模型列表中勾选 DeepSeek V4 Flash
    • 方案 B(OpenCodeGo) —— 名称:OpenCodeGo;API 端点:https://opencode.ai/zen(别加 /v1,Hermes Studio 会自动补全,加了反而连不上);API Key:填 public;点击「获取模型」,在模型列表中勾选 big-pickle(推荐)
  4. 点击保存,返回主界面
方案 B:OpenCodeGo 免费模型 · 完整速查

请求地址(Base URL):https://opencode.ai/zen/v1 —— 注意:这是接口本身的地址;在 Hermes Studio 里填 API 端点时要去掉 /v1,只填 https://opencode.ai/zen,客户端会自动补全

Chat 接口:https://opencode.ai/zen/v1/chat/completions(OpenAI 兼容格式)

模型列表:https://opencode.ai/zen/v1/models(这个端点不需要 key 也能访问)

Key:public —— 标准 Bearer 鉴权(Authorization: Bearer public),不需要登录、不需要花钱

注意:别用 zen/go/v1 路径

https://opencode.ai/zen/go/v1 是 Claude Code 专属网关路径,不认免费模型,实测会报 Model not supported。一律用 https://opencode.ai/zen/v1。

实测可用的免费模型:

模型 ID备注
big-pickle响应最快,神秘模型,推荐首选
laguna-s-2.1-free响应快
deepseek-v4-flash-freeDeepSeek 家的,但很慢(38 秒左右),可能要重试
mimo-v2.5-free可用
longcat-2.0-free可用
nemotron-3-ultra-free可用
ling-3.0-tiny-free⚠️ 暂时不稳定 —— 上游 503(临时故障)
north-mini-code-free⚠️ 暂时不稳定 —— 上游 401(可能要单独鉴权)
请求示例 · curlcurl -X POST https://opencode.ai/zen/v1/chat/completions \ -H "Authorization: Bearer public" \ -H "Content-Type: application/json" \ -d '{"model":"big-pickle","messages":[{"role":"user","content":"你好"}]}'

特别注意:有两个「模型」入口,别点错了

左边导航栏的「模型」——点这个,这是全局模型管理,能新增 Provider。

右边设置页面里也有一个「模型」标签——绝对不要点!右边那个是改当前 Profile 的模型配置,跟新增 Provider 完全不是一回事。

记住:只看左边导航栏,找到最下面那个「模型」,点它。别碰右边的。

第三步:新建对话,让 AI 执行三个任务

上面这些都只是搭环境,接下来才是真正的「装大脑」。

点击左上角「新建对话」,右下角创建,然后把下面这段话完整复制发送给 AI:「帮我完成下面三个任务,一步一步来。」

任务一:安装 Mem0 插件

Hermes Studio 自带一个 Python 虚拟环境,位置在这里(把【版本号】换成你电脑上的实际文件夹名,比如 0.18.0):

Python 环境路径%USERPROFILE%\.hermes-web-ui\desktop-runtime\hermes\【版本号】\win-x64\python

打开命令行(Win+R → 输入 cmd),用 cd 命令进入上面那个目录,然后用清华镜像源安装 mem0:

安装命令pip install mem0ai -i https://pypi.tuna.tsinghua.edu.cn/simple

任务二:配置 mem0.json 和启用 Mem0 插件

2.1 创建 mem0.json —— 在 %USERPROFILE%\.hermes\ 下面创建一个新文件,叫 mem0.json,内容如下:

mem0.json{ "mode": "oss", "user_id": "hermes-user", "agent_id": "hermes", "oss": { "llm": { "provider": "openai", "config": { "model": "deepseek-v4-flash", "api_key": "***", "openai_base_url": "https://platform.sensenova.cn/v1" } }, "embedder": { "provider": "openai", "config": { "model": "BAAI/bge-m3", "api_key": "***", "openai_base_url": "https://api.siliconflow.cn/v1" } }, "vector_store": { "provider": "qdrant", "config": { "host": "localhost", "port": 6333, "embedding_model_dims": 1024 } } } }

上面的 mem0.json 里,llm 段按你的方案二选一(embedder 段和 vector_store 段两种方案都一样,保持不变):

llm 段 · 两种方案
方案 A(商汤) —— model 填 deepseek-v4-flash,api_key 填你在商汤控制台创建的 Key,openai_base_url 填 https://platform.sensenova.cn/v1(也就是上面 mem0.json 里的写法,不用改)
方案 B(OpenCodeGo) —— model 填 big-pickle(响应最快,推荐),api_key 填 public,openai_base_url 填 https://opencode.ai/zen/v1(mem0 走标准 OpenAI 接口,这里必须带 /v1——和上面 Hermes Studio 里填端点时去掉 /v1 不一样,别搞混)

选方案 B 的话,llm 段改成下面这样:

mem0.json · llm 段(方案 B)"llm": { "provider": "openai", "config": { "model": "big-pickle", "api_key": "public", "openai_base_url": "https://opencode.ai/zen/v1" } }

api_key 不要照抄

方案 A:llm 下的 api_key 填你在商汤科技控制台创建的 Key;embedder 下的 api_key 填你在硅基流动控制台创建的 Key。

方案 B:llm 下的 api_key 固定填 public(OpenCodeGo 不需要注册);embedder 下的 api_key 仍然填硅基流动的 Key——OpenCodeGo 只提供对话模型、不提供嵌入模型,所以 embedding 这一步还是得靠硅基流动。

2.2 在 config.yaml 里启用 Mem0 插件 —— 打开 %USERPROFILE%\.hermes\config.yaml,找到 memory: 这一段,改成这样:

config.yaml · memory 段memory: memory_enabled: true user_profile_enabled: true write_approval: false memory_char_limit: 10000 user_char_limit: 8000 provider: mem0 flush_min_turns: 6 nudge_interval: 10

这一步不做的后果很严重

Hermes 默认用自己内置的记忆系统,不是你刚装的 Mem0。你 mem0.json 写得再对、Qdrant 跑得再稳,它根本不读。

两个最关键的值:

provider: mem0 —— 把记忆系统从 Hermes 内置切换到 Mem0 插件。不设这个,前面全白做。

flush_min_turns: 6 —— Mem0 必须攒够 6 轮对话才会开始提取记忆。不是你说一句话它就记住,要先聊起来。

如果 config.yaml 里没有 memory: 这一段,让 AI 帮你加上。

任务三:修改 Mem0 源码,修复中文记忆存储

Mem0 有一个 bug:控制记忆语言的参数 use_input_language 在源码里硬编码成了 False。这导致一个很烦人的情况——你用中文跟 AI 聊天,它提取出来的记忆却是英文的。

找到这个文件(把【版本号】换成实际文件夹名):

源码文件路径%USERPROFILE%\.hermes-web-ui\desktop-runtime\hermes\【版本号】\win-x64\python\Lib\site-packages\mem0\configs\prompts.py
  1. 用文本编辑器打开它,搜索 use_input_language,找到函数 generate_additive_extraction_prompt 的定义(大约第 515 行)。这个参数控制着记忆提取时要不要用你的输入语言。
  2. use_input_language=False 改成 use_input_language=True
  3. 改完之后,第 536–548 行的 if use_input_language: 条件块就会生效——它会在 prompt 末尾追加一条语言指令,让 AI 用中文提取记忆

就改这一处参数默认值

不要改配置文件,不要动提示词变量。改完保存关闭。

第四步:重启并测试记忆系统

三个任务执行完之后,必须做三件事,不然记忆系统不会生效:

  1. 重启 Hermes Studio —— 关掉 Hermes Studio,重新打开。mem0 插件在启动时才会加载,不重启等于白装。
  2. 新建对话 —— 不要在刚才那个对话里测试。旧对话的系统提示词是硬编码进去的(这是 Hermes 为了保障缓冲率的机制),不会动态加载 mem0 配置。必须新建一个对话,新对话才会读取 mem0.json 并启用记忆系统。
  3. 测试 —— 常见误解:新建对话 → 说一句话 → 再新建对话 → 就能召回。不是这样的。Mem0 的 flush_min_turns 默认是 6,你必须先跟 AI 聊满至少 6 轮,它才会开始从对话里提取记忆、存进 Qdrant。
正确的测试方法

1. 新建对话,认真聊一会儿——至少 6 轮来回。比如你说「我叫张三」,AI 回「你好张三」;你说「我喜欢吃辣」,AI 回「了解了」;你说「我在北京上班」,AI 回「北京不错」……继续聊到 6 轮以上。

2. 聊完之后,再新建一个对话,问它:「我之前跟你说过我喜欢吃什么?」

3. 如果 AI 能回答出来,记忆系统通了。

如果没答出来,按下面的清单逐一检查:

常见问题(踩过的坑)

问题原因解决
Qdrant Web 界面打不开Windows 桌面版缺少 static 目录从 GitHub 下载 dist-qdrant.zip 解压到 Qdrant 目录里
提示词改成中文了,记忆还是英文USER_MEMORY_EXTRACTION_PROMPT 是僵尸变量,代码里定义了但根本没调用它别改提示词,改了没用
mem0.json 里配了语言参数但没用use_input_language 在 configs/prompts.py 第 515 行硬编码为 False,配置文件传什么都白搭必须改 prompts.py 源码里的 generate_additive_extraction_prompt 函数
配好了但记忆不生效在旧对话里测试,旧对话不会动态加载 mem0必须新建对话测试
安装 mem0 时下载慢/失败pip 默认从 PyPI 拉包,国内网速不行用清华镜像源:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple
不想注册商汤 / 免费额度不够用商汤注册要手机号,额度也有限改用 OpenCodeGo 免费模型:API 端点填 https://opencode.ai/zen(别加 /v1,客户端会自动补全),Key 填 public,模型选 big-pickle(详见第二步方案 B)

每次使用的正确顺序(非常重要)

以后每天要用 Hermes + 记忆系统,顺序不能反:先开 Qdrant,再开 Hermes。两个窗口必须同时保持打开。

  1. 双击 qdrant.exe → 出现命令行窗口 → 别关
  2. 确认 Qdrant 窗口开着 → 双击 Hermes Studio 图标
  3. 两个窗口同时在桌面上 → 记忆系统正常工作

关掉任何一个,记忆系统就断了

Qdrant 窗口关了,Hermes 找不到数据库。Hermes 关了,当然也没法聊天。

简单记法:数据库是房子的地基,Hermes 是住里面的人。先打地基,再住人。

这东西装好之后

以后你跟 Hermes 聊天,它会像这样工作:

  1. 你说了什么
  2. Mem0 自动判断「这里面有没有值得记住的东西」
  3. 有的话,提取成一条记忆,存进 Qdrant 向量库
  4. 下次你聊到相关话题,它通过语义搜索自动把相关记忆调出来
  5. 注入到当前对话里——不需要你手动翻,不需要你主动搜索

就像一个真的会记住你的助手,而不是每次打开都是崭新的陌生人。


这套「动态记忆」的思路不只在 Hermes 上能用——Qdrant + Mem0 的组合,可以给任何 AI 应用装上长期记忆。