跳转到主要内容

Dense-Mem 快速开始:让 Claude Code 和 Codex 使用同一份记忆

一篇面向初学者的教程:启动本地 Dense-Mem 服务器,创建第一把 memory key,并把 Claude Code 和 Codex 接到同一个共享 AI 记忆大脑。

7 分钟阅读
分享:
AI 驱动

AI 驱动 · 每小时限 20 次请求

一个安全的共享记忆中枢,连接桌面上的多个 AI 客户端窗口
一个共享记忆中枢,把多个 AI 客户端连到一起

一句话总结

2026 年,搭一套 Dense-Mem 最简单的方案就是本地跑个 Docker Compose,三个服务(Dense-Mem、Postgres、Neo4j)共享一个 MCP 端点,搞定。

快速上手三步走:

  • 用本地 compose 文件把 Dense-Mem 跑起来
  • provision-team 生成一个 API key
  • 把 Claude Code、Codex,或者两个都连到 localhost:8080/mcp

用 AI 聊天的时候,你是不是也有这种感觉:聊的时候挺聪明,第二天再开一个新对话,它什么都不记得了?

Dense-Mem 就是为了解决这个问题——给你的 AI 工具们一个共享的记忆服务器。Claude Code、Codex,还有其他 MCP 客户端,都能连到同一个地方。你不用再每次开新对话都重复说一遍自己的偏好、项目规则、家庭计划、团队决策,而是给这些工具一个真正持久的记忆大脑。

说到底就一句话:

多个 AI 会话 -> 一台 Dense-Mem 服务器 -> 同一份记忆,随时可用

这篇教程先从本地版本开始。所有数据都留在你自己机器上,是最稳妥的第一步。

Dense-Mem 到底是什么

Dense-Mem 不是聊天机器人,它是你所有 AI 工具背后的记忆层。

对比图:左边是没有 Dense-Mem 时各自孤立的 AI 聊天,右边是接入共享记忆中枢后的 AI 客户端
有 Dense-Mem 和没有 Dense-Mem 的区别

看图就明白了:

没有 Dense-Mem,每个助手都是冷启动。Claude Code 知道一些事,Codex 知道另一些,明天开个新对话,两边记住的东西全丢了。

有了 Dense-Mem,这些工具都指向同一个记忆服务。你的偏好、项目决策、纠正过的东西、团队上下文,都不会随着聊天窗口关掉就没了。

Dense-Mem 的机制是先存证据(fragment),验证通过后才提升为 fact。如果新记忆和旧记忆冲突,它会主动请你确认,而不是悄悄把旧的覆盖掉。

记忆这东西,不可信就等于没有。这一点很关键。

它解决哪些问题

四个常见的 AI 记忆痛点,汇聚到一个安全的 Dense-Mem 方案中
Dense-Mem 专门解决这几类记忆问题

如果你遇到过下面这些情况,Dense-Mem 就是为你准备的:

  • 每次开新对话都要重复说一遍同样的偏好
  • 项目决策聊完就沉到历史纪录里,再也找不到
  • 不同的 AI 客户端之间没法共享上下文
  • 团队或家庭的信息散落在各个会话里
  • 纠正了一个错误,结果旧记忆还在捣乱

需要准备什么

四样东西:

  • Docker——服务器和数据库都跑在容器里,不用手动装环境
  • 一个终端——敲命令用的
  • 一个兼容 OpenAI 的 embedding 端点和对应的 API key——记忆召回和校验要用
  • Claude Code、Codex,或者其他支持 MCP 的客户端

第一次上手的话,以官方文档为准:Dense-Mem Quick Start

Step 1: 下载本地 Compose 文件

一台笔记本电脑上运行 Docker Compose,包含 Dense-Mem、Postgres 和 Neo4j
本地 Docker Compose 一键搭建

先建个文件夹:

bash
mkdir dense-mem-local
cd dense-mem-local

下载入门用的 compose 文件:

bash
curl -fsSLo docker-compose.yml \
  https://raw.githubusercontent.com/markhuangai/dense-mem/main/examples/docker-compose.base.yml

创建 .env 配置文件:

bash
cat > .env <<'EOF'
POSTGRES_PASSWORD=choose-a-strong-postgres-password
NEO4J_PASSWORD=choose-a-strong-neo4j-password
CONTROL_PORTAL_TOKEN=choose-a-long-control-portal-token
AI_API_URL=https://api.openai.com/v1
AI_API_KEY=your-ai-provider-api-key
AI_API_EMBEDDING_MODEL=text-embedding-3-large
AI_API_EMBEDDING_DIMENSIONS=3072
EOF

打开 .env,把每个占位值替换成你自己的。

这个文件里有密码和 API key,不要分享给任何人。

Dense-Mem 需要一个兼容 OpenAI 的 embedding API。上面这个例子用的是 OpenAI 的 text-embedding-3-large,维度必须填 3072。如果换成 text-embedding-3-small,维度改成 1536。如果用其他兼容 OpenAI 的 embedding 服务,AI_API_URLAI_API_EMBEDDING_MODELAI_API_EMBEDDING_DIMENSIONS 三个要一起改,改好再开始存记忆。

Step 2: 启动 Dense-Mem

拉起所有服务:

bash
docker compose up -d

确认一下运行状态:

bash
docker compose ps

启动成功后,你会得到几个本地地址:

  • http://127.0.0.1:8080/mcp —— Claude Code、Codex 等 MCP 客户端连这个
  • http://127.0.0.1:8080/ui —— 用户界面
  • http://127.0.0.1:8090/ —— 管理后台,用来管理 team、profile 和 API key

注意,这些地址都是本地的,不会暴露到公网上。

Step 3: 创建你的第一个 API Key

执行这条命令:

bash
docker compose exec server /app/provision-team --name "primary-memory"

API key 只会显示一次,务必保存好。

输出大概长这样:

json
{
  "team_name": "primary-memory",
  "profile_name": "default profile",
  "scopes": ["read", "write"],
  "api_key": "dm_default-prof_..."
}

这个 API key 就是你的 AI 客户端访问记忆的凭证。

Step 4: 连接 Claude Code

一张 API key 把两个 AI 助手终端连接到同一个记忆中枢
多个 AI 客户端共享同一个记忆中枢

先在终端设置环境变量:

bash
export DENSE_MEM_API_KEY="dm_default-prof_..."

然后把 Dense-Mem 注册到 Claude Code:

bash
claude mcp add --transport http dense-mem http://localhost:8080/mcp \
  --header "Authorization: Bearer $DENSE_MEM_API_KEY"

搞定。之后 Claude Code 需要记东西或查记忆的时候,就会自动调用 Dense-Mem。

Step 5: 连接 Codex

同样先设置环境变量:

bash
export DENSE_MEM_API_KEY="dm_default-prof_..."

然后在 ~/.codex/config.toml 里加上:

toml
[mcp_servers.dense_mem]
url = "http://localhost:8080/mcp"
bearer_token_env_var = "DENSE_MEM_API_KEY"
tool_timeout_sec = 60
enabled = true

改完配置记得重启 Codex。

现在 Claude Code 和 Codex 都连上了同一台 Dense-Mem。共享同一份记忆,只是客户端不同。

Step 6: 试试你的第一条记忆

跟你的 AI 客户端说:

记住,我喜欢简洁的回答,带具体例子。

然后开一个新对话,问它:

你还记得我喜欢怎么回答问题的吗?

如果一切正常,助手会调用 Dense-Mem,从记忆里把答案翻出来。

一个大脑,多人共用

个人、家庭、工作团队的记忆空间连接到一个安全的记忆中枢
用 team 和 profile 划清记忆边界

Dense-Mem 有 team 和 profile 两个概念。

需要共享记忆的就放同一个 team,不该混在一起的用不同 team。

  • 一个人用多个 AI 工具,一个 team + 一个 profile 就够了
  • 一家人可以共用一个 family team,每人一个 profile
  • 工作团队可以按项目或小组划分 team
  • 只需要查询的自动化任务,给一个只读 profile 的 key

这才是真正厉害的地方:记忆不再被锁死在某一个聊天工具里。

Claude Code 里记住的项目规则,Codex 也能调用。家庭助手记住的旅行偏好,换个窗口还能查到。工作团队的项目决策,都存在同一个共享记忆边界里。

不要往里存什么

Dense-Mem 是记忆系统,不是密码管理器。

这些东西别往里放:

  • 密码
  • 助记词(seed phrase)
  • 私钥
  • 银行卡号
  • 任何你不希望 embedding 服务商看到的内容

默认情况下,Dense-Mem 会把记忆内容和查询请求发给你配置的 embedding 服务商处理。如果介意这一点,在存重要内容之前先换成自托管的 embedding 服务。

停止和重启

停止所有服务:

bash
docker compose down

重新启动:

bash
docker compose up -d

只要你不手动删 Docker volume,记忆数据会一直保留。

下一步

先把本地版跑起来,确认一切正常。接下来就可以把它部署到一台有公网 IP 的服务器上,这样你在任何设备上都能访问同一份记忆。

下一篇教程:用 Vultr + Traefik 安全部署 Dense-Mem

觉得 Dense-Mem 有用的话,去 GitHub 给个 star,也欢迎分享给身边同样在用多个 AI 工具的朋友:github.com/markhuangai/dense-mem

许可

Article text © 2026 Mark Huang. Licensed under Creative Commons Attribution-NonCommercial 4.0 International (CC BY-NC 4.0) unless otherwise noted. 文章文本可在非商业场景下分享或翻译,但需标注原文 URL。商业使用需事先取得书面许可,并清楚引用原始来源。

代码片段、截图、第三方素材和网站源码可能适用单独条款。

建议署名: Based on "Dense-Mem 快速开始:让 Claude Code 和 Codex 使用同一份记忆" by Mark Huang, originally published at https://markhuang.ai/zh/blog/dense-mem-personal-server-claude-code-codex.