Dense-Mem 快速开始:让 Claude Code 和 Codex 使用同一份记忆
一篇面向初学者的教程:启动本地 Dense-Mem 服务器,创建第一把 memory key,并把 Claude Code 和 Codex 接到同一个共享 AI 记忆大脑。
AI 驱动 · 每小时限 20 次请求

一句话总结
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,每个助手都是冷启动。Claude Code 知道一些事,Codex 知道另一些,明天开个新对话,两边记住的东西全丢了。
有了 Dense-Mem,这些工具都指向同一个记忆服务。你的偏好、项目决策、纠正过的东西、团队上下文,都不会随着聊天窗口关掉就没了。
Dense-Mem 的机制是先存证据(fragment),验证通过后才提升为 fact。如果新记忆和旧记忆冲突,它会主动请你确认,而不是悄悄把旧的覆盖掉。
记忆这东西,不可信就等于没有。这一点很关键。
它解决哪些问题

如果你遇到过下面这些情况,Dense-Mem 就是为你准备的:
- 每次开新对话都要重复说一遍同样的偏好
- 项目决策聊完就沉到历史纪录里,再也找不到
- 不同的 AI 客户端之间没法共享上下文
- 团队或家庭的信息散落在各个会话里
- 纠正了一个错误,结果旧记忆还在捣乱
需要准备什么
四样东西:
- Docker——服务器和数据库都跑在容器里,不用手动装环境
- 一个终端——敲命令用的
- 一个兼容 OpenAI 的 embedding 端点和对应的 API key——记忆召回和校验要用
- Claude Code、Codex,或者其他支持 MCP 的客户端
第一次上手的话,以官方文档为准:Dense-Mem Quick Start。
Step 1: 下载本地 Compose 文件

先建个文件夹:
mkdir dense-mem-local
cd dense-mem-local下载入门用的 compose 文件:
curl -fsSLo docker-compose.yml \
https://raw.githubusercontent.com/markhuangai/dense-mem/main/examples/docker-compose.base.yml创建 .env 配置文件:
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_URL、AI_API_EMBEDDING_MODEL 和 AI_API_EMBEDDING_DIMENSIONS 三个要一起改,改好再开始存记忆。
Step 2: 启动 Dense-Mem
拉起所有服务:
docker compose up -d确认一下运行状态:
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
执行这条命令:
docker compose exec server /app/provision-team --name "primary-memory"API key 只会显示一次,务必保存好。
输出大概长这样:
{
"team_name": "primary-memory",
"profile_name": "default profile",
"scopes": ["read", "write"],
"api_key": "dm_default-prof_..."
}这个 API key 就是你的 AI 客户端访问记忆的凭证。
Step 4: 连接 Claude Code

先在终端设置环境变量:
export DENSE_MEM_API_KEY="dm_default-prof_..."然后把 Dense-Mem 注册到 Claude Code:
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
同样先设置环境变量:
export DENSE_MEM_API_KEY="dm_default-prof_..."然后在 ~/.codex/config.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,从记忆里把答案翻出来。
一个大脑,多人共用

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 服务。
停止和重启
停止所有服务:
docker compose down重新启动:
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.
相关文章

5 分钟试用 Dense-Mem 托管演示
一篇快速教程:使用托管的 Dense-Mem 测试实例,把 Claude Code 和 Codex 接到同一份临时记忆,并观察共享上下文如何让 AI 更聪明地工作。
阅读文章
用 Traefik 在 Vultr 上安全部署 Dense-Mem
一篇非技术读者也能跟上的 walkthrough:在 Vultr 云服务器上启动 Dense-Mem,配置 Traefik、HTTPS、私有控制台访问,以及给个人、家庭或工作 AI 工具使用的共享记忆。
阅读文章
别再从零开始教每一个 AI
一篇关于 Dense-Mem 的个人反思:哪些问题把我从静态 skills 和过期文件推向动态共享记忆、只读自动化上下文、导入导出,以及受治理的知识图谱。
阅读文章