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

@evermind-ai/openclaw-plugin

v2.1.0

Published

EverOS OpenClaw Plugin — persistent memory through natural conversation

Readme

EverOS OpenClaw Plugin

通过自然语言对话为 OpenClaw / 龙虾 提供持久记忆能力。

这个插件保留当前 OpenClaw 的 context-engine 架构,并连接到自托管的 EverOS backend。其后端能力由 EverOS 提供。

它能做什么

  • 在每次回复前通过 assemble() 自动回忆相关记忆
  • 在每轮对话后通过 afterTurn() 自动保存新内容
  • 用户只需要正常聊天
  • 不需要手动调用 memory_storememory_search

重要说明:

  • 这是一个 context-engine 插件
  • 它不是 memory slot 插件
  • 为避免冲突,安装时会把 plugins.slots.memory 设置为 none

快速开始

推荐安装方式:

npx --yes --package @evermind-ai/openclaw-plugin everos-install

安装器会:

  • 复用已有的 ~/.openclaw/openclaw.json
  • 把插件路径写入 plugins.load.paths
  • evermind-ai-everos 写入 plugins.allow
  • 设置 plugins.slots.contextEngine = "evermind-ai-everos"
  • 设置 plugins.slots.memory = "none"
  • 为插件创建或补齐默认配置

安装完成后:

openclaw gateway restart

然后用自然语言验证:

记住:我喜欢意式浓缩。
我喜欢什么咖啡?

后端

默认后端地址:

http://localhost:1995

健康检查:

curl http://localhost:1995/health

如果你还没有启动 EverOS backend:

git clone https://github.com/EverMind-AI/EverOS.git
cd EverOS
docker compose up -d
curl -LsSf https://astral.sh/uv/install.sh | sh
uv sync
cp env.template .env
# 编辑 .env
uv run python src/run.py

自然语言记忆是如何工作的

运行时流程:

  1. 用户发送一条普通消息。
  2. assemble() 去 EverOS backend 搜索相关记忆。
  3. 命中的记忆被注入为上下文。
  4. OpenClaw 正常回复。
  5. afterTurn() 把这一轮的新内容写回 EverOS backend。

所以用户看到的体验是:

  • “记住:我偏好深色模式”
  • 之后再问:“我偏好什么 UI 风格?”

整个过程不需要显式调用记忆工具。

OpenClaw 配置示例

期望的配置结构如下:

{
  "plugins": {
    "allow": ["evermind-ai-everos"],
    "slots": {
      "memory": "none",
      "contextEngine": "evermind-ai-everos"
    },
    "entries": {
      "evermind-ai-everos": {
        "enabled": true,
        "config": {
          "baseUrl": "http://localhost:1995",
          "userId": "everos-user",
          "groupId": "everos-group",
          "topK": 5,
          "memoryTypes": ["episodic_memory"],
          "retrieveMethod": "hybrid",
          "apiVersion": "auto",
          "agentMode": false
        }
      }
    }
  }
}

配置项

| 字段 | 默认值 | 说明 | | ---------------- | ----------------------- | --------------------------------------------------------------------------- | | baseUrl | http://localhost:1995 | EverOS backend 地址 | | userId | everos-user | 记忆归属的用户标识 | | groupId | everos-group | 共享记忆命名空间 | | topK | 5 | 最多检索条目数 | | memoryTypes | ["episodic_memory"] | 要搜索的记忆类型;开启 agentMode 时会自动加入 agent_memory | | retrieveMethod | hybrid | 检索模式(keyword / vector / hybrid / agenticrrf 已弃用) | | apiVersion | auto | 后端 API 版本;auto 会在启动时探测一次,v1 / legacy 强制锁定 | | agentMode | false | 是否捕获完整的工具调用轨迹 — 见下方 Agent Memory 章节 |

Agent Memory

当后端是 V1 EverMemOS(自动探测)时,把 agentMode 设成 true 可以开启更丰富的记忆链路 —— 不只存 user / assistant 文本,而是捕获 agent 的完整工具调用轨迹

"config": {
  ...
  "agentMode": true
}

开启后会发生什么

  • 写路径POST /api/v1/memories(仅文本)切到 POST /api/v1/memories/agent —— 整轮包括 assistant 的 tool_calls 和按 tool_call_id 串联起来的 tool result 都会发给后端。
  • 检索路径自动把 agent_memory 加进搜索请求,会同时召回:
    • agent_case —— 具体的过往轨迹(任务意图、agent 实际采用的方法、关键决策洞察、质量分)
    • agent_skill —— 由多个 case 聚类抽出的可复用模式(名字、描述、模式正文、置信度、成熟度)
  • Prompt 注入在原本的 <episodic> 前面增加 <skills><cases> 块 —— 高置信度的可复用模式优先注入。

为什么值得 opt in

实测一个工具密集任务(4 天京都旅行规划,调用 web_search + doc_create + 飞书 API 自定义脚本):

  • 第一次跑:agent 用了 18 条消息的工具链(搜索、构造 blocks JSON、写 Python 脚本调用飞书 API 追加内容)才完成任务。
  • 一次类似的后续问题("再做一个 7 天的札幌旅行规划"):上一轮抽出的 skill Multi-Part Travel Planning with Document Automation 被注入 prompt,agent 直接复用模式,只用 2 条消息就给出答案,完全跳过了探索性的工具调用。

需要知道的成本:

| 成本 | 说明 | | ------ | ----------------------------------------------------------------------------------- | | 每轮写入更大 | 轨迹 POST 是纯文本的 5-10 倍 | | 后端 LLM 成本 | 每条 trajectory 在后端会触发一次 agent_case 抽取的 LLM 调用(约 7 秒,后端异步执行) | | 抽取延迟 | case 在对话边界(或 flush)触发时抽出;单轮短 DM 可能要等到累积够内容才会产出 case | | 后端版本要求 | 必须 V1 EverMemOS;老后端上插件会一次性 warn 并自动降级到纯文本写入 |

如果你不开 agentMode,插件行为和 2.0 完全一致(纯文本写入,只有 episodic memory)。在 V1 后端上,插件会在启动时打一条一次性提示,温和地建议你启用:

[evermind-ai-everos] tip: backend supports V1 agent memory.
Set "agentMode": true in the plugin config to enable agent_case / agent_skill retrieval.

手动安装

npm install -g @evermind-ai/openclaw-plugin
everos-install

故障排查

| 问题 | 解决方式 | | --------- | --------------------------------------------------------------------- | | 插件未加载 | 检查 plugins.allowplugins.load.pathsplugins.slots.contextEngine | | 后端连接失败 | 检查 baseUrl,并执行 curl <baseUrl>/health | | 没有回忆出记忆 | 检查后端数据,并尝试更具体的问题 | | 没有保存记忆 | 检查 EverOS backend 写入接口是否正常 | | 与其他记忆插件冲突 | 确认 plugins.slots.memory = "none" |

相关文件

  • index.js:插件入口(注册)
  • src/engine.js:ContextEngine 生命周期实现
  • src/convert.js:OpenClaw 消息转 EverOS 格式
  • src/api.js:EverOS backend REST API 客户端
  • src/messages.js:消息归一化与轮次收集
  • src/prompt.js:记忆搜索结果解析与 prompt 构建
  • src/subagent-assembler.js:记忆上下文组装
  • bin/install.js:安装器与配置引导
  • openclaw.plugin.json:插件元数据与配置结构

许可证

Apache-2.0