Jevmem – 为 Claude Code 打造的自动项目记忆,基于 Jev 构建
摘要
Jevmem 是一个为 AI 编码助手如 Claude Code、Cursor 和 Codex 设计的自动项目记忆工具,它可以将聊天中的决策和约束保存到 markdown 文件中,以便未来参考。
查看缓存全文
缓存时间: 2026/09/25 16:15
Avinash-jetwani/jevmem 来源:https://github.com/Avinash-jetwani/jevmem
jevmem
Claude Code 的自动项目记忆功能。同样适用于 Cursor 和 Codex。 npm 版本 (https://www.npmjs.com/package/jevmem) 许可证 node CI (https://github.com/Avinash-jetwani/jevmem/actions/workflows/ci.yml) M8ven 已验证 (https://m8ven.ai/mcp/avinash-jetwani/jevmem)
功能介绍
https://github.com/user-attachments/assets/ed77849e-db1c-4c05-9ad8-4cab0b3968a2
- 将你与 Claude Code 聊天中的决策、约束、问题和待办事项自动保存到
JEVMEM.md。 - 当你改变主意时,旧行会被标记为已取代,而不是删除。
- 在下一次会话中,相关行会被添加到 Claude 的上下文中。
- [decision] 使用 Postgres 16 作为主存储;SQLite 在负载下会锁定
- [constraint] Node 20 是最低要求;CI 运行 20 和 22 版本
- [superseded] 使用 SQLite 作为主存储 → id:k3d9xq
安装(60秒内完成)
npm install -g jevmem
export TYPESAFE_API_KEY=... # https://typesafe.ai (可选 OpenAI 或 Anthropic 密钥)
cd your-project
jevmem init --tool claude
init 命令会创建 JEVMEM.md、jevmem.config.json 和一个被 git 忽略的 .jevmem/ 文件夹,并在 .claude/settings.local.json 中注册两个 Claude Code 钩子,同时将该文件添加到 .gitignore(详情)。
支持工具
下表列出了哪些操作是自动的,哪些依赖于代理工具:
| 工具 | 设置 | 捕获 | 召回 |
|---|---|---|---|
| Claude Code | jevmem init --tool claude | 自动,通过 Stop 钩子在每轮对话时捕获 | 自动,通过 UserPromptSubmit 钩子在每个提示时召回 |
| Codex | jevmem init --tool codex | 在 jevmem watch 运行时自动(它会跟踪该项目的 Codex 会话日志,并运行相同的 决策 → 写入 路径);否则需要代理通过 MCP add_memory 主动发起,由 AGENTS.md 部分提示 | 代理主动发起:通过 MCP search_memory,由 AGENTS.md 提示 |
| Cursor | jevmem init --tool cursor | 代理主动发起:.cursor/rules/jevmem.mdc 规则会指示代理在你陈述决策时调用 MCP add_memory。如果代理未调用,则不会捕获任何内容 | 代理主动发起:规则指示其在执行非平凡任务前调用 search_memory |
| Claude Desktop | jevmem init --tool claude-desktop 会打印一个配置片段供粘贴(每个项目一个配置,使用 --root 指定名称) | 手动:要求它调用 add_memory(无钩子,无规则文件) | 根据请求:search_memory |
MCP add_memory 通过与钩子相同的门控机制。客户端配置:docs/mcp.md。
决策机制
- 净化。 在消息离开你的设备之前,会从对话轮次中移除常见的密钥格式、电子邮件地址和卡号格式的数字。
- 向 Jev 提出类型化问题。 Jev(由 TypeSafe AI 提供,https://typesafe.ai)以概率形式回答一组固定的小问题:是否存在决策、规则或问题?是闲聊还是注入尝试?它改变了哪一行现有记录?
- 在代码中应用阈值。 基于这些概率的简单规则决定保存或跳过;这些规则存放在
jevmem.config.json中,而不是在提示词中。 - 写入一行。 保存时,一个小型 LLM(或无需 LLM 密钥的确定性提取器)会写入最多 200 个字符的一行。
- 取代旧行。 如果本轮对话替换了一个现有记忆,则该行会被标记为
[superseded] ... → id:new并保留在文件中。
层级、问题、策略、矛盾、召回与审计:docs/how-it-works.md。
基准测试
66 个待评估轮次,所有七个决策器在相同状态下进行,2026-09-23(方法、回归集、定价、p95、重试):
| 决策器 | 保存/跳过准确率 | 保存+类型准确率 | 矛盾发现率 | p50 延迟 | 每次决策成本 |
|---|---|---|---|---|---|
| GPT-6 Astra | 98.5% | 98.5% | 5/5 | 3,469 毫秒 | $0.007489 |
| GPT-6 Luna | 93.9% | 93.9% | 5/5 | 2,927 毫秒 | $0.000089 |
| Claude Fable 5.1 | 95.5% | 95.5% | 5/5 | 4,290 毫秒 | $0.013256 |
| Claude Opus 5.5 | 97.0% | 97.0% | 5/5 | 2,784 毫秒 | $0.005186 |
| Gemini 3.8 Flash | 92.4% | 92.4% | 5/5 | 2,850 毫秒 | $0.001174 |
| Grok 4.7 | 90.9% | 90.9% | 4/5 | 3,320 毫秒 | $0.004602 |
jevmem auto | 98.5% | 95.5% | 5/5 | 300 毫秒 | $0.000127 |
0.30 秒是 Jev API 的决策时间;通过一个包含 Node 启动时间的真实 Stop 钩子进程,端到端时间为 0.6 秒(成本与延迟)。
在 66 个待评估轮次中,jevmem 的决策中位时间为 0.30 秒,而六个当前 LLM 的时间为 2.8–4.3 秒。其准确率处于 LLM 的范围内:98.5% 的保存/跳过准确率(与 GPT-6 Astra 并列最高)和 95.5% 的保存+类型准确率,而 LLM 的准确率为 90.9–98.5%。GPT-6 Astra(98.5%)和 Claude Opus 5.5(97.0%)在保存+类型准确率上更高;Claude Fable 5.1 持平;GPT-6 Luna、Gemini 3.8 Flash 和 Grok 4.7 准确率较低。
它发现了 5/5 个矛盾,六个 LLM 中的五个也做到了这一点。GPT-6 Luna 成本更低($0.000089 对 $0.000127),但准确率较低(93.9%),且慢约 10 倍。
这是一次运行的结果,一两个轮次的差异属于运行间的噪声范围。如果最准确的决策最重要,GPT-6 Astra 或 Claude Opus 5.5 更好,但其每次决策的成本高出约 40–60 倍,延迟高出 9–12 倍。jevmem 适用于当你需要对每条消息进行快速、低成本决策的场景。
隐私
- 发送至 TypeSafe AI: 每轮对话的用户消息(以及用于问题和错误报告的助手回复)、前两轮对话和你的记忆行,用于评分。不收集遥测数据。如果你设置了 OpenAI 或 Anthropic 密钥,被保存轮次的文本也会发送给该提供商以写入行。
- 先净化: 常见的凭证格式(API 密钥、令牌、
*_PASSWORD=样式的键值对、连接字符串密码、私钥)、电子邮件地址和 16 位数字;姓名、电话号码和地址不会被处理。 - 零保留标志: jevmem 可以发送
zeroDataRetention: true(对于 Vercel AI Gateway URL 是自动的);是否适用取决于网关和 TypeSafe 的条款,jevmem 不验证这一点。
具体发送、存储和净化的内容:SECURITY.md。
诚实的局限性
- 早期阶段: v0.4;两个评估集均由作者编写,均非独立基准。
- 不是最准确的: GPT-6 Astra 和 Claude Opus 5.5 在保存+类型准确率上更高;jevmem 的优势在于速度和成本。
- 召回质量未衡量: 测试了相关行是否被注入;答案质量是否提升未衡量。
- 长期漂移未衡量: 测试框架覆盖的是五轮对话会话,而非数周的使用。
- 自动捕获仅限于 Claude Code(以及
jevmem watch运行期间的 Codex);Cursor 和 Claude Desktop 仅在代理调用add_memory时保存。 - Jev 宕机会丢失轮次: 每次 Jev 调用有 2 秒预算;当 API 响应慢或宕机时,该轮会被跳过并记录在
.jevmem/log.jsonl中,不会后续重试。
命令
jevmem init [--tool claude|cursor|codex|claude-desktop|all] [--no-hooks] [--command ""]
jevmem hook 钩子入口点;从标准输入读取 Claude Code 钩子 JSON
jevmem daemon [status|start|stop] 钩子使用的预热 Jev 客户端(自动启动,空闲时退出)
jevmem watch [--replay] [--once] 从该项目的 Codex 会话日志中捕获轮次
jevmem mcp [--root <path>] 标准输入/输出 MCP 服务器
jevmem audit [--dry-run] 根据代码库重新评分每条记忆,标记 [stale?]
jevmem search [--limit N] 按相关性对记忆进行排序
jevmem list [--all] 打印记忆
jevmem add <line> 手动添加一行(密钥会净化;不经过 Jev 检查)
jevmem why <id> 显示一行或跳过轮次背后每个 Jev 答案
jevmem right <id> 将决策标记为正确
jevmem wrong <id> [--should-be <line>] 将决策标记为错误
jevmem missed <text> [--kind <kind>] 标记一个应该被保存但未被保存的轮次
jevmem fit [--dry-run] [--force] 根据标签重新拟合权重和阈值(需要 40+ 标签)
jevmem stats 延迟 p50/p95、每日成本、缓存命中率、升级率、标签数、上次拟合时间
jevmem log 按标签显示 .jevmem/log.jsonl 的延迟、令牌和成本摘要
每个命令都接受 --help。设置 JEVMEM_VERBOSE=1 可在每次钩子运行后显示一行延迟/成本摘要。
链接
相似文章
Jev驱动的自动更正
一个无需使用空格键即可实现输入自动更正的工具,在GitHub上作为开源项目提供。
Jev-Mem: 面向高效AI智能体的System-One控制智能体记忆
Jev-Mem引入了一种受System-One/System-Two认知启发的智能体记忆架构,通过提升分数和加快操作,增强长期AI智能体的效率和效果。
@NathanFlurry:无炒作的JEV解释:JEV并不取代GPT/Claude,JEV只是一个*非常*智能的switch语句,比如如果2…
Diogo Almeida发布了JEV,这是一个新的AI模型,它作为智能switch语句处理分类和路由等任务,声称在速度和效率上显著优于现有模型。
每次我从Cursor切换到Claude Code,都会丢失一半项目上下文
一位开发者分享了在Cursor、Claude Code和Codex之间切换时丢失上下文的困扰,以及他们如何使用MEMMY解决这一问题。MEMMY是一个将聊天历史同步到所有代理共享记忆中心的工具。
Jev – 在X平台上的Jev演示精选、工具、技能与集成
本文汇集了Jev(TypeSafe AI的类型化决策模型)的演示、工具、技能与集成,旨在为开发者提供入门参考。