# 隐私与安全说明 / Privacy & Security > 本文件是 [MemorySQL](https://github.com/Logic647/MemorySQL) 的公开隐私与安全披露。 > 项目的设计前提是**数据 100% 存在你自己的机器上**,但"存在本机"不等于"没有风险"—— > 这个文件把会碰到你敏感数据的地方**逐条写清楚**,包括那些容易被忽略的。 最后更新:2026-09-30 · 适用版本:v0.5.6 及以后 --- ## 一句话总结 MemorySQL 会在你的电脑上**明文保存**你与所有 AI agent 的完整对话、你的个人记忆画像和项目状态; 它会在**本机**开一个**无鉴权**的 MCP 端点供 agent 读取这些内容;启用 LLM 功能时会把**对话摘录**发给你配置的服务商; 启用文件夹同步时会把**完整明文**写进你选的目录。**它不采集任何遥测,也不会把这些内容发给我们。** --- ## 1. 会摄入并明文保存什么 MemorySQL 自动监听本机已安装的 AI agent(Codex、ZCode、Claude Code、Gemini CLI、Cursor、OpenCode、 Hermes、Qwen Code、Kimi CLI、CodeBuddy、WorkBuddy、Qoder 等),把它们产生的数据写入本地数据库 (`%APPDATA%/memorysql/data/memory.db`)与生成文件目录。以下内容全部是**明文**: | 类别 | 具体内容 | |---|---| | **agent 对话全文** | 你与 assistant 的每一轮消息、工具调用及其输出,以及解析器保留的原始附加数据 | | **个人记忆画像** | 从对话中提炼的人物画像、偏好、事实条目(`kind=fact/persona`) | | **项目状态** | 项目级 devlog:做到哪一步、下一步是什么、踩过什么坑 | | **配置派生内容** | agent 的配置结构、MCP 配置键、目录布局等(用于兼容性探测) | 这些内容**可能包含你无意中提到的敏感信息**:粘贴的代码片段、路径、域名、内部接口名、 日志片段、乃至密钥(见下方"出口脱敏")。 **为什么明文**:这是刻意的设计取舍,和 Obsidian 等本地优先工具同一哲学 —— 避免"加密了但密钥也丢了"这类不可恢复的灾难。真正的边界在**出口**(见第 3 节), 而不是在存储加密。**如果你需要静态加密,应该用操作系统的全盘加密** (BitLocker / FileVault / LUKS),那是操作系统的职责。 ## 2. 数据存在哪里 所有数据都在**同一个自包含目录**下(`dataDir`): | 平台 | dataDir | |---|---| | Windows | `%APPDATA%\memorysql\data\` | | macOS | `~/Library/Application Support/memorysql/data/` | | Linux | `~/.config/memorysql/data/` | 目录结构(三平台一致): | | 相对 dataDir 的路径 | |---|---| | 数据库 | `memory.db` | | 生成文件(项目日志 / 记忆分发) | `vault/` | | 设置 | `settings.json` | 这是一个**可整体搬迁**的目录 —— 复制整个 `data\` 即可带走全部数据。 卸载**不会**自动删除它(需你手动清理),因为它们是你的数据。 ## 3. 什么会离开你的机器 **没有遥测。** MemorySQL 不向开发者发送任何数据,没有崩溃上报,没有使用统计,没有广告标识。 以下是你**主动配置后**才会发生的对外通信: | 场景 | 发出什么 | 发给谁 | |---|---|---| | **启用 LLM 引擎** | 对话**摘录**(见 3.1) | 你在设置里配置的提供商(智谱 / SiliconFlow / DeepSeek / MiMo / 本地反代 / OpenAI / Anthropic / 自定义端点 / 本地 Ollama) | | **项目总结(默认关闭)** | 项目会话的**定点摘录**(先脱敏,构成见 3.1) | 同上:当前 LLM 引擎;未配置 LLM 时用本地规则总结,**零外发** | | **检查更新** | 版本查询请求 | `api.github.com`(公开 API) | | **首次启用语义检索** | 下载约 20MB 推理组件 zip 与约 100MB 模型 | `github.com` Releases(组件)与 `huggingface.co`(模型);下载内容进入数据目录,不回传任何数据 | | **MCP 连接** | 本机 stdio 进程启动 | 无网络 | LLM 引擎(供会话摘要、项目总结、记忆精炼共用)支持预设与自定义:**智谱 GLM、 SiliconFlow、DeepSeek、小米 MiMo、本地反代(如 OpenCode Zen 的反代网关)、 OpenAI、Anthropic、任意 OpenAI 兼容自定义端点、本地 Ollama**。除 Ollama 外, Base URL 均可改 —— 数据实际发往**你填的那个地址**。反代预设默认指向 `127.0.0.1`,此时数据只到本机的反代进程,由该反代自行决定后续去向。 **未配置任何 provider 时,所有摘要/总结功能自动降级为纯本地规则,不会退回联网; 项目总结功能本身默认关闭,需在设置中显式开启。** ### 3.1 发给 LLM 的具体内容 **不是完整对话,是定点摘录**。会话摘要请求的 transcript 只包含: - 前两条用户消息(分别截断到 800 / 300 字符) - 最后一条 assistant 回复(截断到 600 字符) - 一个统计行(消息总数、工具调用数) 项目滚动总结(开启后)的素材是:上一版总结 + 每个新会话的 标题/已有摘要/ 首条用户消息(300 字符)/末条助手回复(400 字符)/统计行,单次至多 20 个会话、 总量约 2.4 万字符软截断。 **发送前会经过脱敏**(`redact`),移除的内容包括:API 密钥(`sk-`、`sk-proj-`、AWS AKIA、 GitHub token `ghp_`/`gho_` 等)、PEM 私钥块、邮箱地址。 脱敏是**模式匹配**,不是语义判断 —— 它能挡住常见的密钥格式,**不能保证挡住所有敏感信息**。 你的对话内容本身仍会被服务商看到,并受其隐私政策约束。 **如果你不希望任何内容离开本机,不要配置 provider**(或使用 Ollama 本地模型)。 ## 4. 文件夹同步会把完整明文写出去 「设置 → 同步 → 导出到文件夹」会把**完整的会话消息、记忆、项目状态以明文写入你选择的目录** (每批一个 `bundle-<时间戳>.json`)。启用该功能需要先勾选一次**明文确认**(`plaintextAck`), 这是产品的有意设计 —— 但勾选只是让你知情,**不改变任何加密行为**。 **这一点请特别注意**:如果你选的目录位于 OneDrive、Dropbox、iCloud Drive、坚果云、 Google Drive 等同步盘内,**这些云服务会随之获得你全部的对话内容的副本**, 其加密与访问控制由它们决定,不受 MemorySQL 控制。**停用目录同步不会删除已写出的文件**, 需要你自己清理。 ## 5. 本机 MCP 端点:无鉴权,且这是有意的 MemorySQL 在本机启动一个常驻 MCP 服务(默认 `http://127.0.0.1:8642/mcp`), 供你本机的 AI agent 通过 MCP 协议读取你的记忆与会话上下文。 **它没有任何鉴权** —— 没有 token、没有密码、没有会话票据。任何能在本机发起 HTTP 请求的进程,都可以读取你的**全部原始内容**。 已实现的本地加固(这些**不是**身份认证,请不要混淆): | 加固 | 作用 | 挡不住什么 | |---|---|---| | 绑定 `127.0.0.1` | 不监听任何网卡地址,**局域网/公网的其它机器无法访问** | 本机上的任何进程/任何用户 | | `Host` 头白名单 | 防 DNS rebinding(恶意网页把你的 `localhost` 解析到它的域名) | 本机进程 | | `Origin` 白名单 | 防跨源网页发起的 fetch/XHR | 本机进程、非浏览器客户端 | ### 信任假设(请认真读) 1. **你的机器上运行的任何进程、任何用户,都能读走你的全部记忆与会话。** 共享电脑、多用户环境、或安装了来源不明的软件,都属于暴露面。 2. **恶意网页理论上仍可能触达**。加固挡的是常见手法,不是全部;请不要把它当作安全边界。 3. 端点端口可在设置里修改(默认 `8642`)。**改端口不增加安全性** —— 它只是让"随手扫端口"的人少撞上你一次,任何本机进程都能遍历全部端口。 另注:端口被占用时 MemorySQL 会自动向后顺延(8643、8644…),实际端口以设置页显示为准。 4. **要真正关闭端点:设置 → MCP 服务 → 关掉「对外提供 MCP 端点」。** 开关**当场生效**,不必重启应用。关闭后端口不再监听,本机任何进程都连不上, 代价是 agent 无法自动续接上下文(需重新开启)。 底层写的是 `mcp-server:enabled` 而**不是** `plugin.mcp-server.enabled` —— 后者会让插件被整体卸载、开关无法在界面里复原。 **建议**:敏感环境请使用全盘加密,并确保系统账户唯一可信。 ## 6. 出口脱敏 任何"导出/分享"路径(隐私导出、同步归档、对外分享)都强制经过脱敏模块, 移除 API 密钥、私钥、邮箱等。本地界面与本机 MCP 端点展示的是**未脱敏的原始内容** (它们是本地的,所以不需要),只有**离开机器的路径**才脱敏。 ## 7. 第三方组件 - **本地推理**(语义检索):ONNX 模型,`onnxruntime-node` **完全本地运行,推理本身不联网**。 - 为缩小安装包,推理组件(约 20MB)与模型(约 100MB)在首次启用语义检索时从 GitHub Releases / HuggingFace 下载到数据目录(`native-runtime/`、`fastembed-cache/`), 之后全程离线;下载是单向的,不回传任何数据。 - 依赖的原生库(better-sqlite3 / sqlite-vec)随应用分发,其余语义栈随组件包分发, 清单见组件包内 `manifest.json`。 - 完整的依赖清单见仓库的 `package.json` / `package-lock.json`。 ## 8. 我们如何处理安全问题 - **开源(MIT)**,全部逻辑可审计 —— 包括上面这些披露的每一个技术细节。 - 安全问题请通过 GitHub Issues 公开报告,或邮件联系维护者。 - 我们会在公开的 issue / release notes 中同步修复进展。 ## 9. 你的控制权 - **关闭 LLM**:设置里清空 provider 的 API key,即回到纯本地。 - **关闭捕获**:设置 → 会话捕获 里禁用对应 agent 的捕获插件。 - **关掉端点**:设置 → MCP 服务 → 关闭「对外提供 MCP 端点」(当场生效)。 - **删除全部数据**:卸载后手动删除 `%APPDATA%\memorysql\`(或配置过的同步目录)。 - **审计**:所有源码在 GitHub 上,包括 MCP 端点与脱敏逻辑。 --- ## 联系 - Issue:https://github.com/Logic647/MemorySQL/issues - 仓库:https://github.com/Logic647/MemorySQL