Skip to main content
Glama

projectmem(pmem)

中文 | English

License: MIT Node

零依赖的项目记忆编译器——让 AI 编程 agent 跨会话记住你的项目:做过什么、定了什么、踩过什么坑,代码一变记忆自动变旧。

Zero-dependency project memory compiler for AI coding agents. Memory that expires by git, carries receipts, runs assertions, and shows its own ROI.

一个 js 文件 · 0 依赖 · Node ≥ 20 · Windows/macOS/Linux · 中文友好


为什么

每个 AI 编程 agent 都有同一个病:新会话失忆。你要重新粘贴项目背景;agent 自带的 CLAUDE.md / MEMORY.md 像便利贴——只增不减、搜不了、过期了也不知道。

现有方案(agentmemoryclaude-mem 等)验证了需求,但它们依赖重(固定版本二进制引擎 / Bun+uv+Chroma)、原生 Windows 是二等公民、数据进 SQLite 黑盒。

Related MCP server: Projectmem

核心理念:记忆是编译产物,不是笔记仓库

笔记仓库(现有方案)

记忆编译器(projectmem)

记忆从哪来

LLM 压缩会话 / 手写

从项目源确定性编译:git + 会话 + 文档,LLM 只是可选润色

何时过期

按时间衰减(猜)

git 依赖驱动(算):登记的文件一变,记忆精确标旧

可信度

无出处

每条带证据收据:commit hash / 文件路径

对错自证

不能

断言式记忆:决策挂上可执行的检查,像测试一样会"挂"

效果度量

拍脑袋

命中率遥测 + ROI 账本:省了多少 token,账上见

五个机制在 GitHub 上逐条查新(2026-09,详见 docs/feasibility-zh.md 附录 B):依赖驱动失效仅 1 个 0★ 实验仓库撞过方向,其余为 0 结果。

快速开始

Windows:下载/克隆仓库 → 双击 install.cmd → 完事。(没有 Node 也没关系,脚本会指路)

任何系统node pmem.js setup——自动装好全局 pmem 命令并配置 PATH,然后打印三份"即贴即用"配置:MCP 接入、SessionStart 自动注入钩子、agent 自动记忆约定

极简党:不装也行,就地用——

node pmem.js init
node pmem.js add decision "本项目零依赖,不许引入 npm 运行时依赖" --assert no-deps --file package.json
node pmem.js query 零依赖

第一条记忆就带上了完整范式:证据(自动记录 commit + 依赖文件)、失效源(package.json 一变它就变旧)、断言(谁真装了依赖,pmem check 当场红牌)。

想要"全自动"?两步做完上面的事

  1. pmem agent-instructions 输出的约定块贴进 CLAUDE.md / AGENTS.md——从此 agent 每次会话开始自动读记忆、过程中自动记决策/进度/坑、结束前自动查失效;

  2. pmem setup 打印的 SessionStart 钩子粘进 agent 的 settings.json——即使 agent 偷懒,会话启动也会强制注入记忆(静默跑失效扫描 + 断言 + 按预算注入)。

命令总览

命令

作用

pmem add <类型> <正文> [--file 路径] [--tag 标签] [--assert 检查]

写入记忆(decision/progress/pitfall/preference/fact/note)

pmem note <正文>

快捷便签

pmem query <关键词...>

中文友好相关度检索(CJK bigram + BM25-lite)

pmem stale

失效扫描:登记文件删除/变更 → 记忆标旧,改动撤销自动复活

pmem fresh <id>

人工复核后刷新失效基线

pmem check

跑所有断言;有失败退出码 1,可直接挂 CI

pmem inject [--budget 1500]

按 token 预算装箱高价值记忆(给 hooks 用)

pmem roi

ROI 账本:每条记忆省/耗/净收益(粗估)

pmem list / show / archive / render / log

日常管理

pmem mcp

启动 MCP stdio server

接进你的 agent

MCP(Claude Code / ZCode / Cursor 等通用,server 以启动时的工作目录为项目根):

# Claude Code
claude mcp add projectmem -- node /path/to/pmem.js mcp
// 其他客户端的 mcpServers 配置
{ "projectmem": { "command": "node", "args": ["/path/to/pmem.js", "mcp"] } }

工具集:pmem_add(带证据写入)、pmem_query(检索)、pmem_inject(预算注入)、pmem_stale(失效扫描)、pmem_check(断言)、pmem_showpmem_roi

会话启动自动注入(以 Claude Code hooks 为例,加进 settings.json;或直接跑 pmem setup 让它帮你生成):

{
  "hooks": {
    "SessionStart": [{ "hooks": [{ "type": "command", "command": "node /path/to/pmem.js hook session-start" }] }]
  }
}

pmem hook session-start 一段输出做完三件事:静默失效扫描(git 驱动)→ 静默断言检查 → 按 1500 token 预算注入记忆,末尾附提醒行。

CI 卡口pmem check 退出码非 0 即失败——决策被违反或记忆过期,构建直接红。

安全

记忆要进 git、可能推上 GitHub——所以安全不是可选项,是默认行为:

  • 密钥防泄漏(写入即脱敏,默认开启):GitHub/OpenAI/AWS/Slack/Google 的 token、JWT、私钥块、password=… 类赋值,写入前自动替换为 [REDACTED:<类型>]原值不落盘。宁可漏存,不可泄密。

  • 完整性哈希链:事件日志每条带 SHA-256 链式哈希,pmem security verify 可检测历史记录被篡改(谁改过、第几行)。

  • 注入检测pmem security scan 会标记疑似提示注入的记忆("ignore previous instructions" 类),报告不阻断。

  • 路径围栏:登记文件依赖越出项目根(../、绝对路径外逃)直接拒绝。

  • CI 卡口pmem security scan(有发现退出码 1)与 pmem checkpmem security verify 都可挂 CI。

存储布局(全部可提交进 git)

.pmem/
├── events.jsonl   事件日志(append-only 审计流:add/fresh/archive/stale/inject/check)
├── index.json     机器态(原子写)
└── MEMORY.md      人读投影(自动重绘,勿手改)
  • 记忆数据在你手里:纯文本、可 diff、可备份、可跨机器同步。

  • 设计取舍:刻意不用 SQLite / 向量库。目标规模是单项目 ≤ 2000 条,纯 JSON + BM25-lite 完全够,换来零依赖、零编译、零黑盒。超了再升级(见路线图)。

与现成项目对比

维度

agentmemory (28.4k★)

claude-mem (46k+★)

projectmem

依赖

固定版本 iii 引擎二进制

Bun + uv + Chroma

0

原生 Windows

需手动装引擎,推荐 WSL2

安装链长

一等公民

记忆过期

时间衰减

git 依赖驱动 + 断言验证

记忆出处

commit/文件收据

效果度量

命中率 + ROI 账本

抓取成本

LLM 压缩

LLM 压缩

0 token(规则抽取)

路线图

  • P0:单文件 CLI + JSONL 事件日志 + 证据链 + 中文检索

  • P1:git 依赖失效扫描 + 断言 + 预算注入 + MCP stdio server

  • 🔶 P2(大半完成):命中率遥测、ROI 账本、SessionStart 自动注入钩子(hook session-start)、agent 自动记忆约定、一键安装(setup / install.cmd)已上线;会话转录自动摘要抓取进行中

  • P3:本地向量检索(openvino/MiniLM)、LLM 记忆润色(可选层)、4 层记忆分层

开发

npm test        # node --test test/(含 MCP stdio 往返测试)

调研、查新与可行性论证全文:docs/feasibility-zh.md

反馈与共建

  • 报 bug / 提需求Issues(模板会引导你贴诊断信息;先跑 pmem security scan 确认不带密钥)

  • 用法讨论 / 晒你的玩法Discussions

  • 觉得省下了重新交代背景的时间,就点个 ⭐——这是独立开发者的全部推广预算

  • 版本变更见 CHANGELOG.md

License

MIT © liv114514

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides AI coding assistants with persistent project memory to retain architectural decisions, code patterns, and domain knowledge across sessions. It stores data locally in a SQLite database, allowing agents to remember, recall, and manage project-specific context using full-text search.
    5 npm
    Apache 2.0
  • A
    license
    A
    quality
    A
    maintenance
    Local-first memory layer for AI coding agents — captures issues, attempts, fixes, and decisions, and warns at git commit before you repeat a mistake.
    17
    372 PyPI
    823
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Local-first project memory for AI coding agents. Records failed attempts, fragile files, and decisions per repo, and warns the agent via hooks before it repeats a recorded mistake.
    6
    47 npm
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Provides persistent project memory for AI coding agents, enabling context retention across sessions via event logging, briefing generation, and querying.
    MIT