AI知识库集成服务

open-memory是一个MCP服务器,为AI工具提供个人知识库访问服务,通过单一协议实现多工具间知识共享,支持本地和远程访问。

  • by DanWahlin
  • TypeScript
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 DanWahlin/open-memory

使用说明

开放式存储器

一个大脑,每个AI。一个MCP服务器,通过单一的开放协议,让任何AI工具(Copilot、Claude、Codex、Cursor、ChatGPT)访问您的个人知识库。

你的记忆就像普通的标记文件一样。 QMD 索引并搜索它们(BM25+向量嵌入)。开放内存将所有内容封装在任何客户端都可以连接的MCP服务器中。没有数据库。没有SaaS。档案是真理的源泉。

graph LR
    Copilot -->|MCP| OM[open-memory<br/>stdio or SSE]
    Claude_Code[Claude Code] -->|MCP| OM
    Cursor -->|MCP| OM
    Codex -->|MCP| OM
    ChatGPT -->|MCP| OM
    OM -->|QMD| FS[memory/*.md<br/>MEMORY.md<br/>notes/*.md]

    style OM fill:#2d333b,stroke:#539bf5,color:#adbac7
    style FS fill:#2d333b,stroke:#57ab5a,color:#adbac7

传输:本地(stdio)或远程(SSE通过尾标尺/隧道)

为什么

每个AI工具都有自己的内存仓。副驾驶不知道你跟克劳德说了什么。Cursor不记得Codex学到了什么。每次切换工具时,你都要重新解释上下文。

开放内存修复了这个问题:一个markdown文件目录,一个搜索索引,一个MCP服务器。任何使用MCP的工具都能获得您的完整上下文。

成本: $0. 自托管,无外部服务。

快速开始

先决条件

  • Node.js 20+
  • QMD (搜索/索引引擎)

安装QMD

# Using bun (fastest)
bun install -g qmd

# Or npm
npm install -g qmd

设置您的内存

如果你正在重新开始:

mkdir -p ~/memory/memory
echo "# My Knowledge Base" > ~/memory/MEMORY.md
echo "# $(date +%Y-%m-%d)" > ~/memory/memory/$(date +%Y-%m-%d).md

如果你已经在使用OpenClaw,你的内存在 ~/.openclaw/ (MEMORY.md+内存/*.md)。在那里打开记忆。

使用QMD为您的文件建立索引

# Create a collection pointing to your memory directory
qmd collection add ~/memory --name my-memory --mask "**/*.md"

# Generate vector embeddings (needed for semantic search)
# Requires OPENAI_API_KEY or a local embedding model
qmd embed

QMD支持多个嵌入提供程序。看 QMD文件 用于配置。

安装并运行开放式内存

# Clone
git clone https://github.com/DanWahlin/open-memory.git
cd open-memory

# Install & build
npm install
npm run build

# Configure (optional)
cp .env.example .env
# Edit .env to set QMD_BIN path, MEMORY_DIR, auth token, etc.

# Run (HTTP/SSE mode for remote clients)
npm start

# Or run in stdio mode (for local clients)
npm run start:stdio

连接AI工具

GitHub Copilot 命令行工具

最快的连接方式。跑 copilot 在您的终端中,然后:

/mcp add

填写互动表格:

字段 值
服务器名称 open-memory
服务器类型 STDIO (按相应的数字)
命令 node /path/to/open-memory/dist/stdio.js
环境变量 {"QMD_BIN": "/path/to/qmd", "MEMORY_DIR": "/path/to/your/memory"}
工具 *

按 Ctrl+S 为了拯救。服务器立即可用,无需重新启动。

您还可以直接在以下位置编辑配置文件 ~/.copilot/mcp-config.json:

{
  "mcpServers": {
    "open-memory": {
      "type": "local",
      "command": "node",
      "args": ["/path/to/open-memory/dist/stdio.js"],
      "env": {
        "QMD_BIN": "/path/to/qmd",
        "MEMORY_DIR": "/path/to/your/memory"
      },
      "tools": ["*"]
    }
  }
}

使用管理您的服务器 /mcp show, /mcp edit open-memory,或 /mcp delete open-memory.

对于远程访问(SSE),请使用类型 "http" 或 "sse" 使用您的服务器URL。

克劳德代码

claude mcp add open-memory -- node /path/to/open-memory/dist/stdio.js

或者添加到您的MCP配置中:

{
  "mcpServers": {
    "open-memory": {
      "command": "node",
      "args": ["/path/to/open-memory/dist/stdio.js"],
      "env": {
        "QMD_BIN": "/path/to/qmd",
        "MEMORY_DIR": "/path/to/your/memory"
      }
    }
  }
}

光标

添加到光标MCP设置(设置>MCP服务器):

{
  "mcpServers": {
    "open-memory": {
      "command": "node",
      "args": ["/path/to/open-memory/dist/stdio.js"],
      "env": {
        "QMD_BIN": "/path/to/qmd",
        "MEMORY_DIR": "/path/to/your/memory"
      }
    }
  }
}

Codex CLI

添加 ~/.codex/config.toml:

[mcp_servers.open-memory]
command = 'node'
args = ['/path/to/open-memory/dist/stdio.js']

[mcp_servers.open-memory.env]
QMD_BIN = '/path/to/qmd'
MEMORY_DIR = '/path/to/your/memory'

VS代码(副驾驶聊天)

添加 .vscode/mcp.json 在您的工作区(或 ~/.vscode/mcp.json 全球):

{
  "servers": {
    "open-memory": {
      "command": "node",
      "args": ["/path/to/open-memory/dist/stdio.js"],
      "env": {
        "QMD_BIN": "/path/to/qmd",
        "MEMORY_DIR": "/path/to/your/memory"
      }
    }
  }
}

远程访问(SSE模式)

使用内存文件在计算机上运行HTTP服务器:

OPEN_MEMORY_TOKEN=your-secret-token npm start

从任何支持SSE或HTTP传输的MCP客户端连接:

URL: http://<your-server>:3838/sse
Auth: Bearer your-secret-token

对于GitHub Copilot CLI远程访问,请使用 /mcp add 与类型 HTTP 或 SSE 并粘贴URL。

在Tailscale上,使用您的Tailscale IP。在互联网上,将其放在HTTPS的反向代理后面。

工具

开放内存公开了7个MCP工具:

工具 说明
search_memory 跨知识库的语义、关键字或混合搜索
read_memory 按路径读取特定内存文件
write_memory 附加到今天的每日笔记(或特定文件)
list_memories 列出目录中的内存文件
browse_recent 预览最近的每日笔记
get_document 按路径或QMD docid获取任何索引文档
memory_status 显示索引运行状况、集合和文档计数

配置

所有配置均通过环境变量(或 .env 文件):

变量 默认值 描述
QMD_BIN qmd QMD二进制文件的路径
MEMORY_DIR ~/.openclaw 内存文件的根目录
DAILY_NOTES_DIR memory 日常笔记子目录(MEMORY_DIR内)
MAIN_MEMORY_FILE MEMORY.md 主存储器文件名
QMD_COLLECTION (空) 要搜索的QMD集合(空=全部)
PORT 3838 HTTP服务器端口(SSE模式)
OPEN_MEMORY_TOKEN (空) 身份验证的承载令牌(空=无身份验证)

QMD设置指南

QMD是开放式内存背后的搜索引擎。它对markdown文件进行索引,并提供BM25(关键字)、向量(语义)和混合搜索。

集合

QMD将文件组织成集合。为你的记忆创建一个:

# Index a directory of markdown files
qmd collection add ~/my-notes --name notes --mask "**/*.md"

# List your collections
qmd collection list

# Re-index after adding files
qmd update

嵌入

对于语义搜索,QMD需要向量嵌入:

# Set your API key (OpenAI, or compatible provider)
export OPENAI_API_KEY=sk-...

# Generate embeddings
qmd embed

# Check status
qmd status

搜索模式

# Keyword search (fast, exact matching)
qmd search "project decisions"

# Semantic search (finds conceptually related content)
qmd vsearch "what did we decide about the architecture"

# Hybrid (best quality, combines both + reranking via local LLM)
qmd query "why did we choose Postgres over MongoDB"

建筑

graph TB
    Client[MCP Client<br/>Copilot · Claude · Cursor · Codex]
    Client -->|MCP Protocol<br/>stdio or SSE| Server

    subgraph Server[open-memory server]
        search_memory -->|vsearch / search / query| QMD
        read_memory --> FS_read[fs.readFileSync]
        write_memory --> FS_append[fs.appendFileSync]
        get_document -->|get| QMD
        list_memories --> FS_readdir[fs.readdirSync]
        browse_recent --> FS_readdir
        memory_status -->|status| QMD
    end

    Server --> FileSystem

    subgraph FileSystem[File System]
        MEMORY[MEMORY.md<br/>curated long-term knowledge]
        Daily[memory/YYYY-MM-DD.md<br/>daily notes]
        Other[*.md<br/>any indexed markdown]
    end

    style Client fill:#2d333b,stroke:#539bf5,color:#adbac7
    style Server fill:#1c2128,stroke:#539bf5,color:#adbac7
    style FileSystem fill:#1c2128,stroke:#57ab5a,color:#adbac7

关键设计决策:

  • 文件是真相的来源,而不是数据库
  • QMD处理所有索引和搜索(BM25+向量)
  • 无需外部服务
  • 两种传输模式:stdio(本地)和SSE(远程)
  • 通过承载令牌进行远程访问的身份验证

码头工人

FROM node:20-slim
WORKDIR /app
COPY package*.json ./
RUN npm ci --production
COPY dist/ dist/
RUN npm install -g qmd
ENV QMD_BIN=qmd
EXPOSE 3838
CMD ["node", "dist/server.js"]

装载内存目录:

docker run -v ~/memory:/memory -e MEMORY_DIR=/memory -p 3838:3838 open-memory

许可证

麻省理工学院