mcpField
@
@saihm/mcp-server-pro

@saihm/mcp-server-pro

本地服务
saihm.coti.global记忆与知识11 天前更新

关于 @saihm/mcp-server-pro

@saihm/mcp-server-pro 为 AI 助手提供可跨会话、模型和厂商使用的持久记忆。记忆离开设备前会加密,并可选择在本地保留未加密副本以便快速调取。

主要功能

  1. 01记忆可跨会话和 AI 客户端使用
  2. 02记忆离开设备前加密
  3. 03可选本地副本以加快调取
  4. 04分享、撤销分享或永久删除记忆
  5. 05由客户端启动的本地 MCP 服务

适用场景

  1. 01在后续助手会话中调取信息
  2. 02在不同 AI 客户端间沿用同一记忆
  3. 03与其他 Agent 分享记忆并在之后撤销

MCP 相关

它作为由 AI 客户端启动的本地 MCP 服务运行。README 提供多个 MCP 客户端的配置方式,并说明服务通过端点 URL 连接 SAIHM。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"saihm-admin-saihm-mcp-server-pro": {
"command": "npx",
"args": [
"-y",
"@saihm/mcp-server-pro"
],
"env": {
"SAIHM_ENDPOINT_URL": "<SAIHM_ENDPOINT_URL>",
"SAIHM_SELF_JOIN": "<SAIHM_SELF_JOIN>",
"SAIHM_MASTER_SECRET_FILE": "<SAIHM_MASTER_SECRET_FILE>",
"SAIHM_IDENTITY": "<SAIHM_IDENTITY>",
"SAIHM_IDENTITY_PASSPHRASE": "<SAIHM_IDENTITY_PASSPHRASE>",
"SAIHM_TIER": "<SAIHM_TIER>",
"SAIHM_PAYMENT_METHOD": "<SAIHM_PAYMENT_METHOD>",
"SAIHM_EPHEMERAL_HOME": "<SAIHM_EPHEMERAL_HOME>",
"SAIHM_HOME": "<SAIHM_HOME>"
}
}
}
}
启动命令npx -y @saihm/mcp-server-pro
需要配置的环境变量
SAIHM_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+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@saihm/mcp-server-pro0.14.3

工具

9

收录的工具列表 · 更新于 2 周前

参数类型必填说明
contentstring是要记住的信息
cellIdstring否要更新的现有单元 ID(十六进制);省略则创建新单元

详细介绍

SAIHM — AI Agent 的记忆

可移植的 AI Agent 记忆。 助手会记住重要的事情——跨会话、跨模型、跨供应商。与他人的 Agent 分享记忆,之后取回,或将其彻底删除。

npm 版本 许可证 在 GitHub 上 Star 赞助 SAIHM 在 YouTube 上订阅 在 X 上关注

在 YouTube 上观看:SAIHM 简短概览,6 分钟在 YouTube 上观看:SAIHM 详细概览,30 分钟
▶ SAIHM 简短概览
6 分钟
▶ SAIHM 详细概览
30 分钟

喜欢这些视频吗? 请为视频点赞,订阅 SAIHM 频道,并点击铃铛 🔔 开启通知,以便及时了解新视频和更新。

更喜欢阅读? SAIHM 手册(PDF)是一本面向决策者的 SAIHM 和 SHM 指南。

AI 助手会在会话结束时忘记一切。SAIHM 为你的助手提供不会消失的记忆——这些记忆会随你迁移到其他助手、其他模型,或其他公司的产品中。

在离开你的设备前加密。 没有其他人能读取你的记忆——无论是存储服务还是 SAIHM 都不行。无需开启任何功能。按照标准设置,将密钥保存在文件中时,SAIHM 还会在你的设备上保留一份未加密的记忆副本,以便快速回忆。只有你的账户能读取它,而且一项设置就能将其关闭。

免费开始 — 只需一条命令

npx -y @saihm/mcp-server-pro free-join

无需银行卡,也无需钱包。你需要一个浏览器和一个 GitHub 账号,只需登录一次,以便快速确认你是真人:

  1. 命令会在这台机器上创建你的密钥,并显示一个链接和一组简短代码。首次运行时会下载软件包,在出现任何内容之前可能需要一分钟。
  2. 打开链接,登录 GitHub,输入代码并批准。
  3. 命令会自动完成,并显示密钥的保存位置。

然后将 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:

  1. 如果贵公司维护 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 服务库安装的副本名称不同,因此无法与此条目匹配。

  2. 确保为企业或应使用 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

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。