OmniMem

官方

一个自托管的MCP服务器,为AI代理提供跨会话、项目和机器的持久记忆。

你可以用 OmniMem MCP 做什么?

为你的AI代理提供跨会话、跨项目、跨机器的持久化、自托管记忆——让它“在推荐一个已经失败的库之前,先查一下墓地”。

  • 会话简报 — 请求一份briefing,即可在一次调用中获取项目上下文、经验统计、过期记忆、新文章和技能建议。
  • 避开过去的死胡同 — 让代理在推荐之前失败过的库或模式之前,先检查墓地。
  • 回顾过去的决策 — 使用recall来浮现早期会话中跨项目的决策、修复和模式。
  • 记录来之不易的经验 — 使用record_experience记录修复过程,让那些付出实际努力才得到的教训下次更容易浮现。
  • 去重记忆 — 运行find_duplicates来标记并批量清理近乎相同的存储记忆。
  • 备份你的记忆 — 使用dump_to_file将所有内容导出为你拥有的JSON文件。

文档

面向 AI 代理的自托管语义记忆。持久化会话、经验评分,以及死胡同的墓地,由你阅读的 RSS 获取的知识支撑,存储在 Valkey 向量搜索中,然后作为 MCP 服务器暴露。 https://omnimem.org

Ric Harvey 50fde316a1

安全扫描 / Bandit SAST (push) 在 7 秒内成功

详情

安全扫描 / 依赖审计 (mcp_server) (push) 在 40 秒内成功

详情

安全扫描 / 依赖审计 (rss_worker) (push) 在 30 秒内成功

详情

安全扫描 / 依赖审计 (web_ui) (push) 在 27 秒内成功

详情

安全扫描 / 测试覆盖率 (push) 在 1 分 23 秒内成功

详情

安全扫描 / 密钥扫描 (push) 在 4 秒内成功

详情

Docker 构建与推送 / 构建 mcp_server (push) 在 17 分 57 秒内成功

详情

Docker 构建与推送 / 构建 web_ui (push) 在 15 分 23 秒内成功

详情

Docker 构建与推送 / 构建 rss_worker (push) 在 2 分 5 秒内成功

详情

合并拉取请求 'v6.4.x' (#25) 从 v6.4.x 到 main
2026-07-20 01:19:39 +02:00
.forgejo/workflowsci: 将 buildx 构建固定到 multiarch 构建器2026-07-17 15:08:57 +00:00
claude_configfeat: 自动技能扫描从跨项目经验模式中提出草稿2026-07-19 17:50:40 +00:00
docsfeat: 自动技能扫描从跨项目经验模式中提出草稿2026-07-19 17:50:40 +00:00
guideschore: 移除部署指南的可执行位2026-07-17 12:09:52 +00:00
mcp_serverci: 在故意的 0.0.0.0 测试夹具上静默 bandit B1042026-07-19 23:15:31 +00:00
rss_workerci: 在故意的 0.0.0.0 测试夹具上静默 bandit B1042026-07-19 23:15:31 +00:00
scriptsdocs: 技能演示手册 — 加载、编译、演示并清理 moo-reports 技能2026-07-17 12:28:05 +00:00
web_uici: 在故意的 0.0.0.0 测试夹具上静默 bandit B1042026-07-19 23:15:31 +00:00
.env.exampledocs: 6.3.1 — 跨 changelog、README、env 示例、开发指南的 web UI 登录2026-07-13 20:44:03 +00:00
.gitignoretest: 将整个代码库的覆盖率提升到 99.9%2026-07-19 19:20:36 +00:00
.gitleaks.tomlci: 在 valkey 测试字符串上将 gitleaks 误报加入白名单2026-07-19 23:17:59 +00:00
CHANGELOG.mdchore: 将版本提升到 6.4.2,为 6.4.2 系列更新 changelog2026-07-19 22:38:45 +00:00
CLAUDE.mdchore: 将版本提升到 6.4.2,为 6.4.2 系列更新 changelog2026-07-19 22:38:45 +00:00
docker-compose.hub.ymlfeat: 使用 Docker Hub 镜像的一行安装脚本2026-07-16 21:29:09 +00:00
docker-compose.test.ymlfeat: 添加基于 Docker 测试运行器的全面测试套件2026-03-12 16:44:58 +00:00
docker-compose.ymlfix(oauth+security): 刷新令牌宽限期 + 加固服务器表面2026-07-08 10:40:53 +01:00
install.shfix: 修复 install.sh 在 curl|bash 下挂起的问题并添加逐步进度 [skip ci]2026-07-17 16:13:10 +00:00
LICENSEchore: 添加 MIT 许可证2026-03-10 19:42:51 +00:00
OMNIMEM_BUILD_PROMPT.mdfeat: 初始项目脚手架2026-03-09 22:13:35 +00:00
README.mddocs: 在贡献部分重复 Codeberg 开发通知2026-07-17 12:10:22 +00:00
TODO.mddocs: 添加包含未来功能想法的 TODO.md2026-03-17 17:46:16 +00:00

<OmniMem>omnimem.org

Security Scans Docker Build Coverage

开发在 Codeberg 上进行——问题和 PR 请发到那里。

不要两次活在同一会话中。

每个 Claude Code 会话都从零开始。没有你项目的记忆。没有上周失败的记忆。没有你上周二花了三个小时发现为什么 onnxruntime 在 Alpine 上爆炸、最后才找到真正可行方案的记忆。

于是你又解释了一遍项目。Claude 又推荐了同一个坏掉的库。同样的警报。同样的歌。你是 Bill Murray,Claude 是 Punxsutawney。

OmniMem 解决了这个问题。它是一个自托管的 MCP 服务器,为你的 AI 代理提供跨会话、跨项目、跨机器的持久记忆。它运行在你自己的硬件上,永远免费。

claude> use onnxruntime for the embeddings

⚠ WARNING: previously abandoned approach

  onnxruntime — SIGILL crash on Alpine musl libc (effort: 4/5)
  → switched to sentence-transformers instead

那个警告来自记忆,而非运气。你已经付出代价的错误不会让你再付一次。


快速上手

提示

一条命令即可从预构建的 Docker Hub 镜像启动完整栈:

curl -fsSL https://codeberg.org/ric_harvey/omnimem/raw/branch/main/install.sh | bash

然后将你的代理指向它——快速开始 会带你完成其余步骤,或者跳到下面更完整的快速开始章节。


它记住什么

五种记忆,回忆时一起搜索:

  • 情景记忆 — 你做出的决策、修复的 bug、发现的模式。那些需要真正努力才能学会、不应该每天早上重新学习的东西。
  • 项目上下文 — 你的技术栈、目标和当前状态。代理在每个会话开始时已经了解情况,而不是从零开始。
  • 知识 — 你配置的 RSS 源,按计划抓取,由 Claude Haiku 总结、嵌入并存储。当上周出现相关文章时,它会作为值得阅读的起点浮现。
  • 偏好 — 关于你希望如何工作的规范性规则("功能落地后总是更新 README"),从你的对话中自动提取,并在适用时浮现。
  • 技能 — 从你在某个领域积累的经验编译而成的 SKILL.md 文档,让代理从第一个提示词开始就按你的方式工作。从其他命名空间派生,从不手工编辑,每次更改都经过你的审查。参见技能编译器。 最高召回结果可能是六个月前另一个项目的决策、昨天的解决方案,或周二晚上出现的一篇文章。只要有用,它来自哪里并不重要。

它的不同之处

不仅仅是带 MCP 包装的键值存储。OmniMem 模拟了记忆的实际运作方式:事物会随时间淡忘,有时会相互矛盾,而来之不易的经验会赢得一席之地。

  • 墓地 — 每条死胡同都会被记录,包括你尝试过什么、为什么失败,以及你浪费了多少时间。代理在推荐库或模式之前会先检查它。
  • 经验评分 — 花了四次尝试和一个奇怪的平台变通方案才攻克的东西是金子。越难获得,下次就越容易被调出。
  • 记忆生命周期 — ACTIVE → DEPRIORITISED → ARCHIVED → DELETED。“忘掉 X”通常意味着别再提起它,而不是从存在中抹去。被降权的记忆可以重新赢得地位。
  • 矛盾检测 — 如果新记忆与已存储的内容不一致,OmniMem 会捕捉到。每次写入都有快速启发式检查,可选通过 Claude Haiku 进行更深入的分析。
  • 语义去重 — 几乎相同的记忆会在写入时被标记,并通过 find_duplicates() 批量清理。
  • 一键简报 — 一次 briefing() 调用即可返回项目上下文、经验统计、过期记忆、新文章、矛盾警告和技能建议。无需三步预热。
  • 技能编译器 — 将强化的经验教训和死胡同提炼为可加载的技能,并通过提议-接受门控,确保坏教训不能悄然成为政策。
  • 自动维护 — 重复项归档、矛盾标记、过期知识清理,全部在后台完成。
  • Web 界面 — 通过 htmx 仪表板浏览、搜索和管理一切,附带遥测和 Prometheus /metrics 端点。

每次召回背后的排名公式:

score = similarity x surface_score x recency x experience_weight

四个因素决定返回什么。仅靠语义相似性是不够的——生命周期状态、年龄和经验获取的难度都起作用。


适用于任何 MCP 代理

一个记忆层适用于所有代理:claude.ai、Claude Code、Claude Desktop、Cursor、GitHub Copilot、GitLab Duo、AWS Kiro、OpenCode、OpenAI Codex CLI 和 Open Design。


架构

四个容器。一切都不会离开你的机器。通过 sentence-transformers 进行本地嵌入,存储在带向量搜索的 Valkey 中,两个前端共享同一个记忆引擎。

flowchart TB
    agent["AI agent<br/>Claude Code · claude.ai · Cursor · Copilot · ..."]
    browser["Browser"]

    agent -- "MCP · Streamable HTTP / SSE · :8765" --> mcp
    browser -- "HTTP · :8080" --> webui

    subgraph stack["Docker Compose stack"]
        mcp["MCP server<br/>Python · FastMCP<br/><i>remember · recall · briefing<br/>compile_skill · record_experience</i>"]
        webui["Web UI<br/>Starlette · htmx · Jinja2<br/><i>dashboard · search · skills<br/>projects · backups · /metrics</i>"]
        rss["RSS worker<br/>feedparser · APScheduler<br/>Claude Haiku summaries"]
        valkey[("Valkey + valkey-search<br/>HNSW vector indexes<br/><i>idx:episodic · idx:project · idx:knowledge<br/>idx:preference · idx:skill</i>")]

        mcp <--> valkey
        webui <--> valkey
        rss --> valkey
    end

完整图景——召回管道、存储模型和设计决策——见 docs/architecture.md。


自托管、开源、属于你

无 SaaS。无供应商锁定。无上下文发送到他人的服务器。

  • Valkey 是开源的 Redis 分支。你所有数据都保存在你自己机器上的命名 Docker 卷中。
  • 多架构 Docker 镜像 支持 amd64 和 arm64。它在 Raspberry Pi、AWS Graviton 或 Apple Silicon 上运行得和 x86 一样好。
  • sentence-transformers 在本地运行嵌入,无需 API 调用。
  • MIT 许可 意味着你可以分叉、扩展、在任何地方运行它。
  • 一条备份命令 调用 dump_to_file() 并将所有内容导出到你拥有的 JSON 文件中。

通过反向代理暴露 MCP 端口,你工作的每台机器都共享同一个记忆。一次部署,处处可用——见 docs/remote-access.md。


快速开始

安装程序检查 Docker 是否已安装,生成安全密码,写入合理的 .env,并从预构建的 Docker Hub 镜像启动一切:

curl -fsSL https://codeberg.org/ric_harvey/omnimem/raw/branch/main/install.sh | bash

或从源码构建:

git clone https://codeberg.org/ric_harvey/omnimem.git && cd omnimem
cp .env.example .env
# Set VALKEY_PASSWORD and ANTHROPIC_API_KEY in .env
docker compose up -d

然后将你的代理指向它——Claude Code (~/.claude.json):

{
  "mcpServers": {
    "omnimem": {
      "type": "sse",
      "url": "http://localhost:8765/sse"
    }
  }
}

服务器通过 MCP instructions 字段自动向任何连接的代理提供其使用指南——无需配置文件。Web 仪表板位于 http://localhost:8080。

完整演练,包括认证令牌、权限设置和其他代理,见 docs/quick-start.md。


文档

快速开始安装程序、从源码构建、连接你的代理
功能详解生命周期、墓地、经验评分、去重、矛盾、简报
技能编译器将经验编译为可加载的技能
MCP 工具参考所有 30+ 工具
配置参考每个环境变量
RSS 与知识被动知识摄入与提升
多机器反向代理、claude.ai 的 OAuth 2.1、故障排除
Web 界面管理仪表板和 Prometheus 指标
架构容器、召回管道、设计决策
记忆类型规范存储模型,逐字段
连接指南每个代理的设置
部署指南macOS · Raspberry Pi · AWS · GCP · Linux + Tailscale Funnel

按命名空间的存储规范,如果你想确切知道什么被写入 Valkey 以及由谁写入:概述 · 情景 · 项目 · 知识 · 偏好 · 技能


贡献

欢迎提交 Issue 和 PR。开发在 Codeberg 上进行——请在那里提交 Issue 和 PR。OmniMem 设计为可扩展的,评分管道结构允许在不触及核心的情况下添加新的乘数。新的 MCP 工具、额外的命名空间类型和替代嵌入后端都是合理的方向。


许可

MIT。免费使用、分叉和修改。无企业版、无托管版本、无附加条件。


由 Ric Harvey 在 SquareCows Ltd 构建,一家为希望拥有自己工具的人提供 AI 和自动化咨询的公司。