npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

evermemory

v2.2.0

Published

Deterministic memory plugin for OpenClaw — persistent, inspectable, governable AI memory.

Readme

EverMemory

它会帮助 agent 记住用户偏好、长期约束、反复出现的事实和会话上下文,并在合适的时候把这些信息重新带回来。它不是简单地把对话原文塞进数据库,而是用本地存储、受控写入和受控召回,把记忆变成 briefing、画像和真正可用的上下文。

一眼看懂

| 它做什么 | 为什么有用 | | --- | --- | | 记住偏好、身份事实、约束条件和工作上下文 | agent 不需要每次新会话都重新开始 | | 把记忆落到本地 SQLite | 记忆更稳定、可持续,也更容易检查 | | 用受控写入和受控召回来治理记忆 | 降低噪音堆积,让记忆更有信号 | | 把召回结果组织成 briefing、画像和规则上下文 | 找回来的内容是 agent 真正能消费的形式 | | 支持可选语义召回和可选 Butler 层 | 需要更深能力时可以扩展,但不是强制依赖 |

为什么它不一样

  • 它记住的不只是聊天历史,还包括偏好、身份事实、约束条件、重复模式和工作上下文。
  • 它把记忆落到本地 SQLite,而不是把“记住了”建立在脆弱的短期上下文上。
  • 它有写入和召回治理,不是看到什么都盲目保存。
  • 它可以把记忆组织成 briefing、画像和规则上下文,而不是把一长串原始记录重新塞回提示词。
  • 在需要时,它还能接入可选的语义召回,以及可选的 Butler 战略层。

一个具体场景

假设用户对你的 OpenClaw agent 说过:

  • “代码评审意见尽量简洁。”
  • “我在 Asia/Shanghai 时区工作。”
  • “不要每次新会话都重新问我 onboarding 问题。”

有了 EverMemory,这些信息就不需要反复重复。后续会话里,系统可以把这些事实重新找回来,结合当前任务重新排序,再以 recall 结果、session briefing 或画像上下文的方式重新喂给 agent。

这就是它存在的意义:不是单纯“记住”,而是以 agent 真正能用的方式把记忆带回来。

快速开始

作为 OpenClaw 插件安装

openclaw plugins install [email protected]
openclaw plugins enable evermemory
openclaw config set plugins.slots.memory evermemory
openclaw gateway restart

作为 SDK 安装

npm install evermemory

如果你主要把它当成 OpenClaw 插件来评估,建议先走上面的插件安装路径,再继续阅读 docs/GUIDE.md

你会得到什么

  • 基于 better-sqlite3 的 SQLite 持久化记忆存储
  • 面向 OpenClaw 工作流的受控记忆写入与召回
  • 把重要上下文重新带回来的 recall 与 session briefing 流程
  • 用于长期协作的画像投影与规则治理能力
  • 用于迁移和备份的导入导出工具
  • 可选的语义召回能力,可接本地 embedding 或 OpenAI embedding
  • 可选的 Butler 战略层,用于摘要、复盘和更广义的上下文覆盖

工作方式

  1. 捕获 agent 在消息、工具输出和会话事件中识别可能值得记住的内容。
  2. 存储 EverMemory 判断哪些内容应该持久化,然后写入本地 SQLite 记忆库。
  3. 召回 后续查询会通过受控的关键词、结构化和可选语义检索找回相关记忆。
  4. 组织与治理 找回来的记忆可以进入 briefing、画像投影和规则流程,让 agent 不必每次都从零开始。

最小 SDK 示例

import { initializeEverMemory } from 'evermemory';

const em = initializeEverMemory({
  databasePath: './memory.db',
});

em.evermemoryStore({
  content: '用户希望代码评审意见更简洁。',
  source: { kind: 'tool', actor: 'system' },
  scope: { userId: 'user-1' },
});

const recall = await em.evermemoryRecall({
  query: '代码评审偏好',
  mode: 'hybrid',
  scope: { userId: 'user-1' },
  limit: 5,
});

运行要求

  • Node.js >=22
  • OpenClaw peer dependency >=2026.3.22 <2027
  • better-sqlite3 原生依赖
  • 本地 embedding 需要 sharp@xenova/transformers

当前注意事项

  • 当前维护的公开文档,以 docs/INDEX.md 链出的内容为准。历史内部资料不应被视为当前产品承诺。
  • 当前仓库快照下,npm run check 通过。
  • 当前仓库快照下,npm test 在发布打包覆盖上仍有失败,因此不能把原生依赖打包描述为“已完全验证”。
  • npm pack --dry-run 通过,但发布打包可信度仍然受上面的失败测试约束。
  • 语义召回是可选能力,embedding 依赖不可用时会降级。
  • Butler 是可选层,但会显著扩大系统复杂度和运维面。

文档入口

开发视角的仓库状态

npm install
npm run check
npm test
npm pack --dry-run

如果你是维护者或准备二次开发,建议从 docs/CONTRIBUTING.md 开始。