关于 ChainMemory
ChainMemory 是面向 Claude、ChatGPT 等 AI Agent 的跨模型记忆 MCP 服务,支持项目状态管理与记忆检索。可选盲保险库在本机加密记忆,并以链上锚定供验证。
主要功能
- 01跨模型保存与检索记忆
- 02AES-256-GCM 加密记忆
- 03本机密钥盲保险库
- 04链上锚定与状态验证
- 05生成项目简报及状态变更
适用场景
- 01在不同模型间携带项目记忆
- 02保护不希望服务端读取的记忆
- 03查看项目风险、优先事项与决策
- 04核验记忆或项目状态的链上锚点
MCP 相关
MCP 服务将 ChainMemory 协议及其记忆、项目状态相关工具提供给兼容的 AI Agent。盲保险库可在本机加密内容,密钥由用户持有的 12 个单词派生。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
npx -y chainmemory-mcpCHAINMEMORY_API_KEY密钥ChainMemory API key. REQUIRED for every tool except chainmemory_seal. Get one at https://faucet.chainmemory.aiCHAINMEMORY_SEED_PHRASE密钥12-word BIP-39 phrase for the blind vault. Optional: without it the server works exactly as before. With it, sealed:true encrypts a memory on your machine and computes its search vector here, so sealed memories can still be found, and searches send the query's vector instead of its text. Generate one with chainmemory_new_seed. It never leaves your machine and cannot be recovered.CHAINMEMORY_API_BASEAPI base URL (default: https://api.chainmemory.ai)CHAINMEMORY_MODELS_DIRFolder for the 45 MB search model used with the blind vault (default: ~/.chainmemory/models). Downloaded once from models.chainmemory.ai and checked against its SHA-256 anchored on ChainMemory's chain.CHAINMEMORY_ALLOW_FULLSet to 1 to let get_project_brief return the FULL level (addresses, ports, server paths and security rules) when you ask for it. Leave it empty to keep every brief at the public level, which is safe to paste anywhere. Works only with the owner's key, and ChainMemory logs every full-level request.AICHAIN_KEY密钥NOT NEEDED for normal use — leave it empty. Only the chainmemory_seal tool reads it, to sign a contract call yourself instead of letting the API anchor the memory (which chainmemory_remember already does). If you do set it, it is a wallet private key: use a dedicated wallet holding only a few AIC, never your main one. No other tool uses it.AICHAIN_RPCRPC endpoint used only by chainmemory_seal (default: https://rpc.chainmemory.ai). Leave it empty unless you set AICHAIN_KEY.本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
37收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| tags | array | 否 | 显式标签;仅在没有显式标签时才使用自动标签 |
| sealed | boolean | 否 | 在发送前于客户端中加密此记忆(盲存储库)。需要 CHAINMEMORY_SEED_PHRASE。服务器存储的是无法读取的数据块。其搜索向量在本机计算(首次使用时,会从 models.chainmemory.ai 下载 45 MB 的搜索模型,并与链上哈希核验),因此它会显示在 search_memories 中,并在此处解密。其项目和标签也会存储,因此 list_memories_filtered 可以找到它。使用 chainmemory_open_sealed 直接读取。 |
| content | string | 否 | summary 的可选别名。如果存在,它会覆盖作为已存储记忆文本的 summary。summary 是必填字段:始终传入;仅在需要比 summary 更长的正文时使用 content。 |
| project | string | 否 | 用于归档此记忆的项目(作为第一个标签添加) |
| summary | string | 是 | 发生了什么(在锚定到链上之前会加密) |
| category | enum | 否 | 记忆类别DECISION | LEARNING | INTERACTION | STATE | ERROR | MILESTONE | CUSTOM |
| platform | string | 否 | 平台来源(例如 claude、chatgpt)。可选。 |
| importance | integer | 否 | 重要性 1-10(默认值为 5) |
详细介绍
ChainMemory MCP Server
面向 Claude、ChatGPT 和任何 AI Agent 的跨模型、可通过密码学验证的记忆——拥有自己的 AI 记忆,并将其带到每个模型中。
ChainMemory MCP 将 ChainMemory 协议开放给任何支持 Model Context Protocol 的 AI Agent。记忆经过加密(AES-256-GCM),逐条锚定在链上,任何人都能验证,并可在 ChatGPT、Claude、Gemini、Perplexity 和任何其他大模型之间移植。永远不会被供应商锁定。
v2.10.0 的更新内容
- 仅在你允许时,
get_project_brief才提供完整级别。 摘要默认公开:可安全粘贴到任何聊天中,其中的地址、端口、服务器路径和安全规则都会替换为[withheld]。传入level: "full"也可获取这些内容,用于处理你自己的基础设施。只有在此 MCP 服务的env中添加CHAINMEMORY_ALLOW_FULL=1后,此功能才会生效;且仅接受所有者密钥(API 会拒绝成员密钥和项目密钥)。ChainMemory 会记录每次完整级别的请求:请求时间、项目和版本、发起请求的客户端,以及传出的敏感行数。摘要顶部会说明这一点,末尾会统计敏感行数。 - 远程端点绝不提供完整级别。 它面向第三方客户端,因此甚至不会在此发布该参数。
- 无论级别如何,摘要都不会提及项目的 AIC 是如何受到保护的。
- 现在,每个请求都会告知 API 发起请求的客户端
(
chainmemory-mcp <version> stdio|remote),完整级别日志会记录此信息。
如需启用,请将此变量添加到 API 密钥旁边:
"env": {
"CHAINMEMORY_API_KEY": "aic_your_key_here",
"CHAINMEMORY_ALLOW_FULL": "1"
}
v2.9.1 的更新内容
get_project_brief新增任务模式。 传入task: "pri_0015",摘要便会围绕该优先事项展开:完整列出该优先事项、单独一行列出其完成标准、说明它可缓解的风险、Brain 中提及它的所有其他内容,以及所有工作规则和约束。常规摘要用于了解情况;这个摘要则旨在让你能够直接开始工作。它不会更改“发生了哪些变化”所记忆的版本。- 摘要可安全粘贴到任何聊天中。 服务现在会将 IP 地址、端口、服务器路径和所有者的安全规则替换为
[withheld],并说明文本中有多少内容被隐藏,让 Agent 知道需要询问。此前,较大的预算可能会将服务器路径或 SSH 端口带入第三方聊天。 - 摘要会更详细地说明其显示的内容: 完整的
state_hash、每个发生变化的优先事项—风险关联及其先前值、不会被截断的完成标准、“待审核”中的标题、所有者的工作规则,以及引用证据的条目数量;其余条目标记为(no evidence)。 - 优先事项可以关联风险。
update_project_state说明了add_priority新增的mitigates字段和set_priority_risks操作(语法现有 30 个操作)。摘要随后会显示每项风险由哪个优先事项负责,并列出无人负责缓解的高风险。文档中列出的取值也已更正:风险状态可以是mitigated,优先事项状态可以是active、done或dropped。
v2.9.0 新功能
get_project_brief:用几千个字符呈现 Project Brain,最重要的内容优先。get_project_state会以 JSON 形式返回完整状态;对于成熟项目,这份内容很长,而 Agent 开启会话时会从头开始读取。简报由服务端根据相关性生成纯文本(GET /v1/project/:name/inject),并控制在字符预算内(默认 7,000,可设为 1,000 到 50,000):自你上次读取的版本以来发生的变化、未解决的风险(高优先级在前)、当前优先事项、近期决策及其范围、近期里程碑、未解决的问题、每条约束的一行规则,以及超过 30 个版本未审核、可能已不再成立的条目。简报以状态的链上锚点开头。免费且只读。- “发生了哪些变化”以你上次读取的内容为基准。 此本地服务会按项目记录上次提供给你的版本,保存在
~/.chainmemory/brief-since.json中。文件使用你的 API 密钥哈希和项目名称作为索引:文件中不包含这两者。传入since,即可与指定版本进行比较。远程端点不会存储任何内容,比较基准为前一个版本。 - 标题支持英语或西班牙语(
lang: "es");条目按原文返回。 get_project_state没有变化,仍然是在使用update_project_state前应调用的工具。
v2.8.1 新功能
- 搜索模型可在慢速连接下完成下载。 首次下载(45 MB,仅使用盲保险库时需要)此前会在总计 2 分钟后中断,因此在速度较慢但正常工作的连接下,模型始终无法下载完成,导致首次保存的封存记忆没有搜索向量。现在只有在 60 秒内没有收到任何数据时才会中断下载,无论下载总共耗时多久。
v2.8.0 新功能
- 可搜索封存记忆。 配置盲保险库(
CHAINMEMORY_SEED_PHRASE)后,chainmemory_remember搭配sealed:true使用时,现在会连同加密数据块一起发送记忆的搜索向量;该向量在你的设备上计算。服务端可以找到自己无法读取的记忆,而search_memories会在本地解密匹配的封存记忆。 - 你的查询会留在你的设备上。 配置保险库后,
search_memories会发送查询的向量,而不是查询文本,因此搜索内容的文本绝不会发送到服务端,也不会写入服务端的搜索日志。 - 没有新增依赖。 向量由 ChainMemory 自有引擎生成(包括由 ChainMemory 编写的分词器、模型读取器和 WebAssembly 内核),并随软件包一同提供:总共 80 kB。首次需要时,会从
models.chainmemory.ai下载 45 MB 的搜索模型,根据锚定在 ChainMemory 链上的 SHA-256 值进行校验,并存储在~/.chainmemory/models(或CHAINMEMORY_MODELS_DIR)中;每次加载时都会再次校验。 - 不使用保险库时,一切保持不变,也不会下载任何内容。
v2.7.1 新功能
- MCP 握手中报告正确的版本。 无论安装了哪个软件包,服务端都会向每个客户端报告自己是
2.5.6。现在它会从package.json读取版本,因此两者不会再出现不一致。 quote_inject能正确报告缺失的记忆——已在 API 端修复(2026-09-14),客户端无需更改。此前,它会将已找到的记忆列为未找到,并告知 Agent 修复一份实际上没有问题的列表。get_inject_history的响应现在包含memory_numbers,即每条注入记忆对应的 #N。
v2.7.0 新内容
工具描述已重写,面向 Agent,而非人类。 我们审查了全部 36 个工具,发现只有 39% 说明了何时使用,25% 说明了自身限制,还有两个工具收费却没有说明。其中一个描述明显有误。
chainmemory_profile承诺会返回memory count、trust score和registration block。这些字段一个都不存在——API 返回的是chain_memories、local_memories、synced_memories、pending_sync、reputation、owner和active。v2.5.6 版本修复了请求错误字段的代码,但描述仍在宣传这些字段。chainmemory_remember(0.001 AIC)和update_project_state(0.05 + 每次操作 0.005)现在注明了费用。它们分别是使用次数最多和费用最高的工具。update_project_state现在说明了封闭的取值范围。severity可以是low、med或high——不能是medium,也不能是critical。取值错误会导致操作被拒绝,但费用仍会照收。get_my_context和chainmemory_recall都曾写着“在对话开始时使用”。现在,两者都说明了应在何时替代另一个工具使用。- 12 条单行描述补充了费用、限制,以及可能导致调用失败的注意事项:
delete_project需要数字 ID,不接受 slug;add_project_from_template和list_project_templates使用无法猜测的 ID;chainmemory_seal是唯一需要钱包私钥的工具。
行为没有变化:仍是相同的 36 个工具、相同的端点和相同的费用。变化的是 Agent 在选择工具前获知的信息。
v2.6.1 新内容
仅修正文档,没有代码变更。盲库部分对验证步骤的描述有误:GET /v1/memory/<id>/decrypted 不会在遇到已密封的记忆时失败——它会返回 200,并包含 scheme: "sealed" 和加密后的数据块。保证不变(运营方永远无法获取你的文本),但实际观察到的行为与文档描述不符。我们在针对线上 API 运行首个端到端测试时发现了这个问题。
v2.6.0 新内容
盲库——服务无法读取的记忆。 将 sealed: true 传给 chainmemory_remember,文本就会在离开你自己的设备前先行加密:使用 AES-256-GCM,密钥由十二个永不接触网络的 BIP-39 单词派生。ChainMemory 存储不透明的数据块,并记录其哈希。费用与普通写入相同——隐私无需额外付费。
chainmemory_new_seed在本地创建助记词。只显示一次,不存储在任何地方。chainmemory_open_sealed在本地而非服务器上获取数据块并解密。- 未设置
CHAINMEMORY_SEED_PHRASE时,一切行为与 2.5.6 完全相同。
一个需要坦诚说明的限制: 已密封的记忆不会存储可搜索文本,因此不会出现在 search_memories 中——服务器没有可供索引的内容。但它的项目和标签会被存储,因此 list_memories_filtered 仍可按项目找到它;随后你可以用 chainmemory_open_sealed 读取内容。失去全文搜索是服务器无法读取内容的直接结果;要在保留这一保证的同时绕过此限制并无可行办法。(已在 v2.8.0 中解决:现在会在你的设备上计算搜索向量,因此无需服务器读取内容,也能搜索已密封的记忆。)
如果你丢失了这十二个单词,用它们密封的记忆就无法恢复——对你和其他所有人都是如此。请把它们写在纸上。
v2.5.6 版本更新
修复了 3 个会导致工具自信地报告错误信息的问题。没有新增工具。
list_project_templates从未列出任何内容。 它从返回defaults/project_id的响应中读取templates/template_id,因此总是回复“没有可用模板”——这也意味着没人能得知add_project_from_template所需的 ID。整个模板流程都无法使用。chainmemory_profile有 8 个字段中的 5 个读取错误。 它读取的是wallet、memory_count、trust_score、registration_block和sealed;而 API 返回的是owner、chain_memories/local_memories、reputation和active。无论实际状态如何,每个个人资料都会显示空钱包、0 条记忆、?声望和Sealed: no。它也没有处理 API 密钥对应的身份尚未注册的情况,因此会打印AI Profile #undefined。update_project_state在所有操作都被拒绝时隐藏了原因。 只有在成功路径中才会显示拒绝信息,但如果所有操作都被拒绝,状态就不会改变,流程会进入另一个分支——因此回复只会显示Rejected: 3,除此之外什么也没有。想知道原因,唯一的办法就是再猜一次,并再次支付费用。
v2.5.5 版本更新
audit_memory和audit_state——两个取证审计端点,现在可由任意 MCP 客户端调用。两者都接受dry_run: true,可在不收费的情况下返回完全相同的结果:你可以随时运行审计,只需在需要将收据留档时付费。audit_state的付费调用需 5 AIC,因此这些工具默认使用试运行模式。- 这两个端点首先在服务端完成了修复:之前它们会在验证之前收费,所以 ID 或项目名称拼错也会被收费,并返回 404。
v2.5.4 新增内容
搜索和完整读取
search_memories— 对记忆进行语义搜索(对缓存的嵌入向量计算余弦相似度,并结合近期性和重要性),返回每条匹配结果的完整文本。此前版本完全不支持搜索get_memory— 完整读取一条记忆,从链上解密,并进行完整性检查:服务端根据明文重新计算事件哈希,并与链上锚定的哈希进行比对chainmemory_recall和list_memories_filtered现在明确说明它们返回的是 80 字符预览,并提示可通过get_memory/search_memories获取完整文本
验证——免费,也是产品的核心
verify_project_state— 公开、无需身份验证的 Project Brain 证明:列出每个锚定版本及其state_hash和链上坐标,并说明如何自行在ProjectStateAnchor合约中核验。不公开任何内容get_memory_proof— 单条记忆的可分享锚定证明:包含event_hash及其链上坐标。第三方无需你的 API 密钥即可验证,且绝不会泄露内容
成本控制
quote_inject— 付费前为 inject 报价:哪些 id 存在、哪些不存在、令牌数、包含销毁和金库分配明细的准确费用,以及余额是否足够- 正确的 inject 费用 — 客户端现在直接从服务端获取价格和剩余 inject 次数,而不再自行重新计算。此前版本按 2026-06-30 之前的 0.001 AIC 价格计算,承诺的 inject 次数比余额实际允许的多 100 倍
角色与加固
list_role_contracts— 在读取合约或担任角色前,查看项目的角色(id、版本、状态)。角色 id 无法猜测,此工具省去了失败调用的往返get_project_state上的include_roles— 设置为false,即可获取状态而不包含每份已签署角色合约的完整文本- 输入加固 — 现在,所有会进入 URL 的用户提供值都会经过验证或转义。数字路径参数必须是整数,字符串路径参数会进行百分号编码,查询限制会被钳制。无效输入会在本地明确报错,而不会发送到网络
- 在 MCP 清单中声明
CHAINMEMORY_API_KEY— 之前唯一必需的变量未写入server.json,因此注册表和安装程序从未提示用户填写
v2.5 新增内容
- Project Brain —
get_project_state将原子记忆整合为结构化、带版本且可验证的项目状态(决策、风险、约束、指标和环境:你的工作地点和工作方式),并在一次调用中一并提供有效的角色合约 - 可验证角色合约(VRC) — 面向 AI Agent 的人工签署角色合约:
get_role_contract(读取合约)、assume_role(开启经过审计的 Role Session)、release_role(附上摘要并结束) - 共 36 个工具 — 记忆操作、语义搜索、验证证明、项目、Project Brain、带审计会话的角色合约,以及选择性 inject
快速开始
1. 获取 API 密钥
访问 https://faucet.chainmemory.ai。你会收到一个 API 密钥(aic_...)和一笔 AIC 初始余额。ChainMemory 不收集个人数据——你的密钥就是你的身份。
2. 添加到 Claude Desktop
编辑 Claude Desktop 配置文件(macOS 上为 ~/Library/Application Support/Claude/claude_desktop_config.json,Windows 上为 %APPDATA%\Claude\claude_desktop_config.json):
{
"mcpServers": {
"chainmemory": {
"command": "npx",
"args": ["-y", "chainmemory-mcp"],
"env": {
"CHAINMEMORY_API_KEY": "aic_your_key_here"
}
}
}
}
重启 Claude Desktop。现在即可使用这 37 个工具。
3. 试用
- “你还记得我的哪些项目?” →
chainmemory_recall - “记下这个决定:下一个冲刺改用 Postgres” →
chainmemory_remember - “my-app 的进展如何?” →
get_project_brief(变更内容、未解决的风险、优先事项和决定) - “加载 my-app 的项目状态” →
get_project_state(Brain + 活跃的角色合约) - “my-app 有哪些角色?” →
list_role_contracts - “以 my-app 的架构师角色行事” →
assume_role(经过审计的 Role Session)
全部 37 个工具
记忆操作(8)
| 工具 | 说明 |
|---|---|
chainmemory_remember | 写入永久加密记忆。根据内容自动添加标签。 |
chainmemory_recall | 按时间倒序回顾用户最近的记忆(预览最多 80 个字符) |
search_memories | 对记忆进行语义搜索——返回每条匹配记忆的全文 |
get_memory | 从链上读取一条记忆的完整解密内容,并检查链上完整性 |
list_memories_filtered | 按项目标签和归档状态筛选(预览最多 80 个字符) |
update_memory_tags | 更改现有记忆的标签 |
archive_memory | 将记忆从回顾结果中隐藏(可撤销) |
unarchive_memory | 恢复已归档的记忆 |
盲保险库(2)
| 工具 | 说明 |
|---|---|
chainmemory_new_seed | 在本地生成 12 个单词的 BIP-39 短语。仅显示一次,不会存储或传输 |
chainmemory_open_sealed | 获取封存记忆的 blob,并在此设备上解密 |
验证(4)
| 工具 | 说明 |
|---|---|
verify_project_state | 公开且无需身份验证的 Project Brain 证明:列出每个锚定版本、其 state_hash 和链上坐标,以及自行验证的方法。不公开内容 |
get_memory_proof | 单条记忆的可分享锚定证明:event_hash + 链上坐标。第三方无需你的 API 密钥即可验证 |
audit_memory | 对单条记忆进行取证审计:根据存储的明文重新计算其 event_hash,并与锚定值进行比较。0.1 AIC,或使用 dry_run: true 免费运行 |
audit_state | 对 Project Brain 进行完整审计:使用确定性引擎重新计算 state_hash,并返回链上锚点和版本历史。5 AIC,或使用 dry_run: true 免费运行 |
Project Brain(3)
| 工具 | 说明 |
|---|---|
get_project_state | 汇总且可验证的项目状态 + 活跃的角色合约(state_hash,已锚定到链上)。传入 include_roles: false 可省略合约正文 |
get_project_brief | 按相关性排序并限制字符数,将同一状态整理为文本简报:自上次读取版本以来的变更、未解决的风险及应对风险的优先事项、优先事项、工作规则、近期决定、限制条件和待审事项。传入 task 可获取完成某项优先事项所需的全部信息。不提供基础设施详情。免费 |
update_project_state | 提交结构化操作建议(30 种操作语法,包括环境和优先事项—风险关联);服务端负责验证、构建、计算哈希并持久化 |
可验证角色合约(6)
| 工具 | 说明 |
|---|---|
list_role_contracts | 列出项目的角色及其版本和状态——不知道 role_id 时先调用此工具 |
get_role_contract | 查看角色合约:用途、包含检查项和严重性级别的规则、工作协议。接受 version 参数以审计旧版本;若存储的正文与其 contract_hash 不匹配,则会标记 |
assume_role | 在活跃合约下开启经过审计的 Role Session(固定合约和 Brain 哈希),并提供所有者声明的工作环境 |
release_role | 结束 Role Session,并总结已完成和待完成的工作 |
list_role_sessions | 审计跟踪:谁担任了哪个角色、何时担任、如何结束,以及结束时的总结 |
get_role_session | 查看完整的单个会话,以及该会话固定使用的合约和 Brain 哈希 |
项目(5)
| 工具 | 描述 |
|---|---|
list_projects | 列出用户的项目 |
create_project | 创建自定义项目标签,可选添加自动标记关键词 |
delete_project | 删除项目标签 |
list_project_templates | 列出内置模板 |
add_project_from_template | 实例化内置模板 |
身份与统计(4)
| 工具 | 描述 |
|---|---|
chainmemory_stats | 网络统计数据(AI、记忆、区块、AIC 供应量) |
chainmemory_register | 在链上注册新的 AI 身份 |
chainmemory_profile | 获取 AI 的个人资料和信任评分 |
chainmemory_seal | 永久封存一条记忆(需要 AICHAIN_KEY) |
跨平台上下文(1)
| 工具 | 描述 |
|---|---|
get_my_context | 可在所有平台间移植的已验证上下文 |
选择性注入 — 付费(4)
| 工具 | 描述 |
|---|---|
get_inject_balance | 检查 AIC 余额以及可支付的注入次数 |
quote_inject | 付款前为注入报价:找到/缺失的 ID、令牌数、确切费用、余额是否充足。免费 |
inject_memories | 将 1-50 条记忆注入当前聊天上下文(0.1 AIC,乐观响应) |
get_inject_history | 注入操作历史 |
环境变量
| 变量 | 必需 | 描述 |
|---|---|---|
CHAINMEMORY_API_KEY | 是 | 你从水龙头获取的 API 密钥 |
CHAINMEMORY_API_BASE | 否 | 默认值为 https://api.chainmemory.ai |
CHAINMEMORY_SEED_PHRASE | 否 | 用于盲保险库的 12 个单词。不设置时,sealed: true 不可用,其他功能均正常运行。设置后,可搜索封存的记忆,搜索时会发送查询的向量而非文本 |
CHAINMEMORY_MODELS_DIR | 否 | 用于保险库的 45 MB 搜索模型文件夹。默认值为 ~/.chainmemory/models |
AICHAIN_KEY | 否 | 钱包私钥 — 仅 chainmemory_seal 需要 |
AICHAIN_RPC | 否 | 默认值为 https://rpc.chainmemory.ai — 仅用于 chainmemory_seal |
大多数用户只需要 CHAINMEMORY_API_KEY。
选择性注入的工作方式
- 用户(或 AI)通过 ID 列表调用
inject_memories - 后端检查余额(至少需要 0.1 AIC — Fee Schedule v1.0)
- 乐观响应(<500ms):立即返回明文,并将交易加入队列
- 后台处理:50% 的费用进入生态系统资金库,50% 被销毁
get_inject_history显示确认状态
盲库的工作原理
chainmemory_new_seed会从官方的 2048 个单词列表中生成 12 个带校验和的 BIP-39 单词。请将它们记下来;它们只会显示一次。- 将它们放入
CHAINMEMORY_SEED_PHRASE,然后重启 MCP。 - 设置
sealed: true后,助记词会通过 PBKDF2-HMAC-SHA512 拉伸为种子,内容密钥会通过 HKDF-SHA256 派生,文本则会通过 AES-256-GCM 加密并封装为带版本信息的信封。随后,密文、SHA-256 哈希和记忆的搜索向量会发送至POST /v1/memory/sealed;文本不会发送。 - 搜索向量(384 个数字)由 ChainMemory 自带的引擎在你的机器上计算。该引擎使用从
models.chainmemory.ai一次性下载、并与锚定在链上的 SHA-256 值进行校验的模型。这样,服务端无需读取记忆,就能找到它。 search_memories会发送查询的向量,而非文本,并在本地解密匹配的密封记忆。chainmemory_open_sealed会检索一个密文,并在本地解密。
任何时候都不会传输密钥材料,也不存在恢复途径——而恢复途径正是运营方读取你记忆所需要的。
**不涵盖的内容:**元数据仍然可见(时间戳、大小、项目、标签),搜索向量也同样可见。搜索向量无法还原为文本,但会反映记忆的主题。加密前写入的记忆无法追溯加密,链上锚定仍由服务端签名。你可以信任运营方进行锚定,但绝不能让其读取。
**亲自验证这一说法:**密封一条记忆,然后使用你的 API 密钥调用
GET /v1/memory/<id>/decrypted。它会返回 200,其中包含
scheme: "sealed" 和加密后的密文,绝不会包含文本。该端点使用运营方持有的 API 密钥派生密钥;但面对密封记忆时,运营方无从解密。
架构
┌─────────────────────────────────────────────────────────────┐
│ AI Agent (Claude Desktop, ChatGPT, any MCP client) │
└──────────────────┬──────────────────────────────────────────┘
│ MCP stdio
↓
┌─────────────────────────────────────────────────────────────┐
│ chainmemory-mcp v2.5 (this package) │
└──────────────────┬──────────────────────────────────────────┘
│ HTTPS + x-api-key
↓
┌─────────────────────────────────────────────────────────────┐
│ api.chainmemory.ai │
│ - per-user encryption at rest (AES-256-GCM) │
│ - Project Brain (deterministic builder + state_hash) │
│ - Role contracts + audited Role Sessions │
│ - SQLite + Merkle proofs │
└──────────────────┬──────────────────────────────────────────┘
│ JSON-RPC
↓
┌─────────────────────────────────────────────────────────────┐
│ ChainMemory L1 — Chain ID 202604 │
│ - Geth PoA Clique, 3 validators │
│ - Memory contract + daily checkpoint anchoring │
│ - Project State anchoring (public verification) │
└─────────────────────────────────────────────────────────────┘
商标
CHAINMEMORY 是在阿根廷注册的商标(INPI,第 42 类, 决议 3932170),由项目创始人持有。MIT 许可证适用于代码,不适用于 ChainMemory 名称或徽标。
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。