Token导航 LogoToken导航

Agent Skill · 研究检索

neolata-mem(新奥拉塔内存)

neolata-mem 用于查找、检索和筛选相关信息,适合在 OpenClaw 中需要根据关键词、任务场景或来源线索快速定位候选结果时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

neolata-mem 是研究检索类 Agent Skill,可用宿主为 OpenClaw,通过ClawHub获取,权限为接触敏感数据;许可证为 MIT-0,第三方扫描已通过,按安装量在研究检索类的 73,675 个 Skill 里排第 7,058。

总安装 20,077周安装 845GitHub Stars 公开资料未说明下载 7,030核验 2026-05-01

安装说明

本站只整理中文说明,不托管安装包,也不代用户安装。
GitHub
许可证
MIT-0
版本
0.8.5

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:neolata-mem(新奥拉塔内存)
来源仓库:https://github.com/jeremiaheth/neolata-mem
安装命令:
openclaw skills install neolata-mem
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 OpenClaw 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

ClawHubOpenClaw
openclaw skills install neolata-mem

这个 Skill 是做什么的

研究检索类 Skill 主要解决「找资料、核对事实、把来源整理清楚」的问题,通常会让助手先检索再总结。

图结构本地内存引擎,支持向量与关键字混合检索。适用于长期记忆存储、知识链接与冲突消解。neolata-mem 属于研究检索类 Skill,可作为该场景下的辅助能力补充。在代理需要解释性推理或 Zettelkasten 式笔记时使用。安装命令:openclaw skills install neolata-mem。

数据存储于本地,但建议定期备份以防丢失。

上手步骤

4 步
  1. 1

    确认自己的宿主工具

    公开资料标注支持 OpenClaw;先确认自己用的是其中之一,再按对应工具的 Skills 目录放置。

  2. 2

    拿到安装命令

    可以直接复制的命令是 openclaw skills install neolata-mem;命令里的占位符换成自己的路径或密钥再执行。

  3. 3

    安装后重启宿主

    命令执行完要完全退出宿主工具再打开,让新装的 Skill 被重新扫描到,否则列表里可能看不到。

  4. 4

    按最小权限试用

    它需要接触敏感数据,先在测试目录或测试账号里跑,确认没问题再放到正式项目。

常见问题

6 条

neolata-mem 怎么安装?

在终端执行 openclaw skills install neolata-mem。装完完全退出宿主工具再打开,让它重新扫描本地 Skill。

neolata-mem 支持哪些 AI 工具?

公开资料标注支持 OpenClaw。其他工具只要能读取本地 Skill 目录,一般也能手动放进去,但要自己确认触发方式是否一致。

neolata-mem 需要什么权限?

权限级别是接触敏感数据。该 Skill 可能接触密钥、Token、环境变量或敏感配置,应进入高风险复核队列,默认不自动发布。

neolata-mem 是免费的吗?

来源标注的许可证是 MIT-0。本站不代收任何费用,也不托管安装包;能否商用、要不要署名,以许可证原文为准。

neolata-mem 用的人多吗?

公开数据是累计安装 20,077 次,近一周安装 845 次,下载 7,030 次。这些数字来自第三方目录统计,只能当作热度参考,不代表质量或安全性。

neolata-mem 安全吗?

第三方扫描结果为通过,但这只覆盖已知的静态检查项,不能替代自己读一遍源码和安装命令。

值得选的地方和要先想清楚的地方

值得选的地方

  • 专注 OpenClaw 一种宿主,触发方式和使用习惯不用来回切换。
  • 许可证明确为 MIT-0,商用和分发边界好判断。
  • 第三方扫描已通过,常见的高风险行为没有命中。

先想清楚的地方

  • 需要接触敏感数据,装到常用环境前要先评估影响面。
  • 第三方目录整理,版本更新和行为细节以来源仓库为准。

适不适合你

更适合

  • 已经在用 OpenClaw,想直接扩展它能力的人。
  • 需要处理研究检索类任务、又不想每次都手写提示词的人。
  • 需要许可证清楚、并且有第三方扫描结果的团队项目。

不太适合

  • 环境里有大量密钥、凭证,不方便给第三方 Skill 读取的人。
  • 需要厂商级技术支持和 SLA 的生产系统。

研究检索类 Skill 对比

6 个同类
Skill总安装GitHub 星权限许可证扫描
find-skills

寻找技能 · Codex、Claude

31,199,81316,486操作浏览器MIT有提醒
self-improving-agent

自我改进 Agent · OpenClaw

16,464,0023,396接触敏感数据MIT-0通过
soultrace

灵魂追踪 · Codex、Claude

7,588,94412需要联网未明确有提醒
self-improving

自我完善 · OpenClaw

6,829,2841,046需要联网MIT-0通过
microsoft-foundry

微软代工厂 · Codex、Claude

6,614,144764调用外部服务未明确有提醒
neolata-mem

新奥拉塔内存 · 本页

20,077—接触敏感数据MIT-0通过

按安装量取同分类前几名;数字来自第三方目录统计,只作热度参考,不代表质量结论。

SKILL.md 原文

name
neolata-mem
version
0.8.4
description
Graph-native memory engine for AI agents — hybrid vector+keyword search, biological decay, Zettelkasten linking, trust-gated conflict resolution, explainability, episodes, compression & consolidation. Zero dependencies. npm install and go.
metadata
openclaw
requires
bins
optionalEnv
dataFlow
local
remote
note
No data leaves the host unless you explicitly configure a remote backend, embedding provider, LLM, or webhook. Default config is fully local (JSON storage + no embeddings).
securityNotes
license
Elastic-2.0
homepage
https://github.com/Jeremiaheth/neolata-mem
repository
https://github.com/Jeremiaheth/neolata-mem

neolata-mem — Agent Memory Engine

Graph-native memory for AI agents with hybrid search, biological decay, and zero infrastructure.

npm package: @jeremiaheth/neolata-mem Repository: github.com/Jeremiaheth/neolata-mem License: Elastic-2.0 | Tests: 367/367 passing (34 files) | Node: ≥18

When to Use This Skill

Use neolata-mem when you need:

  • Persistent memory across sessions that survives context compaction
  • Semantic search over stored facts, decisions, and findings
  • Memory decay so stale information naturally fades
  • Multi-agent memory with cross-agent search and graph linking
  • Conflict resolution — detect and evolve contradictory memories

Do NOT use if:

  • You only need OpenClaw's built-in memorySearch (keyword + vector on workspace files)
  • You want cloud-hosted memory (use Mem0 instead)
  • You need a full knowledge graph database (use Graphiti + Neo4j)

Install

npm install @jeremiaheth/neolata-mem

No Docker. No Python. No Neo4j. No cloud API required.

Supply-chain verification: This package has zero runtime dependencies and no install scripts. Verify before installing: ``bash # Check for install scripts (should show only "test"): npm view @jeremiaheth/neolata-mem scripts # Check for runtime deps (should be empty): npm view @jeremiaheth/neolata-mem dependencies # Audit the tarball contents (15 files, ~40 kB): npm pack @jeremiaheth/neolata-mem --dry-run `` Source is fully auditable at github.com/Jeremiaheth/neolata-mem.

Security & Data Flow

Default configuration is fully local — JSON files on disk, no network calls, no embeddings, no external services.

Data only leaves the host if you explicitly configure one of these:

FeatureWhat leavesWhere it goesHow to avoid
Embeddings (OpenAI/NVIDIA/Azure)Memory textEmbedding API endpointUse noop embeddings or Ollama (local)
LLM (OpenAI/OpenClaw/Ollama)Memory text for extraction/compressionLLM API endpointDon't configure llm option, or use Ollama
Supabase storageAll memory dataYour Supabase projectUse json or memory storage (default)
Webhook writethroughStore/decay event payloadsYour webhook URLDon't configure webhookWritethrough

Key security properties:

  • Only 2 env vars are read directly by code: OPENAI_API_KEY and OPENCLAW_GATEWAY_TOKEN. All others (Supabase, NVIDIA, Azure) are passed via explicit config objects.
  • All provider URLs are validated against SSRF (private IPs blocked, cloud metadata blocked).
  • Supabase: prefer anon key + RLS over service key. Service key bypasses row-level security.
  • JSON storage uses atomic writes (temp file + rename) to prevent corruption.
  • All user content sent to LLMs is XML-fenced with injection guards.
  • Test safely with storage: { type: 'memory' } — nothing touches disk or network.

See docs/guide.md § Security for the full security model.

Quick Start (Zero Config)

import { createMemory } from '@jeremiaheth/neolata-mem';

const mem = createMemory();
await mem.store('agent-1', 'User prefers dark mode');
const results = await mem.search('agent-1', 'UI preferences');

Works immediately with local JSON storage and keyword search. No API keys needed.

With Semantic Search

const mem = createMemory({
  embeddings: {
    type: 'openai',
    apiKey: process.env.OPENAI_API_KEY,
    model: 'text-embedding-3-small',
  },
});

// Agent IDs like 'kuro' and 'maki' are just examples — use any string.
await mem.store('kuro', 'Found XSS in login form', { category: 'finding', importance: 0.9 });
const results = await mem.search('kuro', 'security vulnerabilities');

Supports 5+ embedding providers: OpenAI, NVIDIA NIM, Ollama, Azure, Together, or any OpenAI-compatible endpoint.

Key Features

Hybrid Search (Vector + Keyword Fallback)

Uses semantic similarity when embeddings are configured; falls back to tokenized keyword matching when they're not:

// With embeddings → vector cosine similarity search
// Without embeddings → normalized keyword matching (stop word removal, lowercase, dedup)
const results = await mem.search('agent', 'security vulnerabilities');

Keyword search uses an inverted token index for O(1) lookups. When >500 memories exist, vector search pre-filters candidates using token overlap before cosine similarity (candidate narrowing).

Biological Decay

Memories fade over time unless reinforced. Old, unaccessed memories naturally lose relevance:

await mem.decay();        // Run maintenance — archive/delete stale memories
await mem.reinforce(id);  // Boost a memory to resist decay

Memory Graph (Zettelkasten Linking)

Every memory is automatically linked to related memories by semantic similarity:

const links = await mem.links(memoryId);     // Direct connections
const path = await mem.path(idA, idB);       // Shortest path between memories
const clusters = await mem.clusters();        // Detect topic clusters

Conflict Resolution & Quarantine

Detect contradictions before storing — with claim-based structural detection or LLM-based semantic detection:

// Structural (no LLM needed): claim-based conflict detection
await mem.store('agent', 'Server uses port 443', {
  claim: { subject: 'server', predicate: 'port', value: '443' },
  provenance: { source: 'user_explicit', trust: 1.0 },
  onConflict: 'quarantine',  // low-trust conflicts quarantined for review
});

// Semantic (requires LLM): LLM classifies as conflict/update/novel
await mem.evolve('agent', 'Server now uses port 8080');

// Review quarantined memories
const quarantined = await mem.listQuarantined();
await mem.reviewQuarantine(quarantined[0].id, { action: 'activate' });

Predicate Schema Registry

Define per-predicate rules for conflict handling, normalization, and deduplication:

const mem = createMemory({
  predicateSchemas: {
    'preferred_language': { cardinality: 'single', conflictPolicy: 'supersede', normalize: 'lowercase_trim' },
    'spoken_languages':   { cardinality: 'multi', dedupPolicy: 'corroborate' },
    'salary':             { cardinality: 'single', conflictPolicy: 'require_review', normalize: 'currency' },
  },
});

Options: cardinality (single/multi), conflictPolicy (supersede/require_review/keep_both), normalize (none/trim/lowercase/lowercase_trim/currency), dedupPolicy (corroborate/store).

Explainability API

Understand why search returned or filtered specific memories:

const results = await mem.search('agent', 'query', { explain: true });
console.log(results.meta);        // query options, result count
console.log(results[0].explain);  // retrieved, rerank, statusFilter details

const detail = await mem.explainMemory(memoryId);
// { id, status, trust, confidence, provenance, claimSummary }

Multi-Agent Support

await mem.store('kuro', 'Vuln found in API gateway');
await mem.store('maki', 'API gateway deployed to prod');
const all = await mem.searchAll('API gateway');  // Cross-agent search

Episodes (Temporal Grouping)

Group related memories into named episodes:

const ep = await mem.createEpisode('Deploy v2.0', [id1, id2, id3], { tags: ['deploy'] });
const ep2 = await mem.captureEpisode('kuro', 'Standup', { start: '...', end: '...' });
const results = await mem.searchEpisode(ep.id, 'database migration');
const { summary } = await mem.summarizeEpisode(ep.id);  // requires LLM

Memory Compression & Consolidation

Consolidate redundant memories into digests:

await mem.compress([id1, id2, id3], { method: 'llm', archiveOriginals: true });
await mem.compressEpisode(episodeId);
await mem.autoCompress({ minClusterSize: 3, maxDigests: 5 });

// Full maintenance: dedup → contradictions → corroborate → compress → prune
await mem.consolidate({ dedupThreshold: 0.95, compressAge: 30, pruneAge: 90 });

Labeled Clusters

Persistent named groups:

await mem.createCluster('Security findings', [id1, id2]);
await mem.autoLabelClusters();  // LLM labels unlabeled clusters

Event Emitter

Hook into the memory lifecycle:

mem.on('store', ({ agent, content, id }) => { /* ... */ });
mem.on('search', ({ agent, query, results }) => { /* ... */ });
mem.on('decay', ({ archived, deleted, dryRun }) => { /* counts, not arrays */ });

Batch APIs

Amortize embedding calls and I/O with bulk operations:

// Store many memories in one call (single embed batch + single persist)
const result = await mem.storeMany('agent', [
  { text: 'Fact one', category: 'fact', importance: 0.8 },
  { text: 'Fact two', tags: ['infra'] },
  'Plain string also works',
]);
// { total: 3, stored: 3, results: [{ id, links }, ...] }

// Search multiple queries in one call (single embed batch)
const results = await mem.searchMany('agent', ['query one', 'query two']);
// [{ query: 'query one', results: [...] }, { query: 'query two', results: [...] }]

Batch operations include:

  • Atomic rollback on persist failure (memories, indexes, backlinks all reverted)
  • Cross-linking within the same batch
  • Configurable caps: maxBatchSize (default 1000), maxQueryBatchSize (default 100)

Bulk Ingestion with Fact Extraction

Extract atomic facts from text using an LLM, then store each with A-MEM linking:

const mem = createMemory({
  embeddings: { type: 'openai', apiKey: process.env.OPENAI_API_KEY },
  extraction: { type: 'llm', apiKey: process.env.OPENAI_API_KEY },
});

const result = await mem.ingest('agent', longText);
// { total: 12, stored: 10, results: [...] }

CLI

npx neolata-mem store myagent "Important fact here"
npx neolata-mem search myagent "query"
npx neolata-mem decay --dry-run
npx neolata-mem health
npx neolata-mem clusters

OpenClaw Integration

neolata-mem complements OpenClaw's built-in memorySearch:

  • memorySearch = searches your workspace .md files (BM25 + vector)
  • neolata-mem = structured memory store with graph, decay, evolution, multi-agent

Use both together: memorySearch for workspace file recall, neolata-mem for agent-managed knowledge.

Recommended Setup

In your agent's daily cron or heartbeat:

// Store important facts from today's session
await mem.store(agentId, 'Key decision: migrated to Postgres', {
  category: 'decision',
  importance: 0.8,
  tags: ['infrastructure'],
});

// Run decay maintenance
await mem.decay();

Comparison

Featureneolata-memMem0OpenClaw memorySearch
Local-first (data stays on machine)✅ (default)❌✅
Hybrid search (vector + keyword)✅❌✅
Memory decay✅❌❌
Memory graph / linking✅❌❌
Conflict resolution✅Partial❌
Quarantine lane✅❌❌
Predicate schemas✅❌❌
Explainability API✅❌❌
Episodes & compression✅❌❌
Labeled clusters✅❌❌
Multi-agent✅✅Per-agent
Zero infrastructure✅❌✅
Event emitter✅❌❌
Batch APIs (storeMany/searchMany)✅❌❌
npm package✅✅Built-in

Security

neolata-mem includes hardening against common agent memory attack vectors:

  • Prompt injection mitigation: XML-fenced user content in all LLM prompts + structural output validation
  • Input validation: Agent names (alphanumeric, max 64), text length caps (10KB), bounded memory count (50K), batch size caps (1000 store / 100 query)
  • Batch atomicity: storeMany rolls back all memories, indexes, and backlinks on persist failure
  • SSRF protection: All provider URLs validated via validateBaseUrl() — blocks cloud metadata endpoints (169.254.169.254), private IP ranges, non-HTTP protocols
  • Supabase hardening: UUID validation on query params, error text sanitized (strips tokens/keys), upsert-based save (crash-safe), 429 retry with backoff
  • Atomic writes: Write-to-temp + rename prevents file corruption
  • Path traversal guards: Storage directories and write-through paths validated with resolve() + prefix checks
  • Cryptographic IDs: crypto.randomUUID() — no predictable memory references
  • Retry bounds: Exponential backoff with max 3 retries on 429s
  • Error surfacing: Failed conflict detection returns { error } instead of silent fallthrough

Supabase key guidance: Prefer the anon key with Row Level Security (RLS) policies over the service role key. The service key bypasses RLS and grants full access to all stored memories. Only use it for admin/migration tasks.

See the full security section for details.

Data Residency & External API Usage

Local-only mode (default): Memories are stored as JSON at ./neolata-mem-data/graph.json (relative to CWD). No data leaves your machine. Keyword search works without any API keys.

With embeddings/extraction/LLM: When you configure an external provider (OpenAI, NIM, Ollama, etc.), your memory text is sent to that provider's API for embedding or extraction. This is opt-in — you must explicitly provide an API key and base URL.

ModeData sent externally?Storage location
Default (no config)❌ No./neolata-mem-data/graph.json
Ollama embeddings❌ No (local)./neolata-mem-data/graph.json
OpenAI/NIM embeddings⚠️ Memory text → provider./neolata-mem-data/graph.json
Supabase storage⚠️ All data → SupabaseSupabase PostgreSQL
LLM conflict resolution⚠️ Memory text → providerStorage unchanged

To keep all data local: Use Ollama for embeddings and JSON storage. No API keys needed for keyword-only search.

Links

平台分布

OpenClaw

85.65%
按下载量换算6,021

安全审计

VirusTotal

通过

ClawScan

通过

Static analysis

未展示

权限和风险

接触敏感数据

该 Skill 可能接触密钥、Token、环境变量或敏感配置,应进入高风险复核队列,默认不自动发布。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。目前只有一个公开来源,建议同时核对源仓库。

继续浏览同类 Skills