mcpField
J
jevmem

jevmem

本地服务
avinash-jetwani.github.io记忆与知识1331 周前更新

关于 jevmem

jevmem 为 Claude Code、Cursor 等编码工具维护项目记忆,将决定、规则和失败做法保存到仓库中的 JEVMEM.md,并在后续会话中取回相关内容。它还会在命令执行或文件编辑前检查已保存规则,适合希望减少项目知识重复输入并防止违规改动的开发者。

主要功能

  1. 01自动保存项目决定与规则
  2. 02跨会话检索相关记忆
  3. 03记录错误、待办和失败做法
  4. 04操作前检查命令与文件编辑
  5. 05通过 Git 在团队共享记忆文件

适用场景

  1. 01让编码 Agent 延续先前项目决定
  2. 02避免命令或编辑违反项目规则
  3. 03保留失败方案及其原因
  4. 04将手写 CLAUDE.md 内容导入

MCP 相关

jevmem 提供 MCP 服务,供 Cursor、Codex 和 Claude Desktop 调用,以检索项目记忆;这些客户端中的记忆保存也可通过 MCP 使用。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"avinash-jetwani-jevmem": {
"command": "npx",
"args": [
"-y",
"jevmem"
],
"env": {
"TYPESAFE_API_KEY": "<TYPESAFE_API_KEY>",
"JEVMEM_ROOT": "<JEVMEM_ROOT>",
"TYPESAFE_BASE_URL": "<TYPESAFE_BASE_URL>",
"JEVMEM_CACHE": "<JEVMEM_CACHE>"
}
}
}
}
启动命令npx -y jevmem
需要配置的环境变量
TYPESAFE_API_KEY密钥TypeSafe API key for Jev, which add_memory, search_memory and audit_memory use. If unset, the server reads it from <project>/.jevmem/.env or ~/.jevmem/env.
JEVMEM_ROOTProject root, for clients that start the server without a project working directory (Claude Desktop). One server entry serves one project.
TYPESAFE_BASE_URLSend Jev requests through a proxy or gateway instead of api.typesafe.ai.
JEVMEM_CACHE0 turns off the answer cache in .jevmem/.

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmjevmem0.7.6

工具

4

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

参数类型必填说明
limitinteger否
querystring是

详细介绍

jevmem

说一次就够。 jevmem 会将 Claude Code 对话中的决策、规则和失败的方法保存到仓库中的 JEVMEM.md,并在下次会话中找回相关内容。在 Claude 运行命令或编辑文件之前,它会检查调用是否符合你保存的规则。它采用 MIT 许可证开源,基于 TypeSafe AI 的 Jev 构建,已收录于 Anthropic 的 Claude 插件目录和 MCP Registry。自 0.7.4 起,它也会以相同方式保存 Cursor 对话内容;自 0.7.6 起,它还是 Cursor 插件,并可通过 MCP 与 Codex 和 Claude Desktop 搭配使用。

收录于 Anthropic 的 Claude 插件目录 · 登上 MCP Registry · MIT 开源

文档网站,每个问题单独一页:avinash-jetwani.github.io/jevmem

npm version license node CI M8ven Verified

https://github.com/user-attachments/assets/c8a7eced-c427-4ef6-85f2-124eb34ad291

原因

每次 Claude Code 会话都会从全新的上下文开始,所以你上周做出的决定只留在上周的聊天记录里。 如果你能持续更新 CLAUDE.md 文件,它会有所帮助。jevmem 会在你工作时替你持续更新类似的文件。

数据一览

在三个小型测试项目的真实 Claude Code 会话中,分别使用和不使用 jevmem:

  • **Claude 遵循了项目先前的决策:**使用 jevmem 时,72 次会话中有 66 次;不使用时,72 次中有 28 次(约 10 次中有 9 次,而非 10 次中有 4 次)。
  • **尝试了项目禁止的改动:**使用 jevmem 时,18 次会话中有 0 次;不使用时,18 次中有 10 次。
  • **重复了已经失败的方法:**使用时,15 次中有 0 次;不使用时,15 次中有 3 次。
  • **保存:**每 1,000 条消息约花费 18 美分,后台判断约需五分之一秒;Claude 不会等待。
  • **恢复规则:**每条提示词约需三分之一到二分之一秒,Claude 会等待;文件越大,耗时和成本越高。
  • **公平地说:**手动维护且保持更新的 CLAUDE.md 表现相当(72 次中有 67 次),并且在一项提示词中没有任何线索指向的约定上表现更好(3 次中有 3 次,而 jevmem 为 0 次)。jevmem 会替你维护类似的文件;自 0.7.1 起,还会将这类规则标记为始终生效,让它们应用于每次会话:针对专为弥补这一差距而编写的 6 项留出任务,18 次中有 18 次遵循,而 0.7.0 为 18 次中有 14 次。

这是我自己的测试集,每个数字都来自一次运行;没有一项是独立基准测试。方法与结果

工作原理

像平常一样聊天。每当你做出决定,jevmem 就会在你仓库的文件中将其写成一行,并在下次会话中找回相关内容。

你说出决定,Jev 做出判断,jevmem 将一行内容写入 JEVMEM.md,下次会话 Claude 就会收到相关内容。

  1. 你在聊天中做出决定:“我们使用 Postgres。”
  2. jevmem 会询问 TypeSafe AI 的 Jev,这个模型会回答是或否并给出概率,判断是否值得保留。
  3. 如果值得,jevmem 就会在你仓库中的 JEVMEM.md 写入一行。
  4. 下次会话中,与你的提示词相关的内容会发回给 Claude。

改变主意后,旧内容会被划掉:保留下来作为历史记录,但不会发送给 Claude。你的团队通过 git 获取同一个文件。

jevmem 会保留决定、规则、错误、待办事项和行不通的方案(尝试过但失败的方法及其原因)。

- [superseded] We'll use SQLite as the primary store for now. → id:cuasaq
- [decision] Switch the primary store to Postgres 16.
- [constraint] Node 20 is the minimum supported version, and CI runs Node 20 and 22.
关于这些内容

每一行还附有一条注释,包含其 ID、时间和置信度,此处未显示。完整内容如下:

- [superseded] We'll use SQLite as the primary store for now. → id:cuasaq  
- [decision] Switch the primary store to Postgres 16.  
- [constraint] Node 20 is the minimum supported version, and CI runs Node 20 and 22.  

这些是 0.5.7 默认写入器生成的实际内容,0.5.8 到 0.5.10 均未更改(运行记录,2026-09-26)。它会保留每轮对话中的一个句子:关于 Postgres 的那轮对话还提到“并发写入时 SQLite 会锁死”,但这条原因被省略了。从 0.6.0 起,这一行由 Jev 选出的句子生成:一句陈述记忆内容,另一句说明原因(新增内容)。如果设置了 writer,则会由 OpenAI 或 Anthropic 模型压缩整轮对话。

效果如何?

在每种配置下进行的 72 次真实 Claude Code 会话中,使用 jevmem 时,Claude 依据所保存内容采取行动的频率与使用包含相同内容的手写 CLAUDE.md 大致相当;而两者都不使用时,这一比例不到一半。

A/B 测试结果:未使用项目记忆时,72 次中有 28 次遵循了项目决定;使用 jevmem 时,72 次中有 66 次;使用手写 CLAUDE.md 时,72 次中有 67 次。

无项目记忆jevmemCLAUDE.md 中的相同内容
遵循项目决定72 次中 28 次72 次中 66 次72 次中 67 次
尝试项目禁止的改动18 次中 10 次18 次中 0 次18 次中 0 次
重复已失败的方法15 次中 3 次15 次中 0 次15 次中 0 次

因此,jevmem 的表现与手写 CLAUDE.md 大致相当,而且无需你亲自编写。 在一项提示词中没有任何线索指向的约定上,CLAUDE.md 表现更好(3 次中 3 次,而 jevmem 为 0 次中 3 次)。这项测试基于 0.6 进行,当时 jevmem 只会在提示词与某行内容相关时找回该内容。从 0.7.1 起,jevmem 会将每次改动都必须遵守的规则标记为始终生效,并在每次会话开始时发送:针对专门为弥补这一差距而编写的 6 项留出任务,Claude 在使用 0.7.0 时 18 次会话中有 14 次遵循了约定,而使用 0.7.1 时 18 次会话中 18 次都遵循了约定,与保留相同内容的手动维护 CLAUDE.md 一样(新增内容,局限性)。 会话的运行方式及所有数据行见:基准测试页面。

守护机制

守护机制:Claude 想要运行一条命令,jevmem 会根据你保存的规则检查它,Claude Code 会先征求你的同意。

Claude 运行命令或编辑文件之前,jevmem 会根据你保存的规则检查操作。如果可能违反规则,Claude Code 会先征求你的同意:

jevmem: this may break a saved rule: "Never commit .env files" (JEVMEM.md)

在一组守护机制未针对其进行调整的 274 次工具调用测试中,它捕获了 68 次违规中的 66 次;在另外 206 次未违反规则的调用中,有 3 或 4 次会触发询问(分别在 0.6.0 和 0.6.1 上各运行一次)。 它是最后一道防线,而不是沙箱:它会查找规则和调用中相同的词语。从 0.7.0 开始,jevmem trust 可以让你手动添加的规则在守护机制的阻止模式下拦截调用,而不只是询问你。守护机制的工作原理。

侧边窗格

Claude Code 聊天旁的窗格会显示 jevmem 刚刚执行的操作:它为 Claude 的提示词提供的记忆行、它对某条命令的守护判断,以及它从本轮对话中保存的行。每项都有 why、wrong 和 forget 按钮。两个会修改 JEVMEM.md 的操作都会先征求你的同意;规则只能在终端中停用。它会读取三个本地文件,不会向任何地方发送数据。

/plugin install jevmem-pane@jevmem

这是 jevmem marketplace 的第二个插件(jevmem 插件本身仍不包含任何代码),适用于 Claude Code 2.1.299 或更高版本;在宽度至少为 144 列的终端和桌面应用的 Code 标签页中,它会自动打开;在任何位置输入 /jevmem 都可以打开或关闭它。每个区块显示的内容和测量结果:docs/pane.md。

安装

你需要一个 TypeSafe API 密钥,jevmem 的请求会计入该密钥,以及 Claude Code 2.1.273 或更高版本。

  1. 在 Claude 应用中:插件 → 发现 → jevmem → 添加。
  2. 安装插件运行的 CLI:
    npm install -g jevmem
    
  3. 在项目文件夹中一次性完成设置(它会在不显示密钥的情况下向你索取密钥,在该文件夹中启用 jevmem,并检查设置):
    jevmem setup
    

在该项目中启动 Claude Code。如果你在设置完成前就启动它,插件会提示一次尚未完成的事项;随时可以运行 jevmem doctor 检查设置。

其他安装方式:jevmem marketplace、npm、Cursor、Codex

通过 jevmem marketplace 安装:

npm install -g jevmem
claude plugin marketplace add Avinash-jetwani/jevmem
claude plugin install jevmem@jevmem
claude plugin install jevmem-pane@jevmem   # the side pane (0.7.5), optional
cd your-project && jevmem setup

仅使用 npm 安装(也会设置 Cursor 和 Codex):

npm install -g jevmem
cd your-project
jevmem init --tool claude    # or cursor, codex, claude-desktop, all

在 Cursor 中,jevmem 插件(0.7.6)会在每个窗口中提供钩子、MCP 服务和规则:该插件在 Cursor Marketplace 上架后,可以直接从中安装;或者将此仓库的 cursor-plugin/ 文件夹复制到 ~/.cursor/plugins/local/jevmem 并重新加载窗口;然后在每个项目中运行 jevmem setup(步骤说明)。

已有 CLAUDE.md?运行 jevmem import 可以查看从中导入的内容;使用 --apply 写入内容。

完整步骤,以及插件找不到 CLI 时的处理方法:docs/install.md。

## 兼容

在 Claude Code 中自动保存;从 0.7.4 开始,也会在 Cursor 中自动保存,由 Cursor 的钩子保存每轮已完成的 Agent 对话(从 0.7.6 开始,可通过 Cursor 的 jevmem 插件保存,也可通过 jevmem init --tool cursor 写入的文件保存);Codex 则在 jevmem watch 运行时自动保存。Cursor、Codex 和 Claude Desktop 通过 MCP 使用 jevmem。MCP 是一种让 AI 工具调用其他程序的标准方式,Agent 会在需要时发起调用;Cursor 插件的服务会在每个窗口中运行,而项目自己的 .cursor/mcp.json 服务默认关闭,需手动开启一次(操作步骤)。在 Cursor 中,对代码编写前采集的 10 段留出对话(24 轮)进行测试:第一次运行时,24 轮中有 21 轮完整配对,即提示词与完整回复配对;根据这次运行修复了一个读取问题。第二次运行时,24 轮全部配对,其中 21 轮直接指出了要保存的内容(测量结果)。

保存调取
Claude Code自动,每轮保存自动,每条提示词保存
Codexjevmem watch 运行时自动保存Agent 通过 MCP 请求时
Cursor自动保存每轮已完成的 Agent 对话(0.7.4;插件从 0.7.6 开始)Agent 通过 MCP 请求时(插件的服务会在每个窗口中运行;项目自己的服务需要在 Cursor 应用中开启一次,操作步骤)
Claude Desktop按需通过 MCP 保存按需通过 MCP 调取

MCP 服务已收录在 MCP Registry,名称为 io.github.Avinash-jetwani/jevmem。客户端配置:docs/mcp.md · docs/install.md。

快速且低成本

在 66 轮留出对话中,判断一条消息的耗时中位数:jevmem 为 0.24 秒,六种当前大模型为 2.78 至 4.29 秒。

判断是否保存只需 0.24 秒,每条消息成本为 $0.00018,并在后台完成:Claude 不必等待。 对于一条消息是否应该保存,jevmem 的判断准确率与六种大模型中表现最好的模型相同(98.5%);其中两种模型更擅长判断行的类型。

测试使用的是代码编写前撰写、未用于调优的 66 轮对话,运行版本为 0.7.6,日期为 2026-10-19(结果);六种大模型的测试日期为 2026-09-23。七种方案的结果、各自成本和测试方式均列于同一张表:基准测试。

它如何做出判断

jevmem 如何做出判断:清除机密信息,向 Jev 提出类型化问题,在代码中应用阈值(重复陈述的内容不会再次保存),写入一行,取代旧行,并为每项始终生效的更改标记规则。

没有提示词决定要保存什么:Jev 会通过概率回答一些简单的“是/否”问题,再由代码中的普通规则处理这些结果。

逐步详解
  1. 清除。 消息离开你的设备前,会移除常见格式的机密信息、电子邮件地址和类似卡号的数字。
  2. 向 Jev 提出类型化问题。 Jev by TypeSafe AI 会通过概率回答一组固定的简单问题:这里是否有决策、规则或错误?这是闲聊还是注入尝试?是否与已保存的内容表达相同意思(0.7.0)?是否是一条规定此项目中所有工作都必须遵循的规则(0.7.1)?它会更改哪条现有内容?
  3. 在代码中应用阈值。 代码会根据这些概率应用普通规则,决定保存还是跳过;这些规则位于 jevmem.config.json 中,而非提示词中。重复陈述已保存内容的消息会作为重复项跳过,而逐字重复的消息会在发送任何内容之前被跳过(0.7.0)。
  4. 写入一行。 保存时,jevmem 会从 Jev 选出的消息句子中写入一行,最多 200 个字符(一个句子陈述记忆内容,另一个说明其原因);或者,如果你在 jevmem.config.json 中设置了 writer,则由一个小型 OpenAI 或 Anthropic 模型来提炼消息。
  5. 取代旧行。 如果消息替代了现有记忆,该行会被标记为 [superseded] … → id:new 并保留在文件中。
  6. 标记为始终生效(0.7.1)。 如果 Jev 判断保存的规则必须在每次更改时遵循,它的注释中就会添加 always:1,而 SessionStart 钩子会在每次会话开始时将其置于 Claude 之前,不受提示词影响。jevmem always <id> 可手动标记一行。

层级、问题、策略、矛盾、回忆与审计:docs/how-it-works.md。

隐私

你的消息会先移除常见机密信息,再发送到 TypeSafe 的 API 进行评分;除非你设置了 writer,否则不会发送到其他地方。

  • jevmem 只会在你启用它的项目中运行(jevmem enable 或 jevmem init)。在其他地方不会发送任何内容。
  • 你的消息、之前两轮对话以及记忆内容会先清除常见机密信息,再发送到 TypeSafe 的 API 进行评分。在提问、报告错误或尝试操作的轮次中,Claude 的回复也会发送;对于防护检查,还会发送正在更改的命令或文件。
  • jevmem import --from sessions(0.7.1)会逐轮发送项目过去的 Claude Code 会话,并以相同方式清除机密信息;仅当你运行该命令,并在查看数量和费用后回答“是”时才会发送。
  • 不收集遥测数据。除非你在 jevmem.config.json 中设置了 writer,否则不会向 OpenAI 或 Anthropic 发送任何内容。
  • 队友或拉取请求添加的内容会先经过检查,之后 Claude 才能看到。

关于具体发送、清除和检查的内容、第三方隐私政策以及如何删除数据,请参阅 PRIVACY.md。关于针对植入内容的检查未覆盖哪些情况,请参阅 SECURITY.md。

局限

jevmem 还很新,在依赖它之前,请了解以下局限:

  • 尚处早期: 首次发布于 2026-09-22,所有测试集均由作者编写,或从 Claude Code 在专为此项目构建的临时项目中的会话里收集。没有一项是独立基准测试。
  • 准确度并非最高: 有两个 LLM 在判断行类型方面得分更高。jevmem 的优势在于速度和成本。
  • 未衡量回答质量: 测试会检查正确的行是否传递给 Claude,但不会检查 Claude 的回答是否有所改善。
  • 自动保存支持 Claude Code 和(自 0.7.4 起)Cursor(以及在 jevmem watch 运行时的 Codex);Claude Desktop 仅在 Agent 调用 add_memory 时保存,而在 Cursor 中,召回仍由 Agent 调用。Cursor 插件的规则会出现在其安装的每个项目的每次聊天中,长达 588 个字符(局限)。
  • 守卫会检查共享词语: 如果规则的措辞与它应捕获的命令相距太远,就可能无法捕获。
  • 侧边窗格仅适用于 Claude Code(2.1.299 或更高版本):Cursor 没有窗格,而 Claude Code for VS Code 目前也不会显示窗格。

所有局限及其数据见:docs/limits.md。

最新动态

按时间从新到旧列出变更;每项背后的测量数据请见最新动态页面。

  • 0.7.5:聊天旁边的面板会显示 jevmem 做了什么。 从 jevmem marketplace 安装 jevmem-pane,Claude Code 就会针对每条提示词和每轮对话显示它召回的内容、守卫的判断以及保存的内容,并提供 why、wrong 和 forget 按钮。另外:像“Decision for this project:”这样的前置标签不会再出现在保存的内容中(在 12 条按这种方式编写的留出对话轮次上运行一次,10 条内容中有 0 条保留了标签);jevmem init --tool cursor 会将 Cursor 自己的状态文件夹加入 gitignore;如果 Cursor 应用尚未启动项目的 MCP 服务,jevmem doctor 会提示;对规则运行 jevmem wrong … --should-be none 时,会像 forget 一样在终端中提问(新功能)。
  • 0.7.4:Cursor 聊天也会像 Claude Code 聊天一样保存。 jevmem init --tool cursor 会写入 Cursor 的钩子(以及一个可提交的启动器);Agent 轮次结束时,stop 钩子会从 Cursor 的转录记录中读取该轮内容,并运行与 Claude Code 相同的判断和写入流程;在 Cursor 中读取记忆仍由 Agent 调用 MCP 完成。在 10 段留出的 Cursor 聊天(共 24 轮)上,在代码编写前通过 Cursor 自己的 CLI 捕获记录;首次运行时,24 轮中有 21 轮完整配对;根据该次运行修复了读取器后,第二次运行时 24 轮全部配对,其中 21 轮直接包含了要保存的内容。对于较早设置过的项目,请再次运行 jevmem init --tool cursor。详情。
  • 0.7.3:设置消息不会出现在云端和 Cowork 会话中。 0.7.2 的一次性消息会显示在每个于云工作区中运行的 claude.ai 聊天开头,但其标记无法保留。现在,只有在你自己的电脑上(终端、桌面应用、VS Code 扩展或 SSH 会话)才会显示该消息;云端或 Cowork 会话不会收到消息,也不会生成文件。此次更改涉及插件的启动器和文档;CLI 代码未变。详情。
  • 0.7.2:用一条命令完成设置。 在 Claude 应用中点击 Add 后,设备上的首次会话会一次性提示剩余的设置步骤;jevmem setup 会提示你输入密钥、在文件夹中启用 jevmem 并检查设置。始终启用的内容现在会先通过投毒防护,再进入会话;此外,Jev 固定使用 1.13.0 版本:在六个测试集上与 1.13 相比,1.14 在三次运行中都漏掉了五个矛盾中的一个,在三次运行中都从捕获的会话里保存了更少的失败尝试,并且在书面测试集上保留的原因更少。详情。
  • 0.7.1:每次更改都有规则,并可从过往会话中提取记忆。 标记为始终启用的内容会在每次会话开始时发送给 Claude,无论提示词是什么:在六项测试任务中,这些任务涉及的文件是在编写相关约定之前写成的;使用 0.7.0 时,Claude 在 18 次会话中有 14 次遵循约定,使用 0.7.1 时则在 18 次会话中全部遵循,与手动维护 CLAUDE.md 并加入相同内容的效果相同。jevmem import --from sessions 会读取项目中过往的 Claude Code 会话,并从中提取决策、规则和失败尝试供你确认;在此之前会显示数量和费用并征求同意。详情。
  • 0.7.0:修正已保存的内容。 jevmem forget 会让旧内容或错误内容不再生效;在守卫的阻止模式下,jevmem trust 可让你手动添加的规则直接阻止命令,而不只是询问是否继续。与已保存内容相同的内容不会重复保存:在 25 条复述内容的测试中,0.6.6 将其中 15 条另存为新内容,而 0.7.0 只保存了 1 条。详情。
  • 0.6.6:失败的尝试会保存为失败尝试,而不是决策。 当你让 Claude 尝试某件事,而它在回复中表示失败时,jevmem 会读取该回复:在 40 轮测试对话中,0.6.5 将其中 12 轮保存为失败尝试,0.6.6 则保存了 37 轮。更多轮次会发送回复(PRIVACY.md)。详情。
  • 0.6.5:当 Claude 的回复先给出结论、最后说明原因时,失败尝试仍会保留原因。 在 13 轮按这种方式编写并作为失败尝试交给内容编写器的测试对话中,有 12 条内容保留了原因(0.6.4:13 轮中有 2 轮)。详情。
  • **0.6.4:README 更短,并配有图示;**详细内容已移至 docs/ 中的页面。仅更新文档。
  • **0.6.1 至 0.6.3:守卫会检查包含 if [ … ] 的命令,**而 0.6.0 会让这类命令未经检查就通过;jevmem doctor 的提示也更加清晰。详情。
  • 0.6:守卫与失败尝试。 对于可能违反已保存规则的命令或编辑,Claude Code 会先征求你的同意;失败的方法会连同原因一起保存,下次遇到时会显示为“已尝试过:…”。更多提示词所需内容会被召回;将工作交给后台子 Agent 的轮次也只会在结束时保存一次。详情。 详情和测量数据:docs/whats-new.md · 升级:docs/upgrading.md · CHANGELOG
命令
jevmem init [--tool claude|cursor|codex|claude-desktop|all] [--no-hooks] [--files] [--command "<cmd>"]
jevmem init --remove-hooks                     Remove jevmem's Claude Code hooks and Cursor hooks from this project (plugin users; with the Cursor plugin, its rule and MCP entry too)
jevmem enable                                  Opt this project in (plugin users): jevmem.config.json, JEVMEM.md, .jevmem/
jevmem setup                                   Finish the setup here: the CLI and the plugin, your TypeSafe key (asked for, not shown), jevmem turned on in this folder, doctor; terminal only
jevmem disable                                 Opt this project out: jevmem does nothing here (JEVMEM.md is kept)
jevmem hook                                    Hook entrypoint; reads the Claude Code hook JSON on stdin
jevmem daemon [status|start|stop]              Warm Jev client used by the hook (auto-started, exits when idle)
jevmem watch [--replay] [--once]               Capture turns from Codex's session log for this project (Cursor saves through its hooks)
jevmem mcp [--root <dir>]                      Stdio MCP server
jevmem audit [--dry-run]                       Re-score every memory against the repo, flag [stale?]
jevmem audit --security [--ci]                 List lines that read as instructions to an AI (--ci: exit 1 if any)
jevmem search <query> [--limit N]              Rank memories by relevance
jevmem list [--all]                            Print memories (--all: with superseded and retired lines, and provenance)
jevmem add [--trust] [--always] <kind> <text>  Add a line by hand (secrets scrubbed, a leading tag dropped; no Jev check); --trust marks it verified (asks on a terminal); --always sends it to Claude in every session
jevmem always [--off] <id> [<id>…]             Mark a line always-on (in Claude's context at the start of every session), or take the mark off
jevmem always --suggest [--apply]              Ask Jev which live lines are rules for every change and propose the marks; --apply sets them
jevmem forget <id> [<id>…]                     Retire a line in place: it stays in JEVMEM.md as [retired]; a rule asks for a yes on a terminal
jevmem trust <id> [<id>…]                      Mark a line you wrote as verified, after the poisoning gate (asks on a terminal); the guard can then block on it
jevmem import [--from <sources>] [--apply]     Import CLAUDE.md, AGENTS.md, .cursor/rules/* (claude-auto-memory on request); dry run by default
jevmem import --from sessions [--since 30d] [--apply]   Read this project's past Claude Code sessions; counts and asks before anything is sent
jevmem why <id|hash>                           Every Jev answer behind a line or a skipped turn
jevmem right <id|hash>                         Label a decision as correct
jevmem wrong <id|hash> [--should-be <kind|none>]   Label a decision as wrong (--should-be none retires the line)
jevmem missed "<text>" [--kind <kind>]         Label a turn that should have been saved
jevmem fit [--dry-run] [--force]               Refit weights and thresholds from labels (needs 40+)
jevmem stats                                   Writer, latency p50/p95, cost per day, cache hit rate, escalation rate, retry queue, labels, last fit
jevmem doctor                                  Is this project enabled, where the TypeSafe key comes from, which writer is active and why
jevmem key                                     Save your TypeSafe API key to ~/.jevmem/env (asks for it without showing it)
jevmem log                                     Per-label latency, token and cost summary of .jevmem/log.jsonl
jevmem guard test "<command>" | --edit <path>  Dry run of the PreToolUse guard on one call: rules, prefilter, Jev's answer, hook output
jevmem guard log [-n 20]                       The guard's recent asks and denials in this project, with the rule and score

这些是 0.7.3 的命令:0.5.10 的命令、jevmem guard(0.6.0)、forget、trust 和 add --trust(0.7.0)、always、add --always 和 import --from sessions(0.7.1),以及 setup(0.7.2);0.7.3 没有新增命令,也没有修改任何命令。每条命令都支持 --help。设置 JEVMEM_VERBOSE=1,即可在每次钩子运行后显示一行延迟/成本摘要。

链接

评论

支持 Markdown

第一次接触 MCP?

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

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