关于 chatvault
chatvault 是用于搜索和管理本地 AI 聊天记录语料的 MCP 服务。它读取用户控制的 JSON 文件,不上传记录或发起网络请求,并支持查看对话、盘点语料、读取图片及保存记忆。
主要功能
- 01支持全文搜索、筛选和摘要片段
- 02读取完整对话及已存图片
- 03列出对话并分页盘点语料
- 04保存对话和记忆
- 05可为写入工具启用只读模式
- 06本地 JSON 语料,无网络请求
适用场景
- 01按主题或日期查找过往对话
- 02重新查看对话或读取已存图片
- 03盘点聊天记录并检查语料新鲜度
- 04保存对话或待审核的记忆
MCP 相关
向 MCP 客户端提供搜索、读取、盘点、状态查询和写入工具,操作指定的本地语料目录。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
9收录的工具列表 · 更新于 1 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| query | string | 是 | 全文搜索查询 |
| title | string | 否 | 仅限标题包含此文本的对话 |
| date_to | string | 否 | 仅包含在此日期或之前更新的对话(ISO 8601) |
| platform | string | 否 | 仅限一个平台,例如 claude 或 chatgpt |
| date_from | string | 否 | 仅包含在此日期或之后更新的对话(ISO 8601) |
| match_mode | enum | 否 | 查询词的组合方式:any、all 或 phraseany | all | phrase |
详细介绍
chatvault
你过去的 AI 聊天记录已经保存在本地磁盘上。chatvault 让 MCP 客户端能够搜索、重新打开并盘点这些记录,而不会让任何历史记录离开 这台机器。无需账户,无需上传,也不会发起网络请求:服务会读取由你控制的文件夹中的 JSON 文件。
配置
CHATVAULT_CORPUS_DIR(可选)— 语料库所在位置。 默认为~/.chatvault/corpus。CHATVAULT_READ_ONLY(可选)— 设置为1后,两个写入工具(save_conversation、save_memory) 会拒绝操作,并返回说明当前模式的错误。读取操作仍可正常进行。
语料库布局
每个对话对应一个 JSON 文件,另有 memories.json:
{
"id": "abc",
"platform": "claude",
"title": "Planning a trip",
"updatedAt": "2026-10-01T12:00:00.000Z",
"messages": [
{ "role": "user", "text": "Where should we go?" },
{ "role": "assistant", "text": "Some ideas..." }
]
}
消息还可以包含 formattedText 和 images
({mime, dataBase64} 条目,用于保存保留的图像字节数据)。
对话可以包含 localTitle。语料库目录为空或不存在都没有问题:搜索和列表操作只会返回空结果。
每个对话都有一个内容指纹,以 fp2: 开头,
后接 SHA-256 十六进制摘要。摘要涵盖
标题、设置时的本地标题,以及按顺序排列的每条消息
——消息的索引、角色、文本、存在时的格式化文本,以及
每张图像的 mime 类型和保留的字节数据。时间戳和派生字段不计入,因此,重新保存相同内容会保留相同的指纹,而重命名或编辑消息则会更改指纹。确切的序列化形式(键已排序的规范 JSON)
是带标签的重建结果。
工具
search_conversations— 对标题和消息文本执行分词全文搜索。必需参数:query。可选参数:platform(精确匹配)、title(子串)、date_from和date_to(根据updatedAt匹配),以及match_mode—any(默认)、all或phrase。结果按匹配数量排序,其次按最近时间排序,并附带摘要片段。get_conversation_image— 获取消息中存储的图像。 必需参数:conversation_id、message_index、image_index。 返回 mime 类型和 base64 字节数据;图像不存在时会如实报错。get_conversation— 获取id对应的完整对话记录,其中包含contentFingerprint字段。list_conversations— 按updatedAt排列对话。 可选参数order(默认为newest_first,也可设为oldest_first)和limit。list_recent— 获取最近更新的对话,包含标题、简短摘要(第一条用户 消息的摘录 — 属于重建结果)和平台。可选参数limit。conversation_inventory— 以快照分页的方式列出紧凑的{id, platform, title, fingerprint}条目。调用时不传参数即可开始扫描,然后将每页的nextCursor作为cursor传回。每页最多包含 100 个 条目;limit可以缩小每页条目数。最多保留八个快照,未知或已过期的游标会报错,并要求重新开始扫描。corpus_status— 返回语料库的{lastReceivedAt, count};语料库为空时,lastReceivedAt为 null。save_conversation— 添加或更新对话。 必需参数:platform、title、messages。省略id时会自动分配 一个值(chatvault:<n>)。返回{id, fingerprint}。save_memory— 将来自text的持久事实存储起来。记录会追加到memories.json,初始状态为关闭 (enabled: false),直到你审核并启用它;随后返回已存储的记录。
搜索和列表结果也会附带一个 corpus 块 —
{lastReceivedAt, count} — 方便调用方了解回答所依据语料库的新鲜程度和大小。
CLI
npx @reneturcios/chatvault corpus_status '{}'
npx @reneturcios/chatvault search_conversations '{"query":"trip"}'
npx @reneturcios/chatvault --version
输出为工具的结果文本。退出代码:成功时为 0,
结果出错时为 1,用法错误时为 2。
MCP 服务
npx -y @reneturcios/chatvault mcp
MCP 客户端配置:
{
"mcpServers": {
"chatvault": {
"command": "npx",
"args": ["-y", "@reneturcios/chatvault", "mcp"],
"env": {
"CHATVAULT_CORPUS_DIR": "/path/to/corpus"
}
}
}
}
Docker
docker run -i -v /path/to/corpus:/corpus -e CHATVAULT_CORPUS_DIR=/corpus ghcr.io/cloudcorprecords/chatvault
docker run --rm ghcr.io/cloudcorprecords/chatvault --version
开发
npm install
npm run build # tsc -> dist/
npm test # tsx --test test/*.test.ts (temp corpus dirs, no network)
npm run dev # run the CLI from source
许可证
MIT — 版权所有 (c) 2026 Rene Turcios
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。