mcpField
L
Loomem

Loomem

本地服务
github.com/vvooki-sys记忆与知识42 天前更新

关于 Loomem

Loomem 是面向 LLM Agent 的本地优先上下文存储,以 Rust 单一二进制运行,适合希望在不同 MCP 客户端间保留知识的用户。它结合混合检索、时间属性事实与实体图谱,无需外部数据库。

主要功能

  1. 01文本、向量与实体混合搜索
  2. 02事实整合与矛盾处理
  3. 03记录事件和录入时间的双时态事实
  4. 04含别名与关系的实体图谱
  5. 05可选字段级静态加密

适用场景

  1. 01在多个 MCP 客户端间共享持久上下文
  2. 02按含义或时间检索对话事实
  3. 03探索人物与项目之间的关系

MCP 相关

Loomem 通过 MCP 流式 HTTP 暴露 15 个 `memory_*` 工具,也支持为通过标准输入输出连接本地服务的客户端提供桥接。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍


Loomem 是面向大模型 Agent 的开源上下文层——一个运行在笔记本电脑上的 Rust 单一二进制程序,通过 MCP 提供服务,为 Claude、ChatGPT、Codex 或任何 MCP 客户端提供完成实际工作所需的事实、决策和历史记录。更换模型,切换工具;你的上下文始终相随。

Loomem 会存储从对话中提取的结构化知识,并通过混合检索将其提供给任何支持 MCP 的客户端(Claude、ChatGPT、Codex、Cursor 以及你自己的 Agent):

  • 混合搜索——BM25(Tantivy)+ 向量嵌入 + 实体图信号,通过加权混合得分进行融合(向量 0.6 / BM25 0.4)。
  • 整合——后台工作进程会合并相关事实、解决矛盾,并让过时事实逐渐衰减(“做梦”)。
  • 双时态模型——事实同时记录摄取时间和事件时间(valid_from / valid_until),因此“我在 3 月知道什么”和“3 月发生了什么”是不同的查询。
  • 实体图——从人员、项目和技术中提取实体,构建包含别名和关系的图,同时用于检索和探索。
  • MCP 原生——通过标准 MCP HTTP 传输提供 15 个 memory_* 工具,其中包括面向远程连接器的 OAuth 动态客户端注册。
  • 静态加密(可选)——采用字段级 AES-GCM 信封加密,主密钥从环境中读取。

使用 Rust、RocksDB 和 Tantivy 构建。单一二进制程序,无需外部服务。

状态:早期阶段。 该引擎已在个人日常使用中运行一段时间,但公共 API 和存储格式仍可能发生变化。可能存在一些不够完善之处;欢迎提交问题和 PR。

快速开始

从零开始,让 Claude 在不同对话间记住信息,适用于 macOS 或 Linux。每个步骤彼此独立,请按顺序执行。

1. 安装二进制文件(无需 sudo;安装到 ~/.loomem):

curl -fsSL https://raw.githubusercontent.com/vvooki-sys/loomem/main/install.sh | sh

2. 将 ~/.loomem/bin 添加到 PATH(安装程序也会打印此说明):

echo 'export PATH="$HOME/.loomem/bin:$PATH"' >> ~/.zshrc   # or ~/.bashrc
exec $SHELL

3. 下载本地嵌入模型(约 113 MB,仅需下载一次)。安装程序不会下载该模型;没有它,服务将拒绝启动:

curl -fsSL https://raw.githubusercontent.com/vvooki-sys/loomem/main/scripts/fetch-embedding-model.sh | sh

4. 设置 LLM 密钥,用于提取、整合和梦境处理,或者接受无密钥模式(参见 常见问题):

export OPENAI_API_KEY="sk-..."     # or: export LOOMEM_ALLOW_KEYLESS=1

5. 启动服务(配置已预置在 ~/.loomem 中):

cd ~/.loomem && loomem-server

6. 检查服务是否运行(在另一个终端中):

curl http://localhost:3030/health
# {"status":"ok","version":"0.5.4"}

安装程序默认使用端口 3030,若该端口已被占用,则会询问是否使用其他端口(设置 LOOMEM_PORT 可跳过提示)。如果选择了其他端口,请在下面的命令中使用该端口。

7. 连接 Claude Code:

claude mcp add --transport http loomem http://localhost:3030/mcp

7b. 想改用 Claude 桌面应用(或 Cowork)? 它通过 stdio 而非 HTTP 连接本地服务,因此需要在 claude_desktop_config.json 中配置桥接,然后重启 Claude。原生支持,无需 Node(Loomem ≥ v0.2.1):

{ "mcpServers": { "loomem": { "command": "/absolute/path/to/.loomem/bin/loomem-cli", "args": ["mcp-stdio", "--url", "http://127.0.0.1:3030"] } } }

(任何版本均可使用,但需要 Node:"command": "npx", "args": ["-y", "mcp-remote", "http://127.0.0.1:3030/mcp", "--allow-http"]。)有关身份验证和详情,请参阅连接 MCP 客户端。

8. 试试看。 在 Claude 中输入:“记住,我在所有工具中都偏好深色模式。” 然后在一个新的对话中输入:“你知道我的偏好吗?” ——答案将由 Loomem 提供。

其他客户端(claude.ai、ChatGPT、OpenClaw)、TLS/远程访问,以及完整的选项列表,请参见下文和 docs/installation.md。

安装

一行命令(预编译二进制文件,macOS + Linux)
curl -fsSL https://raw.githubusercontent.com/vvooki-sys/loomem/main/install.sh | sh

将 loomem-server、loomem-cli 和 loomem-migrate 安装到 ~/.loomem/bin(无需 sudo),并将配置模板放入 ~/.loomem。使用 LOOMEM_VERSION=v0.2.0 固定版本,使用 LOOMEM_INSTALL_DIR 更改安装位置。归档文件会根据发布页面中的 SHA256SUMS 进行校验。安装程序不会下载本地嵌入模型:请按照快速开始的第 3 步下载。

完整指南——需求、固定版本、手动校验校验和、升级、卸载和故障排查:docs/installation.md。

从源代码构建
git clone https://github.com/vvooki-sys/loomem.git
cd loomem
cp entities.toml.example entities.toml   # personal entity config (gitignored)
(cd loomem-dashboard && npm ci && npm run build)   # dashboard, embedded at compile time
./scripts/fetch-embedding-model.sh                 # local embedding model → ~/.loomem/models
cargo build --release -p loomem-server -p loomem-cli
export OPENAI_API_KEY="sk-..."   # or LOOMEM_ALLOW_KEYLESS=1 to run without a key (see below)
cargo run --release -p loomem-server
# server listens on http://127.0.0.1:3030, data in ./data

需要 Rust(stable)、Node.js(用于仪表板)和 libclang(用于构建 RocksDB):在 Debian/Ubuntu 上运行 apt install libclang-dev,macOS 上则随 Xcode CLT 一同安装。在 Windows 上,请参阅 INSTALL_WINDOWS.md。

即使跳过某个步骤不会导致构建失败,每一步仍然很重要:不构建仪表板,仪表板就会返回 404;不构建 loomem-cli,Claude 桌面应用就没有 stdio 桥接。本地嵌入模型是必需的:使用默认设置 embedding_provider = "local" 时,无论是否提供 API 密钥,如果没有该模型,服务都会拒绝启动(refusing cloud fallback)。默认配置还启用了由 LLM 支持的提取和梦境处理,因此除非设置 LLM 密钥(export OPENAI_API_KEY=...)或设置 LOOMEM_ALLOW_KEYLESS=1,否则服务拒绝启动。在无密钥模式下,memory_ingest 会返回缺少密钥错误且不存储任何内容;实体提取会关闭,梦境处理会失败;memory_store 和搜索仍可正常使用。

Docker
docker build -t loomem .
export LOOMEM_AUTH_TOKEN=$(openssl rand -hex 32)
export LOOMEM_AT_REST_MASTER_KEY=$(openssl rand -base64 32)
export OPENAI_API_KEY="sk-..."
docker run -p 3030:3030 -v loomem-data:/data \
  -e LOOMEM_AUTH_TOKEN -e LOOMEM_AT_REST_MASTER_KEY -e OPENAI_API_KEY \
  -e LOOMEM_EMBEDDING_PROVIDER=openai -e LOOMEM_EMBEDDING_DIM=1536 loomem

仅在本地(环回地址)运行时,默认关闭身份验证。Docker 镜像绑定到 0.0.0.0,因此服务需要设置 LOOMEM_AUTH_TOKEN(未设置时拒绝启动),并且根据镜像默认设置,需要主密钥来加密静态数据。将密钥作为 Authorization: Bearer <key> 传递。可选择主动关闭这些功能:LOOMEM_ALLOW_UNAUTH=1(无身份验证)和 LOOMEM_AT_REST_EXPECT_ENABLED=0(静态数据以明文存储)——请参阅 docs/SECURITY.md。

镜像不包含本地嵌入模型,因此该命令会将嵌入切换到 OpenAI(LOOMEM_EMBEDDING_PROVIDER=openai、LOOMEM_EMBEDDING_DIM=1536),并传入 OPENAI_API_KEY。存储的文本随后会发送到 OpenAI API。若未设置这些变量,服务将拒绝启动(refusing cloud fallback)。

连接 MCP 客户端

Loomem 通过 /mcp 上的可流式 HTTP 提供 MCP 服务。任何兼容 MCP 的客户端都可以使用;以下是常见客户端的配置示例:

Claude Code
claude mcp add --transport http loomem http://localhost:3030/mcp
Claude 桌面应用(及 Cowork)— 本地 stdio 桥接

Claude 桌面应用(及 Cowork)通过 stdio 连接本地 MCP 服务,而不是通过 HTTP;设置中的“Add custom connector”框仅接受 https:// URL,因此不能在其中粘贴 http://localhost:3030/mcp。你需要将 Loomem 的本地 HTTP 端点桥接到 stdio。将以下任一配置块添加到 claude_desktop_config.json(macOS:~/Library/Application Support/Claude/claude_desktop_config.json;Windows:%APPDATA%\Claude\claude_desktop_config.json),然后完全重启 Claude。

推荐 — 原生桥接,无需 Node(Loomem ≥ v0.2.1;你已安装的 loomem-cli 已包含此功能):

{
  "mcpServers": {
    "loomem": {
      "command": "/absolute/path/to/.loomem/bin/loomem-cli",
      "args": ["mcp-stdio", "--url", "http://127.0.0.1:3030"]
    }
  }
}

请使用 loomem-cli 的绝对路径(例如 /Users/you/.loomem/bin/loomem-cli)——桌面应用不会继承 shell 的 PATH。如果启用了身份验证,请在 args 中添加 "--token", "<your token>",或在 "env" 块中设置 LOOMEM_AUTH_TOKEN。

替代方案 — mcp-remote(适用于任何版本,需要 Node 18+ / npx):

{
  "mcpServers": {
    "loomem": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "http://127.0.0.1:3030/mcp", "--allow-http"]
    }
  }
}

由于端点是 localhost 上的纯 HTTP,因此必须使用 --allow-http。若要启用身份验证,请在 args 中追加 "--header", "Authorization: Bearer ${LOOMEM_AUTH_TOKEN}",并添加 "env": { "LOOMEM_AUTH_TOKEN": "<your token>" }。这两个配置块也适用于其他任何仅支持 stdio 的桌面客户端。(Claude Code 是个例外——它原生支持 HTTP,因此请使用上面的 claude mcp add 配置示例,而不是桥接方案。)

Claude — 远程连接器(HTTPS,托管在其他位置)

若要连接运行在另一台机器上的 Loomem 实例,claude.ai/desktop 的远程连接器使用 HTTPS 通信。请通过启用 TLS 的反向代理(或 Cloudflare Tunnel 之类的隧道)公开你的实例,设置 SERVER_ORIGIN=https://your-domain(此项为必需,确保 OAuth 元数据公布正确的 URL),然后在 Claude 设置中添加连接器,并将其指向 https://your-domain/mcp。Loomem 开箱即支持 OAuth 动态客户端注册(/.well-known/oauth-authorization-server)。

ChatGPT — 自定义连接器

ChatGPT 的自定义连接器需要 HTTPS 和 OAuth(不支持静态 API 密钥);必须启用开发者模式(Pro/Team/Enterprise 方案)。按上述方法通过 HTTPS 公开服务,然后依次选择:ChatGPT → Settings → Connectors → Add custom connector → 粘贴 https://your-domain/mcp 并完成 OAuth 流程。

OpenClaw
openclaw mcp add loomem --url http://localhost:3030/mcp --transport http \
  --header "Authorization: Bearer $LOOMEM_AUTH_TOKEN"

对于远程 OpenClaw 网关,请将 --url 指向你的 HTTPS 端点。

通用 MCP 客户端配置
{
  "mcpServers": {
    "loomem": {
      "type": "http",
      "url": "http://localhost:3030/mcp",
      "headers": { "Authorization": "Bearer <your LOOMEM_AUTH_TOKEN>" }
    }
  }
}
独立服务注意事项

一个 Loomem 实例可以同时为多个客户端提供服务(例如,在本地运行的 Claude Code、通过 HTTPS 端点连接的 ChatGPT 等)——它们共享相同的上下文。除非前面配置了 TLS + 身份验证,否则请将绑定地址保持为 127.0.0.1;切勿将裸 HTTP 端口暴露到互联网。

架构

                    ┌──────────────────────────────────────────────┐
                    │                loomem-server                 │
 MCP client ──────► │  /mcp (JSON-RPC) ── dispatcher ─┐            │
 HTTP client ─────► │  /v1/* + /api/* ─── handlers ───┤            │
                    └─────────────────────────────────┼────────────┘
                                                      ▼
                    ┌──────────────────────────────────────────────┐
                    │                 loomem-core                  │
                    │  hybrid search (BM25 + vector + graph + RRF) │
                    │  consolidation / decay / dream workers       │
                    │  entity extraction + alias graph             │
                    │  encryption at rest (optional)               │
                    └───────┬───────────────┬──────────────────────┘
                            ▼               ▼
                       RocksDB          Tantivy
                  (chunks, graph,    (full-text index)
                   embeddings)

工作区 crate:loomem-core(引擎)、loomem-server(HTTP/MCP 服务)、loomem-migrate(离线数据库维护)、loomem-cli(命令行客户端)。

文档

常见问题

Loomem 是什么? 面向大模型 Agent 的开源上下文层。它使用 Rust 编写,以单个二进制文件的形式运行,基于 RocksDB 和 Tantivy,并通过模型上下文协议(MCP)提供服务。它为 Claude、ChatGPT、Codex 或任何 MCP 客户端提供完成实际工作所需的事实、决策和历史记录——可移植、本地优先,且由你掌控。

Loomem 与 mem0、Zep、Letta 和 cognee 有何不同? Loomem 以单个 Rust 二进制文件的形式发布,无需外部服务——大多数替代方案都需要单独的向量数据库和/或图数据库。它在上下文所有权和可移植性方面表现突出,可完全自托管并采用本地优先模式,支持使用本地 ONNX 模型离线生成嵌入,并且开箱即用,原生支持 MCP。

Loomem 免费且开源吗? 是的——采用 Apache-2.0 许可证,可免费自托管。源代码位于此仓库中。

Loomem 是否需要互联网连接或 OpenAI? 核心功能无需互联网连接。嵌入可通过本地 ONNX 模型在设备上运行,上下文的存储和搜索也完全支持离线使用。只有由大模型支持的步骤(memory_ingest 提取、整合、梦境处理、矛盾检测)需要 OpenAI API 密钥;没有密钥时,这些步骤将不可用,且默认配置仅在设置 LOOMEM_ALLOW_KEYLESS=1 后才能启动,而 memory_store 和搜索仍可正常使用。

哪些大模型客户端可以连接? 任何支持 MCP 的客户端。Loomem 通过可流式传输的 HTTP 提供 MCP,并为 Claude、Claude Code、ChatGPT、Codex 和 Cursor 提供配置指南,同时支持远程连接器的 OAuth 动态客户端注册。

为什么不直接使用 ChatGPT 或 Claude 的内置记忆? 内置记忆被锁定在单一供应商的平台中。Loomem 让你的上下文可在所有工具和模型之间移植,由你自托管和掌控,并提供结构化实体图谱和双时间历史记录——这些是单一供应商的功能无法提供的。

作者

Loomem 由 Łukasz Gumowski 创建并维护——[email protected]。

许可证

Apache-2.0。请参阅 LICENSE。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。