关于 memry
memry 为 AI 编码 Agent 提供持久记忆,让决策和发现跨会话、跨项目保留。其 CLI 可配置受支持的 Agent,并在会话开始时加载项目记忆。
主要功能
- 01跨会话保存记忆
- 02保存并搜索 Agent 记忆
- 03会话开始时加载近期项目上下文
- 04通过 CLI 配置受支持的 Agent
- 05将多个仓库归入同一项目
适用场景
- 01恢复编码工作并沿用先前决策
- 02查找已保存的 Bug 修复和发现
- 03在相关仓库间共享项目上下文
MCP 相关
memry setup 会为选定的 Agent 注册 memry MCP 服务。该服务提供保存和搜索记忆的工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
memry
memry 为你的 AI 编码 Agent 提供可持久保存的记忆,让记忆能够在不同会话和项目间延续。在某个会话中保存的决策、Bug 修复和发现,在下一个会话中也能使用,因此你不必再次解释相同的上下文。
要求
- macOS、Linux 或 Windows(amd64 或 arm64)
- 至少一个受支持的 Agent。对于 Claude Code,其 CLI(
claude)必须位于你的PATH中。
安装
使用 Homebrew:
brew install mrtheroi/tap/memry
memry setup
其他安装 memry 的方式。它是单个二进制文件,无需其他依赖:
-
使用 Go:
go install github.com/mrtheroi/memry-cli/cmd/memry@latest。二进制文件会放在$(go env GOPATH)/bin中,该目录必须位于你的PATH中。 -
从发布版本安装:下载适用于你系统的
memry_<version>_<os>_<arch>.tar.gz压缩包,对照checksums.txt验证后,将其中的memry二进制文件放到你的PATH中,例如:tar -xzf memry_1.0.0_darwin_arm64.tar.gz memry sudo install -m 0755 memry /usr/local/bin/memry
在 Windows 上,请参阅 Windows。
你的 Agent 会从 memry 的安装路径运行它,因此,除非使用 Homebrew,否则请勿移动该二进制文件;若已移动,请重新运行 memry setup。
memry setup 会询问你的电子邮箱,向你发送一个 6 位登录码,然后询问你使用哪些 Agent,并将 memry 连接到你选择的 Agent(会预先选中在你的设备上找到的 Agent;按空格键选择,按回车键确认)。之后,在你的 Agent 中启动一个新会话即可使用 memry。
若要在不显示提示的情况下选择 Agent(例如在脚本中),请传入它们的键:
memry setup --agents=claude-code,codex
再次运行 memry setup 可更改选择;memry 会从你取消选择的 Agent 中移除。
Claude Code 插件
此仓库同时也是一个 Claude Code 插件市场。其 memry 插件添加了 /memry:setup 技能,可引导你安装 CLI 并运行 memry setup。
在终端中运行:
claude plugin marketplace add mrtheroi/memry-cli
claude plugin install memry@memry
或者在 Claude Code 会话中运行:
/plugin marketplace add mrtheroi/memry-cli
/plugin install memry@memry
在 Claude Code 2.1.275 或更高版本中,一条会话内命令即可完成这两步:
/plugin install memry --marketplace mrtheroi/memry-cli。
该插件本身不会注册 MCP 服务;注册操作由 memry setup 完成,因此 memry 不会被重复连接。
可自托管
使用自托管的 memry 服务时,管理员会为你创建令牌,而不是通过电子邮箱登录。连接方式如下:
memry setup --url https://memry.company.internal --token
使用 --token 时必须同时指定 --url,因此令牌绝不会发送到公共服务。Setup 会在不显示令牌的情况下提示你输入,先向服务验证令牌,再保存;之后会像往常一样询问你使用哪些 Agent。对于脚本,可设置 MEMRY_TOKEN 环境变量:使用 --token 但不提供值时,setup 会使用该变量中的值而不是显示提示,即使指定了 --no-interaction 也一样,并且令牌不会出现在进程列表中。--token=<token> 也会跳过提示(且优先于 MEMRY_TOKEN),但令牌随后会出现在 shell 历史记录和进程列表中。
MEMRY_TOKEN="$token" memry setup --url https://memry.company.internal --token --no-interaction
只有与 --token 一同使用时才会读取 MEMRY_TOKEN,因此它不会影响电子邮箱登录。
请使用 https:// URL。Setup 会将令牌或登录码发送到服务,且 memry mcp 会在每次请求中发送已保存的令牌,因此,只有在本机地址(localhost、127.x.x.x 地址或 [::1])下才接受纯 http:// URL。对于其他 http:// 服务,setup 会在询问或发送任何内容之前停止,并显示:“拒绝通过纯 HTTP 向 发送凭据。请使用 https:// URL,或传入 --insecure 以允许此操作(例如在可信的局域网中)。”仅在你信任的网络上使用 --insecure:否则凭据会以明文传输。MEMRY_URL 也遵循相同规则。
Windows
使用 WinGet 安装,然后在新的终端中运行设置命令,以便将 memry 命令加入 PATH:
winget install Memry.Memry
memry setup
其他安装方式:
- 使用 Go:
go install github.com/mrtheroi/memry-cli/cmd/memry@latest。二进制文件会放在%GOPATH%\bin(go env GOPATH)中,该目录必须位于PATH中。 - 从发布版本安装:下载
memry_<version>_windows_<arch>.zip(amd64或arm64),使用checksums.txt校验该文件(由 cosign 签名,参见发布流程中的 cosign 命令),然后将其中的memry.exe放到PATH中。
使用 winget upgrade Memry.Memry 更新。要卸载,请运行 memry uninstall,然后运行 winget uninstall memry;如果是手动安装,memry uninstall 会打印要删除的 memry.exe 的路径。
与 macOS 和 Linux 的不同之处:
- 配置文件。
%USERPROFILE%\.config\memry\config.json,仅你的用户可读取。memry 会依次从USERPROFILE、HOME、LOCALAPPDATA上两级目录查找你的主目录;如果都找不到,则会停止并显示“Could not find your home directory; set USERPROFILE or HOME.”(在所有操作系统上,未设置主目录都会报错)。使用--config或MEMRY_CONFIG可将其放到其他位置。 - Claude Code。 设置过程会将 memry 注册为本地
memry mcp服务(claude mcp add --transport stdio --scope user memry -- <memry.exe> mcp),并添加相同的 SessionStart hook。claude.exe和claude.cmd均受支持。 - 该 hook 会按名称运行
memry,因此memry必须位于PATH中。WinGet 会确保这一点;使用go install时,请将%GOPATH%\bin加入PATH。Claude Code 会将自己的PATH传给 hook,因此安装后,请重启用于启动 Claude Code 的终端或编辑器(VS Code、JetBrains);安装前打开的窗口无法找到memry,此时 hook 不会加载任何上下文,也不会报错。如果你使用 CMD 而不是 Git Bash 运行 Claude Code,CMD 会优先搜索当前目录,因此请勿在包含不受信任的memry.exe的文件夹中启动会话。 - 防病毒软件和 SmartScreen。
memry.exe未使用 Authenticode 签名,因此 SmartScreen 或防病毒软件可能会发出警告。要检查下载文件,请按照 CONTRIBUTING.md 中的说明验证已签名的checksums.txt,并比对压缩包的 SHA-256。 - 不支持彩色输出的终端。 在旧版控制台中,Agent 问题会替换为
Agents: <list> (pass --agents to choose).,并保留默认值;使用--agents进行选择。
自定义配置文件
默认情况下,memry 会将你的登录信息保存在 ~/.config/memry/config.json 中。要使用其他文件,请设置 MEMRY_CONFIG 环境变量,或在 setup、uninstall 和 delete-account 命令中传入全局选项 --config <path>(或 --config=<path>):
memry setup --config ~/work/memry.json
优先级依次为 --config、MEMRY_CONFIG 和默认值;每项仅对当前进程生效。设置过程会将该文件传递给在你的 Agent 中注册的命令,以便它们读取相同的登录信息。
支持的 Agent
| Agent | Key | memry setup 添加的内容 |
|---|---|---|
| Claude Code | claude-code | memry MCP 服务(用户级)以及一个在会话开始时加载记忆的钩子。 |
| Codex | codex | 在 ~/.codex/config.toml 中添加 memry MCP 服务,并在 ~/.codex/AGENTS.md 中添加 memry 指令。 |
| OpenCode | opencode | 在 ~/.config/opencode/opencode.json 中添加 memry MCP 服务,并在 ~/.config/opencode/AGENTS.md 中添加 memry 指令。 |
| Antigravity | antigravity | 在 ~/.gemini/config/mcp_config.json 中添加 memry MCP 服务,并在 ~/.gemini/config/GEMINI.md 中添加 memry 指令。 |
| Windsurf | windsurf | 在 ~/.codeium/windsurf/mcp_config.json 中添加 memry MCP 服务,并在其全局规则(~/.codeium/windsurf/memories/global_rules.md)中添加 memry 指令。 |
设置只会添加 memry 自身的条目:这些文件中的其他内容都会保留,memry uninstall
只会移除设置添加的内容。你的登录令牌绝不会写入 Agent 的文件。
工作原理
-
通过电子邮件验证码登录。 使用发送到你邮箱的一次性验证码登录;无需记住密码。
-
Agent 集成。 设置会在你选择的每个 Agent 中注册一个
memryMCP 服务,为 Agent 提供保存和搜索记忆的工具。 -
会话开始时加载上下文。 每个新会话都会加载当前项目的近期记忆,让 Agent 可以接着上次的进度继续工作。Claude Code 通过钩子加载记忆(恢复会话和压缩后的会话也会加载);其他 Agent 则会收到指示,将加载记忆作为第一步。
-
项目。 默认情况下,仓库的项目名称就是其目录名。若要将多个仓库归为一个项目(例如同一产品的后端和前端),请在每个仓库的根目录中添加
.memry.json文件:{"project": "my-product"}
使用指标(可选启用)
memry 不会发送遥测数据。如果你希望 memry 仪表板显示 Claude Code 的令牌使用量和费用图表,请显式启用:
memry usage enable # off by default
memry usage status # on or off as far as memry can see, and where to (never prints the token)
memry usage disable # turn it off again
memry usage enable 会告知你将发送哪些内容,向你的 memry 服务申请使用令牌(该令牌只能发送使用指标),并在 ~/.claude/settings.json(或 $CLAUDE_CONFIG_DIR/settings.json;相对路径的 CLAUDE_CONFIG_DIR 会相对于当前目录解析)的 env 中设置 Claude Code 的 OpenTelemetry 指标导出配置:CLAUDE_CODE_ENABLE_TELEMETRY、OTEL_METRICS_EXPORTER、OTEL_EXPORTER_OTLP_METRICS_PROTOCOL、OTEL_EXPORTER_OTLP_METRICS_ENDPOINT、OTEL_EXPORTER_OTLP_METRICS_HEADERS,以及所有设为 false 的 OTEL_METRICS_INCLUDE_* 开关。重启 Claude Code 以应用设置。设置文件中保存了使用令牌,因此 memry 会确保该文件仅对你的用户可读。
发送和保留的内容
- Claude Code 决定发送哪些内容,详见其监控指南:包括令牌用量、费用、会话和代码行数等指标,以及你的电子邮件、组织 ID 等身份属性和特定于指标的属性。此列表并不完整,可能会随着 Claude Code 新版本的发布而增加。memry 会关闭它能关闭的可选属性开关。
- memry 服务是保障。 它只保留令牌和费用数据点(计数或费用、模型、令牌类型、查询来源和时间窗口),并将其关联到你的 memry 账户;收到其他所有内容后都会将其丢弃。它不存储原始属性,只存储这些属性的密钥哈希,以区分不同数据序列。
- memry 不会开启 Claude Code 的日志或追踪,因此不会有提示词或代码经由它发送。
memry 会检查什么,以及它看不到什么
在请求令牌之前,enable 会检查运行它的 shell 环境、你的 settings.json,以及 Claude Code 基于文件的托管设置(macOS 上 /Library/Application Support/ClaudeCode 中的 managed-settings.json 和 managed-settings.d/*.json,Linux 和 WSL 上的 /etc/claude-code,Windows 上的 C:\Program Files\ClaudeCode)。如果其中存在任何非 memry 自有变量且值并非 memry 值的遥测设置,它就会停止运行,无论 --force 的设置如何。这些设置包括所有 OTEL_*、CLAUDE_CODE_ENABLE_TELEMETRY*、CLAUDE_CODE_ENHANCED_TELEMETRY*、ENABLE_ENHANCED_TELEMETRY*、CLAUDE_CODE_OTEL_* 和 *BETA_TRACING* 变量,以及 otelHeadersHelper 设置;但值为 none 的导出器和你已设为 memry 值的变量除外。如果某个托管设置文件无法读取,或其中设置了 policyHelper(memry 绝不会运行它),也会停止运行,因为无法确定有效策略。如果 settings.json 中某个 memry 自有变量被设为其他值,除非你传入 --force,否则也会停止运行。非本机的普通 http:// 服务需要使用 --insecure,与 memry setup 一样。
memry 无法查看会话级 --settings 文件、托管策略助手的计算结果、MDM 配置文件、Windows 注册表、服务端管理的设置,也无法查看 Claude Code 实际启动时所处的环境。上述任何一项都可能改变 Claude Code 发送的内容或发送目的地,因此 status 会报告“据 memry 所见”的情况。如果你使用 mTLS,Claude Code 也可能会向你的 memry 服务提供其客户端证书(CLAUDE_CODE_CLIENT_CERT)。
memry 如何追踪
- memry 会在 memry 配置中的
usage_metrics下记录它写入的内容(仅你的用户可读取):服务、设置文件、每个变量及其确切值、使用令牌的 ID,以及你之前已设为 memry 值且它从不写入或删除的变量。只有当变量的值与记录值完全一致时,它才属于 memry。disable、memry uninstall和memry delete-account只会从记录的文件中移除这些变量,删除变空的env,并在操作成功前保留记录。 - memry 只会在记录的服务上撤销它记录的确切使用令牌,因此你其他设备上的令牌仍可使用;撤销尽力而为,未使用的令牌会在 30 天后失效。为其他服务或
CLAUDE_CONFIG_DIR执行enable会暂停,直到你对第一个配置执行disable;对其他服务执行memry setup会保留记录。 enable会先将新的设置保存为待处理状态,再写入设置文件,因此中断的enable会由下一条使用命令完成处理。失败的enable不会更改任何内容,正在使用的令牌也会继续生效。- memry 仅当文件仍与它检查时逐字节完全一致时才会写入设置;替换文件前会再次比较。文件系统无法与其他程序实现真正的比较并交换,因此如果其他程序恰好在同一时刻写入
settings.json,最后写入者将获胜。使用命令、memry setup、memry uninstall和memry delete-account会共用用户缓存目录下memry/中的锁,该目录必须仅供你访问,以免它们互相覆盖对 memry 配置所做的更改。锁不会被接管;发生崩溃后,错误信息会指出需要删除的锁文件。 - 如果 memry 配置文件存在,但无法读取为 JSON 对象,使用命令、
memry uninstall和memry delete-account都会停止,且不会更改任何内容。
更新
brew upgrade memry
在 Windows 上,运行 winget upgrade Memry.Memry。如果没有包管理器,请再次运行相同的 go install,或将二进制文件替换为较新版本中的文件。升级后,你的登录状态和 Agent 配置会继续生效。
卸载
memry uninstall
brew uninstall memry
memry uninstall 会请求确认,然后从你的 Agent 中移除 memry,并删除本地登录信息。使用 memry uninstall --force 可跳过确认。如果没有 Homebrew,请直接删除 memry 二进制文件,而不是运行 brew uninstall。在 Windows 上,请运行 winget uninstall memry(memry uninstall 会显示适用于你的安装方式的提示)。
删除你的账户
memry delete-account
memry delete-account 会永久删除你的 memry 账户及服务器上的所有记忆,然后像 memry uninstall 一样从你的 Agent 中移除 memry,并删除本地登录信息。此操作无法撤销,因此会要求你输入账户邮箱以确认。
你的数据
你的记忆存储在 memry 服务上,并与你的账户关联。memry uninstall 会撤销此设备上的令牌,使其无法再访问这些记忆。memry delete-account 会删除这些记忆。只有在你启用使用情况指标后,才会发送相关数据(请参阅使用情况指标)。有关 memry 存储的内容及其处理方,请参阅隐私政策(西班牙语)。
许可证
memry 以 MIT 许可证发布。有关版本说明,请参阅 CHANGELOG.md;有关开发和故障排除,请参阅 CONTRIBUTING.md。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。