关于 @saihm/mcp-server-pro
@saihm/mcp-server-pro 为 AI 助手提供可跨会话、模型和厂商使用的持久记忆。记忆离开设备前会加密,并可选择在本地保留未加密副本以便快速调取。
主要功能
- 01记忆可跨会话和 AI 客户端使用
- 02记忆离开设备前加密
- 03可选本地副本以加快调取
- 04分享、撤销分享或永久删除记忆
- 05由客户端启动的本地 MCP 服务
适用场景
- 01在后续助手会话中调取信息
- 02在不同 AI 客户端间沿用同一记忆
- 03与其他 Agent 分享记忆并在之后撤销
MCP 相关
它作为由 AI 客户端启动的本地 MCP 服务运行。README 提供多个 MCP 客户端的配置方式,并说明服务通过端点 URL 连接 SAIHM。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
npx -y @saihm/mcp-server-proSAIHM_ENDPOINT_URLSAIHM operator endpoint. Optional: defaults to the hosted service at https://saihm.net/mcp.SAIHM_SELF_JOINSelf-join is ON by default: the saihm_join tool creates a non-custodial identity on this device and starts activating its free memory, which needs one browser sign-in; no master secret is needed. Set to '0' to suppress the tool.SAIHM_MASTER_SECRET_FILE密钥Path to a mode-600 file holding a 64+ hex-char master secret. Only needed if you opt out of self-join, are restoring an existing identity, or keep your key file outside SAIHM_HOME. Never transmitted.SAIHM_IDENTITY密钥An identity token written by export-identity: brings an existing SAIHM identity to this machine or a hosted agent environment without copying a key file. Set together with SAIHM_IDENTITY_PASSPHRASE; leave both unset to use this machine's own identity.SAIHM_IDENTITY_PASSPHRASE密钥The passphrase export-identity generated for SAIHM_IDENTITY. The two together are the identity: store it as a secret.SAIHM_TIERThe plan this identity onboards with (FREE, PRO, PRO_FAST, ENTERPRISE, ENTERPRISE_FAST). Defaults to FREE while self-join is on (the default); set it for a paid plan, and with SAIHM_SELF_JOIN=0 for every plan, FREE included. An export-identity token carries its own, which a non-empty value here overrides.SAIHM_PAYMENT_METHODThe payment rail of a paid plan, e.g. stripe. Required for a paid SAIHM_TIER unless an export-identity token carries it.SAIHM_EPHEMERAL_HOMESet it (e.g. 1) where the home directory is discarded at session end, or is a CI runner's home that later jobs can reach: the join then refuses to create a key, and SAIHM keeps no recall copy and no sign-in there. A copy or sign-in already written there stays until you delete it: the recall.* and session.* files in SAIHM_HOME (~/.saihm by default). 0 declares a home that is kept and that only you use, and overrides the host's own signal. Unset: detected where the host or CI runner says so (the REFERENCE lists the markers).SAIHM_HOMEBase dir for the self-join identity file ($SAIHM_HOME/free-identity.key, mode 600). Defaults to ~/.saihm. Give a full path: a relative one (a JSON config does not expand ~) is refused at start. Also the fallback state directory when SAIHM_STATE_DIR is unset.本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
9收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| content | string | 是 | 要记住的信息 |
| cellId | string | 否 | 要更新的现有单元 ID(十六进制);省略则创建新单元 |
详细介绍
SAIHM — AI Agent 的记忆
可移植的 AI Agent 记忆。 助手会记住重要的事情——跨会话、跨模型、跨供应商。与他人的 Agent 分享记忆,之后取回,或将其彻底删除。
![]() | ![]() |
| ▶ SAIHM 简短概览 6 分钟 | ▶ SAIHM 详细概览 30 分钟 |
喜欢这些视频吗? 请为视频点赞,订阅 SAIHM 频道,并点击铃铛 🔔 开启通知,以便及时了解新视频和更新。
更喜欢阅读? SAIHM 手册(PDF)是一本面向决策者的 SAIHM 和 SHM 指南。
AI 助手会在会话结束时忘记一切。SAIHM 为你的助手提供不会消失的记忆——这些记忆会随你迁移到其他助手、其他模型,或其他公司的产品中。
在离开你的设备前加密。 没有其他人能读取你的记忆——无论是存储服务还是 SAIHM 都不行。无需开启任何功能。按照标准设置,将密钥保存在文件中时,SAIHM 还会在你的设备上保留一份未加密的记忆副本,以便快速回忆。只有你的账户能读取它,而且一项设置就能将其关闭。
免费开始 — 只需一条命令
npx -y @saihm/mcp-server-pro free-join
无需银行卡,也无需钱包。你需要一个浏览器和一个 GitHub 账号,只需登录一次,以便快速确认你是真人:
- 命令会在这台机器上创建你的密钥,并显示一个链接和一组简短代码。首次运行时会下载软件包,在出现任何内容之前可能需要一分钟。
- 打开链接,登录 GitHub,输入代码并批准。
- 命令会自动完成,并显示密钥的保存位置。
然后将 SAIHM 添加到你的 AI 客户端,重启客户端,并说 “Recall my SAIHM memories.” 就可以开始使用了。
没有 GitHub 账号? 请改为从 https://saihm.net/free 开始:你可以使用 Google 或 Microsoft 登录,页面会提供密钥以及连接助手的步骤。按照步骤操作,然后说 “Recall my SAIHM memories.” 请妥善保管密钥:它是访问你记忆的唯一密钥。你的密钥已激活,因此请跳过 “Join SAIHM”:你无需加入,重复执行也不会生成新密钥。
希望让助手代为设置? 先在 AI 客户端中安装 SAIHM:对于 Claude Code,请使用 Claude Code 下的一条命令;其他客户端见下文。重启客户端,然后对助手说 “Join SAIHM”。助手会询问你是否已有 SAIHM 身份,随后运行相同的设置流程,并提供相同的链接和代码供你批准。
如果加入流程中断, 请在同一台机器上重新加入:流程会复用已创建的密钥,因此你的身份保持不变。要取消加入,请停止流程并不要输入代码;代码会自行过期。无论如何,都请保留密钥文件。 加入流程详解。
将 SAIHM 添加到你的 AI 客户端
以下针对 Claude Code、Gemini CLI 和 OpenAI Agents SDK 的配置标注为已测试(已检查哪些客户端);其他配置则根据各供应商自己的文档编写。供应商可自行更改任何配置。
SAIHM 在你的机器上作为本地 MCP 服务运行,由 AI 客户端通过 npx 启动,因此你需要 Node.js 20.19 或更高版本。该软件包托管在 npm 上,名称为
@saihm/mcp-server-pro,官方 MCP Registry 中列出的名称为
io.github.SAIHM-Admin/saihm-mcp-server-pro。
找到你的客户端,添加对应的配置块,然后重启客户端。请注意以下三点:
- 确保文件有效。 末尾多出的逗号,或从电子邮件或网页复制来的不间断空格,都会导致 JSON 设置文件无效。请先粘贴到纯文本编辑器中。
- 保留启动设置。 首次启动时会下载软件包。如果配置块设置了较长的启动时间,请保留,以便工具首次尝试就能显示。
- 先下载一次。 在终端中运行
npx -y @saihm/mcp-server-pro --version。此命令会下载软件包、显示其版本,然后退出,因此客户端首次启动会更快。
每个配置块都遵循相应客户端的文档。每次发布前,都会在 Claude Code、Gemini CLI 和 OpenAI Agents SDK 中使用这些配置块启动服务,以确认连接正常。各客户端的注意事项详见参考文档。
要在这台电脑上添加另一个 AI 客户端? 新客户端会自动使用 ~/.saihm 中已有的密钥,因此无需再次加入:添加配置块、重启客户端,然后说 “Recall my SAIHM memories.” 请为它设置与首个客户端相同的配置:
- 密钥位于其他文件夹或文件中: 在其配置块中设置相同的
SAIHM_HOME,或相同的SAIHM_MASTER_SECRET_FILE。 - 付费套餐: 无论密钥位于何处,包括
~/.saihm,都请在其配置块中添加SAIHM_TIER和SAIHM_PAYMENT_METHOD。如果不添加,新客户端会以免费套餐登录。
Claude Code(Anthropic)
运行一条命令,即可为所有项目添加 SAIHM:
claude mcp add --env SAIHM_ENDPOINT_URL=https://saihm.net/mcp --transport stdio --scope user saihm -- npx -y @saihm/mcp-server-pro
如果首次启动后没有显示工具,请给服务更多时间:
MCP_TIMEOUT=60000 claude,或者在终端中运行一次 npx -y @saihm/mcp-server-pro --version,然后
重新启动 Claude Code。运行 claude mcp list 可查看是否已连接。有关网页端的 Claude
Code,请参阅托管 Agent 环境。
Claude Desktop(Anthropic)
打开 Settings > Developer > Edit Config,在 mcpServers 中添加
"saihm" 条目,然后退出并重新打开 Claude Desktop:
{
"mcpServers": {
"saihm": {
"command": "npx",
"args": ["-y", "@saihm/mcp-server-pro"],
"env": { "SAIHM_ENDPOINT_URL": "https://saihm.net/mcp" }
}
}
}
Claude Desktop 会使用你计算机上安装的 Node.js 启动服务,因此
请先安装 Node.js。如果首次没有显示工具,请在终端中运行
npx -y @saihm/mcp-server-pro --version,然后退出并重新打开 Claude Desktop。
Codex CLI(OpenAI)
将以下内容添加到 ~/.codex/config.toml,或项目的 .codex/config.toml:
[mcp_servers.saihm]
command = "npx"
args = ["-y", "@saihm/mcp-server-pro"]
env = { SAIHM_ENDPOINT_URL = "https://saihm.net/mcp" }
startup_timeout_sec = 60
运行 codex mcp list 检查,或在 Codex 中运行 /mcp。
OpenAI Agents SDK(Python)
import asyncio
from agents import Agent, Runner
from agents.mcp import MCPServerStdio
async def main():
async with MCPServerStdio(
name="saihm",
params={
"command": "npx",
"args": ["-y", "@saihm/mcp-server-pro"],
"env": {"SAIHM_ENDPOINT_URL": "https://saihm.net/mcp"},
},
client_session_timeout_seconds=60,
) as saihm:
agent = Agent(name="Assistant", mcp_servers=[saihm])
result = await Runner.run(agent, "Recall my SAIHM memories.")
print(result.final_output)
asyncio.run(main())
60 秒超时可为首次 npx 下载留出完成时间。通过环境变量传递机密信息,
切勿将其作为字面值写入代码。
Gemini CLI(Google)
将以下内容添加到 ~/.gemini/settings.json(所有项目),或 .gemini/settings.json(单个
项目):
{
"mcpServers": {
"saihm": {
"command": "npx",
"args": ["-y", "@saihm/mcp-server-pro"],
"env": { "SAIHM_ENDPOINT_URL": "https://saihm.net/mcp" }
}
}
}
或者安装 Gemini CLI 扩展,其中包含相同的条目:
gemini extensions install https://github.com/SAIHM-Admin/saihm-mcp-server-pro。
请在你信任的文件夹中运行 Gemini CLI,因为它只会在该文件夹中启动本地服务。运行
gemini mcp list 检查,或在 Gemini CLI 中运行 /mcp。
自 2026-06-18 起,Google 不再为个人 Google 账号提供 Gemini CLI 服务: 使用此类账号登录会显示“This client is no longer supported for Gemini Code Assist for individuals”。截至 2026 年 10 月,Gemini CLI 仍可使用 Gemini API 密钥, 或 Gemini Code Assist Standard 或 Enterprise 许可证。
Antigravity CLI(Google)
将以下内容添加到 ~/.gemini/config/mcp_config.json(所有项目),或项目中的 .agents/mcp_config.json:
{
"mcpServers": {
"saihm": {
"command": "npx",
"args": ["-y", "@saihm/mcp-server-pro"],
"env": { "SAIHM_ENDPOINT_URL": "https://saihm.net/mcp" }
}
}
}
在 Antigravity CLI 中输入 /mcp,查看是否已连接。如果首次没有显示工具,
请在终端中运行 npx -y @saihm/mcp-server-pro --version,然后在其中重新加载服务。
Grok Build(xAI)
将以下内容添加到 ~/.grok/config.toml,或项目的 .grok/config.toml:
[mcp_servers.saihm]
command = "npx"
args = ["-y", "@saihm/mcp-server-pro"]
env = { SAIHM_ENDPOINT_URL = "https://saihm.net/mcp" }
startup_timeout_sec = 60
Grok Build 也会读取 ~/.claude.json 或项目 .mcp.json 中已有的 saihm 条目,
因此,如果你已为其他客户端添加该条目,可能无需执行此步骤。运行 grok mcp list 检查,
或运行 grok mcp doctor saihm。
GitHub Copilot in VS Code(Microsoft)
将以下内容添加到工作区的 .vscode/mcp.json,或添加到你的用户 mcp.json(运行 MCP:
Open User Configuration)。VS Code 在这里使用 servers,而不是 mcpServers:
{
"servers": {
"saihm": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@saihm/mcp-server-pro"],
"env": { "SAIHM_ENDPOINT_URL": "https://saihm.net/mcp" }
}
}
}
或者在终端中将其添加到你的用户配置文件(bash、zsh 或 Command Prompt):
code --add-mcp "{\"name\":\"saihm\",\"command\":\"npx\",\"args\":[\"-y\",\"@saihm/mcp-server-pro\"],\"env\":{\"SAIHM_ENDPOINT_URL\":\"https://saihm.net/mcp\"}}"
MCP: List Servers 会显示服务,其 Show Output 操作会显示日志。
如果首次没有显示工具,请在终端中运行 npx -y @saihm/mcp-server-pro --version,
然后从 MCP: List Servers 重启服务。
有关 GitHub Copilot 云 Agent,请参阅
托管 Agent 环境。
GitHub Copilot 企业版(Microsoft)
如果贵公司会决定 GitHub Copilot 可以运行哪些 MCP 服务,企业所有者可以允许使用 SAIHM:
-
如果贵公司维护 MCP 允许列表,请按照现有条目的格式添加 SAIHM,因为如果列表中包含命令条目,Copilot 可能会要求每个本地服务都与其中某一条匹配。
-
如果列表中包含命令条目,请添加一条,使用本 README 设置代码块中的命令:
{ "serverCommand": ["npx", "-y", "@saihm/mcp-server-pro"] }VS Code 的 MCP 服务库会安装固定到当前版本且不带
-y的 SAIHM,例如["npx", "@saihm/[email protected]"]。Copilot 会精确匹配命令和每个参数,因此请列出用户会使用的每种格式。 -
如果列表中不包含命令条目,请添加
{ "serverName": "saihm" },并让用户使用本 README 中的设置代码块添加 SAIHM,这些代码块会为它指定该名称。从 VS Code 服务库安装的副本名称不同,因此无法与此条目匹配。
-
-
确保为企业或应使用 SAIHM 的组织启用了 MCP servers in Copilot 策略。
如果贵公司将 MCP 服务限制为只能使用注册表中的服务,SAIHM 在官方 MCP Registry 中的 ID 是 io.github.SAIHM-Admin/saihm-mcp-server-pro。GitHub 的企业 MCP 允许列表指南介绍了其余内容,包括如何匹配条目,以及更改如何传达给用户。
按照标准设置使用密钥文件时,SAIHM 会在每位用户的设备上保留其记忆的未加密副本,以便快速检索;只有该用户的账户可以读取。如果用户不想保留副本,可以按照工作原理中的说明将其关闭;允许列表无法代替用户执行此操作。
Cline
在 Cline MCP 设置中现有的 mcpServers 对象内添加 "saihm" 条目。在编辑器中打开 Cline 面板,选择 MCP Servers 图标,然后选择 Configure > Configure MCP Servers。Cline CLI 会读取 ~/.cline/data/settings/cline_mcp_settings.json,或者读取 CLINE_MCP_SETTINGS_PATH 指定的文件。
{
"mcpServers": {
"saihm": {
"command": "npx",
"args": ["-y", "@saihm/mcp-server-pro"],
"env": { "SAIHM_ENDPOINT_URL": "https://saihm.net/mcp" },
"timeout": 60
}
}
}
在 Cline 中,timeout 的单位是秒:请保留该设置,以便首次下载 npx 有足够的时间完成。保存后,如果工具没有显示,请从 Cline 的 MCP 设置中重启服务;然后启动新的 Cline CLI 会话,因为它会在启动时读取该文件。如果工具仍未显示,请在终端中运行一次 npx -y @saihm/mcp-server-pro --version:该命令会下载软件包、显示其版本,然后退出。接着再次重启服务。
其他 MCP 客户端
对于其他通过 mcpServers 代码块运行本地 MCP 服务的客户端,例如 Cursor 或 Windsurf,请在现有的 mcpServers 对象内添加相同的 "saihm" 条目。如果客户端支持启动时间设置,请按照其文档指定的单位,将启动时间设为约一分钟。如果工具首次没有显示,请在终端中运行 npx -y @saihm/mcp-server-pro --version,然后重启客户端。
Agent 框架
用 Python 构建 Agent?同一套加密记忆可接入主流框架。每个适配器都需要 Node.js 20.19 或更高版本,与此服务相同;并且会在你的进程内加密,因此 Python 永远不会持有密钥。
| 框架 | 功能 | 安装 |
|---|---|---|
| LangGraph | 为你的图提供长期记忆存储 | pip install saihm-langgraph (仓库) |
| CrewAI | 整个团队共享的一份记忆 | pip install saihm-crewai (仓库) |
| LangChain | 由你掌控的聊天记录 | pip install "saihm-adapters[langchain]" |
| LlamaIndex | 聊天记忆,以及用于 RAG 的检索器 | pip install "saihm-adapters[llamaindex]" 和 [rag] |
| AutoGen | 由你的 Agent 掌控的记忆 | pip install "saihm-adapters[autogen]" |
saihm-adapters 将它们整合在一起,并提供实时演示。
可以这样说
用日常语言与助手交流,并点名 SAIHM,它就会选择相应的工具。每次都要点名 SAIHM:有些助手(包括 Claude Code)会保留自己的笔记,而没有点名 SAIHM 的请求可能会被记到那里。以下是一些团队可以使用的示例:
充分使用 SAIHM,以最大限度地节省 token。按主题回忆,而不是重新阅读文件;每做出一项决定,就把它保存下来。
只回忆我在 SAIHM 中关于计费服务的记忆,然后在我们编写任何代码之前,用五条要点告诉我其中尚未解决的决定和后续步骤。
在 SAIHM 中将以下内容记为决策记录:webhook 重试使用幂等键;由 Dana 于 2026-10-20 决定;如果重复扣款超过 0.1%,则重新评估。
在 SAIHM 中设定一条不变规则:任何 SAIHM 擦除操作前都要问我两次,并且绝不在 SAIHM 中存储密码、密钥或客户个人数据。
结束之前,将我们做了哪些更改、原因以及仍有哪些未解决事项保存为一条 SAIHM 记忆,这样任何持有我的密钥的 Agent 明天都能接手。
与
./identities/qa-agent.json中的 Agent 分享我关于发布操作手册的 SAIHM 记忆,只读权限,直到周五 17:00 UTC。
有客户要求我们删除其数据。找出每一条提及 Acme Corp 的 SAIHM 记忆,逐条展示给我,并在我确认后逐条擦除。
在此 CI 作业中,回忆团队的 SAIHM 记忆“发布规则”;如果变更日志违反其中任何规则,就让作业失败。
分享示例需要你同事的身份记录;一条命令即可创建(参见与同事分享)。CI 示例需要作业自身的身份,按托管 Agent 环境中的说明设置。
更多提示词,以及一个由三个 Agent 角色完成约二十个 Agent 工作量的案例研究,见 SAIHM 手册和 CASE-STUDY.md。
| 工具 | 功能 |
|---|---|
saihm_remember | 在你的机器上加密,然后存储 |
saihm_recall | 获取并在你的机器上解密 |
saihm_forget | 永久擦除。 无法撤销 |
saihm_status | 你的身份、方案和记忆数量 |
saihm_share | 将一条记忆授权给一个 Agent,可选设置到期时间 |
saihm_revoke_share | 撤销该授权 |
每个工具都带有标签,供你的 AI 工具读取,包括哪些工具是只读的、哪个工具会销毁数据——因此,在破坏性操作前会询问“确定吗?”的宿主端知道何时该询问。请参阅完整工具列表。
“忘记”就是真的忘记。 该记忆的密钥会被销毁,因此存储的副本将永久无法读取——无论是你、SAIHM,还是持有其备份的任何人。这是 SAIHM 响应 GDPR 第 17 条擦除请求的方式,也正因如此,操作无法撤销。服务端关于密钥已销毁的记录返回后,响应会确认擦除完成。
你的记忆随密钥而行
你的记忆属于你的密钥,而不是某台电脑——这正是它可移植的原因。 密钥在你的机器上创建,绝不会发送到任何地方,因此只有你能读取自己的记忆。请将密钥文件的副本保存在安全的地方: SAIHM 无法为你再生成一个。设置时会显示文件所在位置;升级到付费套餐后,密钥和所有记忆都会保留。
要使用第二台电脑或托管 Agent? 有三种方式:
-
随时随地使用相同的记忆——在存有你密钥的机器上运行:
npx -y @saihm/mcp-server-pro export-identity这会将两个值保存到一个只有你能读取的文件中:
SAIHM_IDENTITY(你的密钥, 已封装)和SAIHM_IDENTITY_PASSPHRASE(用于解封密钥的口令)。在你希望记忆 随你而行的任何地方,将两者设为环境变量或密钥,然后开始新会话。不要在那里 说 “Join SAIHM”:加入操作会创建一个新的空记忆。这两个值合在一起就是 你的身份:将它们保存在密码管理器中,绝不要放在聊天或代码库里,并删除导出 文件。使用付费套餐时,请先查看导出身份。 -
复制密钥文件——在服务器启动前,将它放到另一台机器上的
~/.saihm/free-identity.key(或将SAIHM_MASTER_SECRET_FILE指向该文件), 使用与第一台机器相同的设置(付费套餐还需设置SAIHM_TIER和SAIHM_PAYMENT_METHOD),然后说 “Recall my SAIHM memories.” -
将工作和个人内容分开——在第二台机器上重新开始,然后通过共享来交流: “Share my SAIHM notes on the launch with the agent in ./identities/work-agent.json until 17:00 UTC.” 共享可以撤销,也可以设置过期 时间,因此两者仍然彼此独立。共享方需要对方的身份记录(按下文所述创建); 读取方只需要共享方的 Agent ID 和记忆的 cellId。
与同事共享
要与同事的 Agent 共享记忆,请向他们索取身份记录。他们只需在存有自己密钥的 机器上运行一条命令即可创建:
npx -y @saihm/mcp-server-pro identity-record qa-agent.json
其中只包含他们的公钥和 Agent ID,因此通过电子邮件或聊天发送是安全的:
其中没有任何内容可以读取、更改或删除他们的记忆。将文件放入你的项目,并在
共享时指定它,例如 “Share my SAIHM memory about the release runbook with
the agent in ./identities/qa-agent.json, read-only, until Friday 17:00 UTC.” 你的
Agent 会将文件交给 SAIHM,由 SAIHM 从中读取记录。使用完整路径最稳妥:相对
路径会以 SAIHM 服务运行所在的文件夹为基准读取。如果文件通过他人可能篡改的
渠道送达,请通过其他方式向同事确认 Agent ID,并在共享时将其提供给你的 Agent:
这样,若文件中指定了不同的 Agent ID,SAIHM 就会拒绝该文件。此记录不是
export-identity 文件:绝不要将后者发送给任何人。
要读取你共享的内容,同事的 Agent 只需要你的 Agent ID 和记忆的 cellId(共享时
会一并提供)。请亲自将 Agent ID 发给他们:identity-record 命令会将其打印
出来。SAIHM 会在打开记忆前,根据该 Agent ID 验证记忆;无论同事使用哪个 AI
客户端读取,SAIHM 都会在文本和结构化结果中将其标记为属于另一 Agent 的记忆,
并标注你的 Agent ID,而绝不会标记为属于他们的记忆。
托管式 Agent 环境
托管式 Agent 会话通常从一台全新的机器启动,并在结束时丢弃其主目录,因此在那里创建的密钥也会随之丢失。请改为导入你的身份:在环境自身的设置中设置两个 export-identity 值——绝不要在聊天中设置——然后启动新会话,因为环境会在会话启动时读取变量。服务在会话中本地运行,并需要能够访问 saihm.net 和用于 npx 的 npm。以下步骤遵循各托管平台自身的文档;参考文档介绍了代理和更多细节。CI 作业就是这样一种环境:将专属密钥文件作为机密文件提供,并将其命名为 SAIHM_MASTER_SECRET_FILE,或者将两个值设为作业机密。在 SAIHM 无法识别的运行器上(参考文档列出了它能识别的运行器),也要设置 SAIHM_EPHEMERAL_HOME=1,这样 SAIHM 就不会保留你的记忆副本,也不会保留登录信息。运行器上已写入的副本或登录信息会一直保留,直到你将其删除:~/.saihm(或你的 SAIHM_HOME)中的 recall. 和 session. 文件。
-
Claude Code on the web — 在环境的 Environment variables 下添加这两个值。任何使用该环境的人都能读取它们,因此请使用专供你本人使用的环境,并仅用于你信任的仓库。选择 Custom 网络访问,添加
saihm.net,并勾选 Also include default list of common package managers,这样npx仍可访问 npm。然后通过仓库的.mcp.json传入这些值:{ "mcpServers": { "saihm": { "command": "npx", "args": ["-y", "@saihm/mcp-server-pro"], "env": { "SAIHM_ENDPOINT_URL": "https://saihm.net/mcp", "SAIHM_IDENTITY": "${SAIHM_IDENTITY:-}", "SAIHM_IDENTITY_PASSPHRASE": "${SAIHM_IDENTITY_PASSPHRASE:-}", "SAIHM_TIER": "${SAIHM_TIER:-}", "SAIHM_PAYMENT_METHOD": "${SAIHM_PAYMENT_METHOD:-}", "CLAUDE_CODE_REMOTE": "${CLAUDE_CODE_REMOTE:-}" } } } }同一文件在你自己的机器上仍然有效。绝不要将
SAIHM_MASTER_SECRET_FILE或SAIHM_MASTER_SECRET_HEX添加到其中,否则会提交你的密钥或与身份冲突。如果工具没有显示,请在会话中运行claude mcp list,并在环境变量中设置MCP_TIMEOUT=60000,以便服务有更长的启动时间。 -
GitHub Copilot cloud agent — 将这些值存为 Agent 机密(仓库的 Settings → Secrets and variables → Agents),名称分别为
COPILOT_MCP_SAIHM_IDENTITY和COPILOT_MCP_SAIHM_IDENTITY_PASSPHRASE。服务会与 Agent 执行的每条命令一同运行,因此仅在代码可信的仓库中使用。将机密映射到仓库的 MCP 配置中(Settings → Copilot → MCP servers):{ "mcpServers": { "saihm": { "type": "local", "command": "npx", "args": ["-y", "@saihm/mcp-server-pro"], "tools": ["saihm_recall", "saihm_remember", "saihm_status"], "env": { "SAIHM_ENDPOINT_URL": "https://saihm.net/mcp", "SAIHM_IDENTITY": "$COPILOT_MCP_SAIHM_IDENTITY", "SAIHM_IDENTITY_PASSPHRASE": "$COPILOT_MCP_SAIHM_IDENTITY_PASSPHRASE", "SAIHM_EPHEMERAL_HOME": "1" } } } }Copilot 会在不询问的情况下运行列出的工具,因此此列表不包含
saihm_forget和共享工具。默认情况下,Copilot 代码审查可以在任何拉取请求中调用只读工具,因此你的记忆可能会出现在审查评论中:如果你不希望如此,请关闭 Allow Copilot to use MCP tools when reviewing pull requests。 -
其他环境 — 任何能够运行本地 MCP 服务、允许服务读取这两个值并访问
saihm.net和registry.npmjs.org的托管平台都应该适用。将这些值放在托管平台自身的机密或环境设置中,范围限定为仅你本人可用,并放在仅供你使用的环境中:Agent 以及它运行的每条命令都可能能够读取这些值。如果其主目录不会持久保留,也要在那里添加SAIHM_EPHEMERAL_HOME=1。该托管平台上已写入的副本或登录信息会一直保留,直到你将其删除:~/.saihm(或你的SAIHM_HOME)中的recall.和session.文件。只能连接远程 MCP 服务的托管平台无法运行此软件包。
如果能判断主目录是临时的,或是后续作业可以访问的 CI 运行器主目录,join 就会拒绝在那里创建密钥:请在自己的电脑上执行 join,再导入你的身份。只有在主目录会持久保留且仅供你本人使用的环境中,才设置 SAIHM_EPHEMERAL_HOME=0。
查看运行效果
- 涵盖所有主流模型的实时演示——离线运行,每个约一分钟,无需账户:https://saihm-admin.github.io/saihm-demos/。在 Claude、GPT、DeepSeek、Qwen、Kimi 或 GLM 中存储一条记忆,然后验证你能否将其删除。
- 令牌基准测试——在一个真实的多会话任务中,回忆限定的一组记忆,而不是重新发送整段对话,可减少 62.8%–85.9% 的输入令牌。可直接打开、离线运行且结果可复现: https://github.com/SAIHM-Admin/saihm-token-benchmark。
费用
免费开始。免费层提供固定的一次性写入、读取和分享额度,供你在真实基础设施上试用 SAIHM——不会重置或补充。**无需银行卡,也无需取消任何服务。**额度用完后,你仍可列出并删除记忆;升级后,你已有的所有记忆都会保留。
付费计划按月计费;价格请见定价页面。升级后,你现有的密钥和所有记忆都会保留:
SAIHM_MASTER_SECRET_FILE=$HOME/.saihm/free-identity.key \
SAIHM_TIER=FREE \
npx -y @saihm/mcp-server-pro upgrade PRO
这会打印一个与你的身份关联的结账链接,供你在浏览器中打开;付费后,还会显示需要添加到客户端配置中的两项设置。按照客户端设置所用的格式添加这两项,然后重启客户端。在 JSON env 块中:
"SAIHM_TIER": "PRO",
"SAIHM_PAYMENT_METHOD": "stripe"
在 TOML 配置中(例如 Codex 或 Grok 的配置),放在 env = { ... } 内:
env = { SAIHM_ENDPOINT_URL = "https://saihm.net/mcp", SAIHM_TIER = "PRO", SAIHM_PAYMENT_METHOD = "stripe" }
付费计划需要同时配置两项设置:如果没有 SAIHM_PAYMENT_METHOD(它用于指定要检查的付款渠道),服务仍会启动,但每次记忆调用都会失败并提示需要设置该项。完成后,说 "Show my SAIHM status" 即可查看计划。
| 付款方式 | 位置 | 你的密钥和记忆 | SAIHM_PAYMENT_METHOD |
|---|---|---|---|
| 使用银行卡,为现有密钥付款 | upgrade 命令提供的链接 | 保留 | stripe |
| 使用银行卡或网站支持的其他方式付款 | 加入页面 | 创建具有独立密钥的新身份 | 页面提供的配置中的值 |
| 使用稳定币付款 | 加入页面 | 创建具有独立密钥的新身份 | stablecoin |
现有密钥上的记忆会继续保留在该密钥上,不会转移到新密钥。因此,要升级现有密钥,请使用银行卡付款链接。
如果遇到问题
| 你看到的情况 | 处理方法 |
|---|---|
| 没有出现 SAIHM 工具,也没有任何错误 | 客户端在 npx 完成首次下载前就停止等待了。保留客户端配置块中的启动设置,并检查文件是否为有效 JSON |
| 其他所有工具也都消失了 | 设置文件已不再是有效 JSON:检查是否有多余的逗号,或从复制粘贴中带入的不换行空格 |
| 记忆工具提示加入请求正在等待审批 | 打开加入时提供的链接,登录、输入代码并批准。加入流程随后会自动完成,下一次记忆调用即可正常工作 |
| 记忆调用提示免费加入请求可能仍在等待审批 | 批准你发起的加入请求。或者说 "Join SAIHM":它会复用现有密钥,并显示对应的链接和代码 |
| SAIHM 无法登录:短时间内登录次数过多 | 等待提示中所示的时间,然后重试 |
| 工具已出现,但每次调用都失败 | 这台机器无法连接到端点(除非另有设置,否则为 saihm.net)。在托管环境中,请在网络设置中允许连接该端点 |
| 托管会话反复要求加入 | 该环境中没有你的身份:请参阅托管 Agent 环境 |
| 显示的记忆与预期不同 | 这台机器使用的是自己的密钥,而不是你的密钥 |
代理、删除相关答复及其他内容,请参阅完整故障排除表。
工作原理
你的记忆会先在本机加密,再发送出去;返回后也会在本机解密。SAIHM 会以加密形式存储记忆,以及所需的少量路由信息,并用你的密钥锁定每条记忆的密钥。要擦除某条记忆,就会销毁对应的密钥——因此,已存储记忆会立即且永久地被擦除,而不是仅仅承诺已在某处删除了副本。
- 为后量子安全而设计。 ML-DSA-65 会为每条记忆签名,ML-KEM-768 则保护共享过程。
- 非托管式。 https://saihm.net 上的托管服务提供持久存储,但不会持有任何能解密你记忆的密钥。
- 擦除会同步传递。 每次
forget也会写入通知,因此,任何基于该记忆构建的内容——索引、副本、提取出的事实——也都可以将其删除。 - 在你的设备上快速回忆。 如果你的密钥存储在文件中(标准设置,或由文件
SAIHM_MASTER_SECRET_FILE指定的位置),SAIHM 会在此设备上保存你存储或读取的每条记忆的本地副本,并在首次回忆后保存所有记忆的副本。之后回忆时,只会获取此设备或其他设备上新增或发生变化的内容,因此速度更快、读取次数更少。副本以未加密形式保存在你的设备上的~/.saihm(或你的SAIHM_HOME)中,因此回忆时可以立即使用,并且只有你的用户帐户能读取它。forget也会从副本中移除记忆;其他设备则会在下次成功回忆时将其移除。在此设备上擦除记忆后,又在其他位置重新存储的记忆,可能不会显示在此处的回忆结果中。设备备份会保留制作备份时的副本。从 0.14.3 开始,无论密钥文件存放在哪里,都会保存副本,不再仅限于标准位置。如果主目录是临时目录或会留待后续作业使用,SAIHM 不会保存副本,除非你指定要保存:在托管 Agent 会话中、在其识别的 CI 运行器上(参考文档在SAIHM_EPHEMERAL_HOME下列出了这些运行器),以及设置了SAIHM_EPHEMERAL_HOME=1的任何位置。对于其他运行器,以及主目录会在作业结束后继续保留的位置,也请设置此变量。已写入的副本或登录信息会一直保留,直到你将其删除:即~/.saihm(或你的SAIHM_HOME)中的recall.和session.文件。 - 每台设备登录一次。 使用标准密钥文件(由 join 创建的文件)时,会话会将短期登录信息保存在密钥旁边的文件中,且只有你的用户帐户能读取;此设备上的下一个会话会在登录信息过期前继续使用它。该文件不包含密钥,且仅用于相同的端点、身份、套餐和付款方式。与副本一样,主目录是临时目录或会留待后续作业使用时,不会保存此文件。若要仅将其保留在内存中,请在此设备上每个使用你的密钥运行 SAIHM 的 AI 客户端和应用中,将
SAIHM_SESSION_CACHE设置为0:下次加载密钥时,SAIHM 会删除之前保存的登录信息。 - 如果你愿意,可让所有内容静态加密。 在此设备上每个使用你的密钥运行 SAIHM 的 AI 客户端和应用中,将
SAIHM_RECALL_CACHE设置为0,设置位置应与其SAIHM_ENDPOINT_URL设置相同,写法也相同。然后退出所有客户端和应用,包括所有已打开的会话和窗口,删除~/.saihm(或你的SAIHM_HOME)中名称以recall.开头的文件,再重新启动它们。从此以后,SAIHM 不会保存本地副本,因此所有静态存储的记忆都是密文,每次回忆都会重新获取你的全部记忆。这会更慢,而且如果套餐限制回忆次数(例如免费套餐),会更快耗尽可用次数。之后配置的任何客户端或应用也要添加此设置。如果recall.文件再次出现在那里,就说明某个客户端或应用仍然保存着副本。
技术参考文档介绍了安全模型、加密记忆的存储位置,以及所有设置。
配置
大多数人无需进行任何配置:上面的代码块设置了唯一重要的选项,其余选项都有可用的默认值。所有设置均列于参考文档。
面向开发者
在你自己的 Node.js 代码中使用 SAIHM。开发者参考文档介绍了身份记录、关注共享、对你自己的单元格所做的更改、热启动、结构化工具结果和错误。
npm install @saihm/mcp-server-pro
import { SaihmProClient } from '@saihm/mcp-server-pro';
// Boot from env: SAIHM_ENDPOINT_URL, SAIHM_MASTER_SECRET_FILE (or _HEX)
// self-onboard (recommended): + SAIHM_PAYMENT_METHOD + SAIHM_TIER (omit SAIHM_AUTH_HEADER)
// static token (advanced): + SAIHM_AUTH_HEADER="Bearer <JWT>"
const saihm = SaihmProClient.bootFromEnv();
// Store — encrypted before it leaves the process.
const { cellId } = await saihm.remember('remember this');
// Recall — decrypted after it returns.
const cell = await saihm.recallOne(cellId);
console.log(cell?.plaintext); // 'remember this'
// Recall everything (client-side keyword filter; the endpoint has no plaintext to filter on).
const matches = await saihm.recall('this');
// Update an existing cell (a fresh monotonic sequence is issued automatically). When the endpoint reports
// shares of the cell left on the previous version, `shares` in the result reports their re-issue.
await saihm.remember('new contents', { cellId });
// Forget — crypto-shred.
await saihm.forget(cellId);
// Share a cell with another agent, end-to-end authenticated. Pin the grantee's agentIdHash
// out-of-band; the library rejects directory key-substitution.
await saihm.share({
cellId,
recipientRecord, // the grantee's published identity record (hex fields), as `identity-record` writes it
recipientPinnedAgentIdHashHex, // pinned out-of-band
expiryEpoch, // optional whole HOURS since the UNIX epoch (498192n = 2026-11-01 00:00 UTC); omit or null for no time bound
});
await saihm.revokeShare(cellId, recipientPinnedAgentIdHashHex);
// Read a cell another agent shared TO you (the recipient side of `share`). Pin the
// sharer's agentIdHash out-of-band; the library checks the key that comes with the cell
// against it, verifies the sharer's signature and returns null when there is no live
// grant (e.g. revoked, or the sharer crypto-shredded it).
const shared = await saihm.recallShared({
sharerPinnedAgentIdHashHex, // the sharer's agentIdHash, as they gave it to you
cellId,
}); // optional: sharerRecord, the sharer's identity record (hex), which must match the pin
console.log(shared?.plaintext);
// Operator-observable metadata only (no plaintext).
const status = await saihm.status();
SHM — Super-Human Memory
SAIHM 让记忆安全可靠。SHM(Super-Human Memory)让记忆高效运作:它是构建在 SAIHM 之上的一层,负责整理记忆,并在 Agent 提问之前,按含义调取相关内容。它将任务彼此分开,并保持上下文窗口整洁,因此,一个 Agent 就能承担如今需要多个 Agent 才能完成的工作;而只需保存一次的更正,每次都能被调取。
SHM 在你这一侧运行,紧邻你的 Agent,并基于 Agent 可读取的记忆工作,因此这些操作都不需要将明文数据传出本地。它通过混合检索和可选的本地重排序器为记忆排序,只在你设定的预算范围内调取当前任务所需的内容,并使用你持有的密钥加密存储的内容。在 SAIHM 中删除记忆后,SHM 会将其从索引、缓存以及所有基于该记忆生成的内容中移除。
npm install @saihm/shm
SHM 需要 Node.js 20.20 或更高版本。
SHM 与此客户端如何配合。 SHM 通过此 MCP 服务运行,版本需为 0.13.0 或更高,以便 SHM 与你的 SAIHM 记忆保持同步:
- 更改馈送会告知 SHM 你的哪些记忆已写入,SHM 随后会重新读取它们。
- 删除馈送会告知 SHM 哪些记忆已删除,SHM 随后会将其及所有基于这些记忆生成的内容一并移除。
- 共享状态会告知 SHM 其他 Agent 与你共享了哪些记忆,以及哪些共享已结束。
- 结构化工具结果会以 SHM 在采取行动前能够检查的形式提供每个答案。
- 热启动可让 SHM 保存加密的状态快照,并在新会话或其他设备上从上次中断处继续。
参考文档列出了 SHM 使用的工具和文件。
SAIHM 手册涵盖两方面内容:第 4 章介绍 SHM 带来的功能,第 5 章介绍其调节项和方案,第 9 章说明为何要搭配使用 SAIHM 和 SHM。
问题咨询
通过 WhatsApp 向 SAIHM 发送消息,账号为 @saihm.inc;在 WhatsApp 上的 SAIHM 社区群组中提问;或通过 saihm.net/contact 联系。SAIHM 工作人员绝不会索要你的密钥文件;请勿将其发送给任何人。
支持 SAIHM
如果 SAIHM 对你有帮助,可以通过以下方式助力它让更多人受益:
- 在 GitHub 上为项目加星。 星标可以帮助其他开发者找到 SAIHM。
- 分享给他人:同事、团队成员,或任何经常遇到助手遗忘问题的人。
- 在 X 上关注 @SAIHMemory,获取新闻和更新。
- 通过 GitHub Sponsors 赞助,可以按月赞助,也可以一次性赞助。
- **在 YouTube 上关注动态:**为视频点赞,订阅频道,并点击铃铛 🔔 开启通知,以接收新视频和更新。
折扣码
准备升级?在费用部分运行升级命令,然后在结账时于优惠码框中输入以下任一代码:
| 代码 | 优惠 |
|---|---|
SAIHM-90-OFF | 新客户首次付款可享 90% 折扣 |
SAIHM-75-OFF | 首次付款可享 75% 折扣 |
SAIHM-50-OFF | 连续四个月可享 50% 折扣 |
SAIHM-25-OFF | 连续六个月可享 25% 折扣 |
每次结账限用一张优惠码,优惠活动结束前有效。
许可证
Apache-2.0 © SAIHM
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。

