关于 Melchizedek
Melchizedek 为 Claude Code 提供本地持久记忆,自动索引会话记录,并通过混合搜索检索跨项目的历史内容。数据保存在单个 SQLite 文件中,可离线运行。
主要功能
- 01自动索引会话记录
- 02BM25 与向量混合搜索
- 03结果融合与重排序
- 04按文件、错误和相似工作搜索
- 05管理记忆、会话及项目索引
适用场景
- 01查找过去的调试记录与解决方案
- 02回顾不同项目中的架构决策
- 03检索涉及某个文件的历史对话
- 04手动保存或删除记忆内容
MCP 相关
该 MCP 服务向 Claude Code 提供会话搜索、上下文读取和记忆管理工具。钩子可在会话结束后触发自动索引。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Melchizedek
Claude Code 的持久记忆。 自动索引每次对话,并通过 MCP 工具提供生产级混合搜索(BM25 + 向量 + 重排器)。100% 本地运行,无需配置、无需 API 密钥、无需账单。
为什么选择 Melchizedek?
Claude Code 会在不同会话之间忘记所有内容,也不了解你的其他项目。Melchizedek 同时解决这两个问题。
它会在后台静默运行,在你工作时为对话建立索引,然后让 Claude 能够搜索你的全部历史记录,涵盖所有项目:过去的调试会话、架构决策、错误解决方案、代码模式。
无云端服务。无需 API 密钥。无需配置。 即插即用,随问随答。
工作原理
~/.claude/projects/**/*.jsonl (your conversation transcripts - read-only)
|
v
SessionEnd hook (auto-triggers after each session)
|
v
+-----------------+
| Indexer | Parse JSONL -> chunk pairs -> SHA-256 dedup
| (better-sqlite3)| FTS5 tokenize -> vector embed (optional)
+-----------------+
|
v
~/.melchizedek/memory.db (single SQLite file, WAL mode)
|
v
+-----------------+
| MCP Server | 16 search & management tools
| (stdio) | Hybrid: BM25 + vectors + RRF + reranker
+-----------------+
|
v
Claude Code (searches your history via MCP)
搜索流程——4 级优雅降级
每一层都是可选的。插件可仅使用 BM25 运行,并会随着更多组件可用而不断改进。
| 级别 | 组件 | 功能 | 依赖项 |
|---|---|---|---|
| 1 | BM25 (FTS5) | 带词干提取的关键词搜索 | 无(始终启用) |
| 2 | 双向量 (sqlite-vec) | 语义搜索——文本(MiniLM 384d)+ 代码(Jina 768d) | @huggingface/transformers(可选) |
| 3 | RRF 融合 | 通过倒数排名融合合并 BM25、文本向量和代码向量 | 已启用向量 |
| 4 | 重排器 | 对排名靠前的结果进行交叉编码器重新评分 | Transformers.js 或 node-llama-cpp(可选) |
性能
使用 npm run bench 测量,数据为 100 个会话、1 000 个块,存储于单个 SQLite 文件中。
| 指标 | 结果 | 目标 |
|---|---|---|
| 索引(100 个会话) | ~80 ms | < 10 s |
| BM25 搜索(平均) | ~0.2 ms | < 50 ms |
| 数据库大小(100 个会话) | ~1.4 MB | < 30 MB |
| 每次搜索的 token 数 | ~125 | < 2 000 |
快速开始
npm(推荐)
npm install -g melchizedek
将 MCP 服务添加到 Claude Code:
claude mcp add --scope user melchizedek -- melchizedek-server
npx(无需安装)
claude mcp add --scope user melchizedek -- npx melchizedek-server
从源代码安装
git clone https://github.com/louis49/melchizedek.git
cd melchizedek && npm install && npm run build
claude --mcp-config .mcp.json
Claude Code 插件市场 (即将推出)
插件审核尚未完成。在此期间,请使用上方的 npm 或 npx 安装方式。
claude plugin install melchizedek # not yet available
设置钩子(自动索引)
MCP 服务提供搜索工具,但钩子会触发自动索引。如果不设置钩子,你就需要手动为会话建立索引。
通过市场安装时会自动配置钩子。通过 npm/npx/源代码安装时,请将钩子添加到 ~/.claude/settings.json。
完整的 JSON 配置、钩子参考和故障排查,请参阅 docs/installation.md。
完成设置后,重启 Claude Code。索引将自动开始。
MCP 工具
搜索(从这里开始)
| 工具 | 描述 |
|---|---|
m9k_search | 搜索已索引的对话。返回精简片段。当前项目的结果会获得更高权重。支持 since/until 日期筛选和 order(score、date_asc、date_desc)。 |
m9k_context | 获取包含周边上下文的片段(同一会话中的相邻片段)。 |
m9k_full | 按 ID 获取片段的完整内容。 |
渐进式检索模式 - 搜索每个结果约返回 50 个 token,上下文约 200–300 个,完整内容约 500–1000 个。先使用 m9k_search,仅在需要时深入检索。相比加载全部内容,可节省 4 倍 token。
感知上下文的排序 - 当前项目(×1.5)和当前会话(×1.2)的结果会自动优先显示。跨项目的结果仍然可见。
专项搜索
| 工具 | 描述 |
|---|---|
m9k_file_history | 查找曾涉及特定文件的历史对话。 |
m9k_errors | 查找针对错误消息的历史解决方案。 |
m9k_similar_work | 查找针对类似任务的历史处理方法。优先显示元数据丰富的结果。 |
内存管理
| 工具 | 描述 |
|---|---|
m9k_save | 手动保存内存备注,以供日后检索。 |
m9k_sessions | 列出所有已索引的会话,可按项目筛选。 |
m9k_info | 显示内存索引信息:语料库大小、搜索流程、嵌入工作进程、使用指标。 |
m9k_config | 查看或更新插件配置。 |
m9k_forget | 从索引中永久移除一个片段。 |
m9k_delete_session | 从索引中删除一个会话。 |
m9k_ignore_project | 将一个项目排除在索引之外。后续会话不会被索引,也可选择清除已有会话。 |
m9k_unignore_project | 为先前忽略的项目重新启用索引。已清除的数据不会恢复。 |
m9k_restart | 重启 MCP 服务,以便在执行 npm run build 后加载新代码。支持使用 force: true 处理卡住的进程。 |
使用指南
| 工具 | 描述 |
|---|---|
__USAGE_GUIDE | 幻影工具。其描述会向 Claude 介绍检索模式和可用工具。 |
配置
默认无需配置。所有选项都可通过 m9k_config 或环境变量进行调整。
| 设置 | 默认值 | 环境变量 |
|---|---|---|
| 数据库路径 | ~/.melchizedek/memory.db | M9K_DB_PATH |
| 守护进程模式 | 已启用 | 使用 M9K_NO_DAEMON=1 禁用 |
| 日志级别 | warn | M9K_LOG_LEVEL |
| 启用嵌入 | true | 使用 M9K_EMBEDDINGS=false 禁用 |
| 启用重排序 | true | 使用 M9K_RERANKER=false 禁用 |
完整设置参考(20 多个选项、环境变量、配置文件示例)请参阅 docs/configuration.md。
增强搜索
Melchizedek 开箱即用,支持 BM25 关键词搜索。首次使用时会自动下载文本嵌入模型(MiniLM),以支持语义搜索。
有关 GPU 加速的代码嵌入(Ollama)、交叉编码器重排序(GGUF 模型)、特定平台的设置指南和完整的模型参考,请参阅 增强搜索设置。
有何不同?
| Melchizedek | claude-historian-mcp | claude-mem | episodic-memory | mcp-memory-service | |
|---|---|---|---|---|---|
| 理念 | 搜索引擎 - 为所有内容建立索引,供你搜索 | 搜索引擎 - 按需扫描 JSONL | 笔记本 - AI 压缩并保存 | 搜索引擎 | 笔记本 - AI 决定存储哪些内容 |
| 索引原始对话 | 是(JSONL 转录) | 是(直接读取 JSONL,不建立持久索引) | 压缩摘要 | 是(JSONL) | 否(手动调用 store_memory) |
| 安装后追溯处理 | 是(补全所有历史记录) | 是(读取已有文件) | 否 | 是 | 否(初始为空) |
| 搜索 | BM25 + 向量 + RRF + 重排序器 | TF-IDF + 模糊匹配 | FTS5 + ChromaDB | 仅向量 | BM25 + 向量 |
| 渐进式检索 | 3 层(搜索/上下文/完整内容) | 否 | 否 | 否 | 否 |
| 100% 离线 | 是 | 是 | 否(压缩需要 API) | 是 | 是 |
| 单文件存储 | SQLite | 无(读取原始 JSONL) | SQLite + ChromaDB | SQLite | SQLite-vec |
| 零配置 | 是 | 是 | 是 | 是 | 是 |
| MCP 工具 | 16 | 10 | 4 | 2 | 12 |
| 许可证 | MIT | MIT | AGPL-3.0 | MIT | Apache-2.0 |
| 双重嵌入(文本 + 代码) | 是(MiniLM + Jina Code) | 否 | 否 | 否 | 否 |
| 可配置模型 | 是(Transformers.js 或 Ollama) | 否 | 否(Chroma 内部) | 否(硬编码) | 是(ONNX、Ollama、OpenAI、Cloudflare) |
| 重排序器 | 交叉编码器(ONNX、GGUF 或 HTTP) | 否 | 否 | 否 | 质量评分器(不是搜索重排序器) |
| 隐私 | 全部在本地处理,<private> 标签脱敏 | 全部在本地处理 | 向 Anthropic API 发送数据 | 全部在本地处理 | 全部在本地处理 |
| 多实例 | 单例守护进程 - N 个 Claude 窗口共享 1 个进程(Unix 套接字 / Windows 命名管道,本地回退方案) | N 个独立进程 | 共享 HTTP 工作进程(:37777) | N 个独立进程 | 共享 HTTP 服务 |
灵感来源
本项目承蒙他人奠基。以下是我们借鉴的关键理念:
| 项目 | 我们借鉴的内容 | |
|---|---|---|
| CASS | RRF 混合融合、SHA-256 去重、自动模糊回退 | |
| claude-historian-mcp | 专用 MCP 工具(file_history、error_solutions) | |
| claude-diary | PreCompact 钩子(在执行 /compact 前归档) |
已知问题
- 会话加权未生效 - Claude Code 当前会在 SessionStart 钩子的 stdin 负载中发送空的
session_id,导致 ×1.2 会话加权无法生效。×1.5 项目加权不受影响,并提供主要的上下文感知排序。相关上游问题:#13668(transcript_path为空)、#9188(session_id过期)。Melchizedek 的会话加权代码已通过测试并准备就绪,上游修复发布后将自动启用。
隐私
- 零遥测。 无跟踪、无分析、无网络调用(可选的模型延迟下载除外)。
- 仅以只读方式处理对话记录。 绝不写入
~/.claude/projects/。所有数据均位于~/.melchizedek/。 - 支持
<private>标签。 索引前,<private>...</private>之间的内容会替换为[REDACTED]。 - 仅限本地。 您的对话绝不会离开您的设备。
要求
- Node.js >= 20
- Claude Code >= 2.0
- macOS、Linux 或 Windows
许可证
MIT
“无父无母,无族谱,既无生之始,也无命之终。”
- 希伯来书 7:3
由 @louis49 构建
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。