关于 Kemory
Kemory 是面向 AI Agent 的持久记忆库命令行客户端,可将多种编码客户端连接到记忆库。它配置 MCP、记忆钩子,并提供命令管理和查询记忆。
主要功能
- 01连接并配置多种 AI 客户端
- 02启动 stdio MCP 桥接
- 03会话开始时加载记忆
- 04保存会话记忆
- 05管理、搜索和导出记忆
适用场景
- 01为编码会话提供已有上下文
- 02在会话结束时保存内容
- 03检查客户端连接并修复配置
MCP 相关
提供 stdio MCP 桥接,供 MCP 客户端启动并访问 Kemory 记忆库;connect 和 mcp install 可写入客户端配置。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
kemory
Kemory 的命令行客户端。Kemory 是一个为 AI Agent 提供持久记忆的保险库。它会为你登录,将 Claude Code、Codex、Cursor 和 VS Code 等 MCP 客户端连接到你的保险库,并运行它们使用的 MCP 桥接程序。
快速开始
你需要一个 Kemory 账户;请前往 kemory.sekondbrain.ai 注册。
-
连接你的 AI 客户端。无需预先安装任何东西:
npx -y kemory connect # Node.js 18+ uvx kemory connect # or with uv浏览器会打开登录页面。随后,kemory 会列出这台设备上的 AI 客户端,并标记为
[ready]或[connected],然后询问一次:连接所有就绪的客户端、选择部分客户端,或取消。Claude Code 和 Grok Build 会安装 Kemory 插件;Codex、Copilot CLI、Cursor、Gemini CLI、OpenCode 和 VS Code 会添加 MCP 配置项并启用自动记忆;其他客户端会添加 MCP 配置项。随后会检查连接情况。摘要会列出尚待处理的事项,例如需要重启哪些客户端。 -
重启列表中列出的客户端。Warp 无需重启即可应用更改。
-
随时使用
kemory doctor端到端检查设置。
--dry-run 会显示将要进行的更改,但不会实际修改任何内容。在脚本中,请改为指定客户端名称:--host all,或 --host claude-code、--host codex 等(MCP 客户端列出了这些名称);这样 kemory 就不会再询问。
安装
brew install sekondbrainailabs/s9n/kemory
npm install -g kemory
uv tool install kemory
提供 macOS(Apple 芯片和 Intel)、Linux(arm64 和 x64)以及 Windows(x64)的构建版本。它们附带校验和与构建来源证明,并发布在每个 GitHub 版本中
(gh attestation verify <file> --repo SeKondBrainAILabs/kemory-cli)。
kemory upgrade 会告知你是否有更新版本,以及如何更新已安装的副本。
命令
| 命令 | 功能 |
|---|---|
kemory login | 通过浏览器登录(OAuth 设备流),或使用 API 密钥加上 --local 登录 |
kemory logout | 移除所选环境的缓存登录信息 |
kemory whoami | 显示你的账户、当前组织和团队 |
kemory mcp serve | MCP 客户端启动的 stdio MCP 桥接程序 |
kemory hook session-start, hook capture | 编码 Agent 钩子运行的命令:会话开始时加载你的 Kemory 上下文,会话结束时保存会话(参见 钩子) |
kemory connect | 如有需要则登录,配置 MCP 客户端并检查连接 |
kemory connect copilot-cloud | 为当前仓库中的 GitHub Copilot 云 Agent 启用自动记忆(参见 Copilot 云 Agent) |
kemory mcp install | 将 kemory 配置写入 MCP 客户端(对所有已安装的客户端使用 --host all) |
kemory doctor | 检查登录状态、网络、API 和 MCP 客户端;--fix 会配置或清理它们 |
kemory orgs, kemory use | 列出你的组织并切换当前组织 |
kemory remember, recall, ls, show, forget | 存储、搜索、读取和删除记忆 |
kemory ask | 向你的知识库提问,并获取附有证据的答案 |
kemory namespaces, kemory export | 列出命名空间,将整个知识库导出为 JSON |
kemory stats | 查看记忆调用次数及其 token 成本;使用 stats memories 查看从未被调用或被降级评分的记忆 |
kemory keys | 为 Agent 创建、轮换、批准、撤销、删除和列出 API 密钥 |
kemory upgrade, telemetry, completion | 检查 CLI 是否有更新、设置分析数据偏好、配置 Shell 补全 |
每条命令都接受 --output json,供脚本和 Agent 使用(此时标准输出仅包含
JSON 负载),还接受 --quiet、--no-color 和 --env <name>。
MCP 客户端
kemory connect --host <name> 和 kemory mcp install --host <name> 用于连接
一个客户端;--host all 则连接此计算机上安装的所有客户端。
对于 Claude Code 和 Grok Build,这些命令会通过客户端自带的 claude 或 grok
命令安装 Kemory 插件。该插件的钩子会将每次会话保存到 Kemory,
并且在 Claude Code 中还会在会话开始时加载你的记忆。如果没有该命令,或环境不是 prod,
则会改为写入 MCP 配置。
对于 Codex,这些命令还会向 ~/.codex/hooks.json 添加钩子,在会话开始时加载你的记忆,
并在会话进行过程中保存会话(参见 钩子)。Codex 只有在你批准后才会运行新钩子,
因此请启动一次 Codex,并使用 /hooks 批准这些钩子。该文件中的其他钩子会保持不变。
对于 Cursor,这些命令会向 ~/.cursor/hooks.json 添加相同的钩子;对于 Gemini
CLI,则会将钩子添加到 ~/.gemini/settings.json 的 hooks 中。两者都会直接运行钩子,
不会征求确认,并且会保留其他钩子。
对于 VS Code 和 Copilot CLI,这些命令会写入 ~/.copilot/hooks/kemory.json;
两者都会运行该配置(VS Code 通过 chat.useHooks 设置运行,默认启用)。此文件由 kemory 管理,
每次连接时都会重写。
对于 OpenCode,这些命令会将 opencode-kemory 插件添加到 opencode.json 的
plugin 列表中,OpenCode 会从 npm 安装该插件。它执行相同的操作:在会话开始时将你的记忆
添加到系统提示词中,并在会话进行过程中保存你的提示词。若连接的是非默认环境,
则会改为将插件写入 ~/.config/opencode/plugins/kemory.js;再次连接时会替换该文件,
因此请将自己的插件保存在其他文件中。
对于其他所有客户端,这些命令都会写入 MCP 配置。该配置只会启动
kemory mcp serve;不会将令牌或密钥写入客户端配置,文件中的其他内容也会保持不变。
--host | 客户端 | 配置文件(macOS 和 Linux) |
|---|---|---|
claude-code | Claude Code | ~/.claude.json |
claude-desktop | Claude Desktop | ~/Library/Application Support/Claude/claude_desktop_config.json |
codex | OpenAI Codex | ~/.codex/config.toml,以及位于 ~/.codex/hooks.json(或 $CODEX_HOME 下)的记忆钩子 |
cursor | Cursor | ~/.cursor/mcp.json,以及位于 ~/.cursor/hooks.json 的记忆钩子 |
vscode | VS Code(Copilot Agent 模式) | ~/Library/Application Support/Code/User/mcp.json、~/.config/Code/User/mcp.json,以及位于 ~/.copilot/hooks/kemory.json 的记忆钩子 |
copilot-cli | GitHub Copilot CLI | ~/.copilot/mcp-config.json(或 $COPILOT_HOME 下),以及位于 ~/.copilot/hooks/kemory.json 的记忆钩子 |
copilot-jetbrains | JetBrains IDE 中的 GitHub Copilot | ~/.config/github-copilot/intellij/mcp.json(Windows 上为 %LOCALAPPDATA%\github-copilot\intellij\mcp.json) |
junie | JetBrains IDE 和 Junie CLI 中的 Junie | ~/.junie/mcp/mcp.json |
gemini-cli | Gemini CLI | ~/.gemini/settings.json,记忆钩子也在同一文件中 |
antigravity | Google Antigravity | ~/.gemini/config/mcp_config.json |
windsurf | Windsurf / Devin Desktop | ~/.config/devin/mcp_config.json,旧版安装则为 ~/.codeium/windsurf/mcp_config.json |
cline | Cline | VS Code 扩展的 cline_mcp_settings.json,或 ~/.cline/data/settings/cline_mcp_settings.json |
kiro | Kiro | ~/.kiro/settings/mcp.json |
grok | Grok CLI | ~/.grok/config.toml |
continue | Continue(已于 2026 年停止维护;仍在安装的版本会继续正常运行) | ~/.continue/mcpServers/kemory.json |
droid | Factory Droid | ~/.factory/mcp.json,以及位于 ~/.factory/hooks.json 的记忆钩子(如果你将钩子保存在 ~/.factory/settings.json 中,也可以放在那里) |
zed | Zed | ~/.config/zed/settings.json(Windows 上为 %APPDATA%\Zed\settings.json),位于 context_servers 下;文件中的注释会保留 |
warp | Warp | ~/.warp/.mcp.json |
opencode | OpenCode | ~/.config/opencode/opencode.json,以及其 plugin 列表中的 opencode-kemory |
在 Windows 上,Library/Application Support 和 .config 下的文件位于
%APPDATA% 中;OpenCode 的文件除外,它仍位于 ~\.config\opencode。Grok 也会读取 ~/.claude.json,因此其中的 claude-code
条目也会连接到 Grok。
每个客户端只建立一个连接
每个客户端都应只通过一种方式连接 Kemory。通过两种方式连接会让每个 Kemory 工具出现两次,增加每个会话的上下文开销。
| 客户端 | 连接方式 |
|---|---|
| claude.ai、Claude Desktop 和 Claude 移动端 | claude.ai 连接器,从 Kemory 控制面板添加 |
| Claude Code 和 Grok Build | Kemory 插件,由 kemory connect 安装 |
| 上表中的其他所有客户端 | kemory connect --host <name> |
如果客户端已经连接了 Kemory,connect 和 mcp install 不会为其写入任何内容:已启用 Kemory 插件的 Claude Code 或 Grok Build,或者账号正在使用 claude.ai 连接器的 Claude Desktop。kemory doctor 会报告与上述任一连接重复的 kemory 条目,而 kemory doctor --fix 会将其移除。
Claude Desktop 运行时会根据内存重写配置文件,从而删除期间添加或移除的条目。如果必须在其打开时更改配置,connect、mcp install 和 doctor --fix 会提示先退出应用、进行更改,然后重新打开(doctor --fix --yes 会直接执行,不再询问)。
如果在 Claude 应用内的终端中运行这些命令,由于终端会随应用一同关闭,系统会提示改为打开 Terminal 并在那里继续(macOS)。
Copilot cloud agent
GitHub Copilot 的云 Agent 在无人登录的沙盒中运行,因此它需要使用 API 密钥访问 Kemory。在已登录 gh 的情况下,在它要操作的仓库中运行 kemory connect copilot-cloud。它会:
- 写入
.github/hooks/kemory.json,其中的钩子会在会话开始时加载你的记忆,并保存会话(提交并推送); - 为该仓库创建 API 密钥,或在重新运行时创建一个新密钥,并将其存储为仓库的 Agents 密钥
KEMORY_API_KEY(供钩子使用)和COPILOT_MCP_KEMORY_API_KEY(供 MCP 服务使用); - 输出 MCP 配置,供你粘贴到仓库的 Settings → Copilot → MCP servers 中;还会输出要添加到 Settings → Copilot → Internet access 的 Kemory 主机地址,以便钩子能够访问它。
如果没有 gh,它会只显示一次密钥,供你自行将其添加为这两个密钥。钩子在其他任何无人登录的场景中也会使用 KEMORY_API_KEY。
退出代码
脚本和 Agent 可以根据命令失败的原因采取相应操作:
| 代码 | 含义 |
|---|---|
| 0 | 成功 |
| 1 | 不属于以下类别的失败 |
| 2 | 调用无效 |
| 3 | 未登录,或登录被拒绝——运行 kemory login |
| 4 | 无法访问 Kemory;服务器上未运行任何操作 |
| 5 | 已登录但无权限(403) |
| 6 | 未找到(404) |
| 7 | 与现有状态冲突(409) |
| 8 | 请求过于频繁(429) |
| 9 | Kemory 正常运行,但暂时不可用(503) |
配置
| 变量 | 作用 |
|---|---|
KEMORY_ENV | 要使用的环境:prod(默认)、india、local,或环境配置文件中的某个环境 |
KEMORY_URL | 使用此 Kemory API 主机,而非当前环境的主机 |
KEMORY_OIDC_ISSUER、KEMORY_CLI_CLIENT_ID | 可自托管 Kemory 的身份提供商和客户端 |
KEMORY_API_KEY | mcp serve 使用此密钥进行身份验证,而非使用你的登录信息 |
KEMORY_HTTP_TIMEOUT | mcp serve 等待 Kemory 响应的秒数(默认 120) |
KEMORY_OUTPUT | text 或 json,与 --output 类似 |
NO_COLOR | 禁用颜色 |
KEMORY_ACCESSIBLE=1 | 使用纯文本编号提示替代方向键选择器,供屏幕阅读器使用 |
KEMORY_HEADLESS=1 | 始终不尝试打开浏览器 |
登录信息按环境存储在 ~/.kemory/credentials-<env> 中。可在 ~/.kemory/environments.json(或由 KEMORY_ENVIRONMENTS_FILE 指定的文件)中定义其他环境:
{"myenv": {"issuer": "https://idp.example.com/realms/x", "kemory_url": "https://kemory.example.com", "dashboard_url": "https://app.example.com", "server_name": "kemory-myenv"}}
Hooks
支持钩子的编码 Agent 可以在会话开始时获取 Kemory 上下文,并在会话结束时保存上下文。kemory connect 会尽可能完成设置;以下是钩子调用的命令。
| Command | Hook event | Does |
|---|---|---|
kemory hook session-start --agent <agent> | 会话开始 | 按 Agent 注入的格式,输出你在 Kemory 中的命名空间摘要,并附上如何使用这些摘要的简短说明。--agent 可以是 claude-code、codex、copilot、gemini-cli、cursor、opencode,也可以是输出纯文本的 text。 |
kemory hook capture --agent <agent> | 每轮对话后、压缩前、会话结束时 | 读取 Agent 载荷指定的对话记录(或 --transcript),并将尚未存储的提示词作为一条记忆保存。每轮对话后,会等待 3 条新提示词;压缩和会话结束时,则会保存所有待处理内容。不输出任何内容。 |
两者都不会阻塞 Agent:任何错误都不会显示,退出状态始终为 0,并且每个钩子都会在 KEMORY_HOOK_TIMEOUT 秒后放弃(默认值为 2)。KEMORY_HOOK_DEBUG=1 会显示钩子未执行操作的原因。
捕获功能只会发送你自己的提示词,不会发送 Agent 的回复或工具输出:每条记忆最多包含最近的 12 条新提示词和 8000 个字符;符合凭据格式的文本(API 密钥、令牌、密码、私钥)会替换为 [REDACTED]。这些内容会存储在 user:sessions 命名空间中,仅你可见。功能会在 ~/.kemory/.captured/<session> 中记录已存储的内容;Kemory 插件也会使用同一文件,因此不会重复存储同一会话。
| Variable | Effect |
|---|---|
KEMORY_CONTEXT=0 | 关闭会话开始时的上下文 |
KEMORY_CONTEXT_DEPTH、KEMORY_CONTEXT_MAX_CHARS、KEMORY_CONTEXT_NAMESPACES | 摘要深度(默认值为 l3)、字符数上限(默认值为 4000)、要包含的命名空间(逗号分隔;默认包含全部) |
KEMORY_AUTO_CAPTURE=0 | 关闭捕获功能 |
KEMORY_CAPTURE_NAMESPACE、KEMORY_CAPTURE_VISIBILITY | 捕获内容的存储位置(默认值为 user:sessions、user-private) |
KEMORY_CAPTURE_MAX_TURNS、KEMORY_CAPTURE_MIN_NEW_TURNS | 每条记忆包含的提示词数(默认值为 12)、每轮捕获等待的新提示词数(默认值为 3) |
CLI 会发送哪些内容
命令会与所选环境的 Kemory API 通信;login 和令牌刷新则会与该环境的登录服务通信(生产环境为 accounts.sekondbrain.ai)。每个 API 请求都会携带你的访问令牌、当前组织、CLI 版本、操作系统和架构(X-Kemory-Client),以及所运行命令的名称(X-Kemory-Command,不包含命令参数)。Kemory 会将后两项用于产品分析;运行 kemory telemetry off 可为你的帐户关闭此功能。kemory doctor 和 kemory upgrade 还会读取 GitHub 上的公开版本列表以比较版本。
SeKondBrain 如何处理你的帐户和保险库数据,请参阅隐私政策。
卸载
- 从 MCP 客户端的配置文件中移除 kemory 条目(MCP 客户端表中列出了各配置文件);对于 Continue,请删除
~/.continue/mcpServers/kemory.json。 - 运行
kemory logout,或删除~/.kemory/以移除所有已保存的登录信息。 - 按照安装时使用的方式卸载 CLI:
brew uninstall kemory、npm uninstall -g kemory或uv tool uninstall kemory。
从源代码构建
make build # produces ./kemory
make check # what CI runs: tests, lint, vulnerability scan, hygiene check
如何参与 CLI 开发,请参阅 CONTRIBUTING.md;有关凭据处理方式以及如何报告漏洞,请参阅 SECURITY.md。如有问题或发现错误,请前往 GitHub issues。
许可证
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。