← 返回 Skills 市场
jeremiaheth

Neolata Memory Engine

作者 HEIS AGENCY · GitHub ↗ · v0.8.5
cross-platform ✓ 安全检测通过
640
总下载
0
收藏
1
当前安装
12
版本数
在 OpenClaw 中安装
/install neolata-mem
功能描述
Graph-native memory engine for AI agents — hybrid vector+keyword search, biological decay, Zettelkasten linking, trust-gated conflict resolution, explainabil...
使用说明 (SKILL.md)

\r \r

neolata-mem — Agent Memory Engine\r

\r Graph-native memory for AI agents with hybrid search, biological decay, and zero infrastructure.\r \r npm package: @jeremiaheth/neolata-mem\r Repository: github.com/Jeremiaheth/neolata-mem\r License: Elastic-2.0 | Tests: 367/367 passing (34 files) | Node: ≥18\r \r

When to Use This Skill\r

\r Use neolata-mem when you need:\r

  • Persistent memory across sessions that survives context compaction\r
  • Semantic search over stored facts, decisions, and findings\r
  • Memory decay so stale information naturally fades\r
  • Multi-agent memory with cross-agent search and graph linking\r
  • Conflict resolution — detect and evolve contradictory memories\r \r Do NOT use if:\r
  • You only need OpenClaw's built-in memorySearch (keyword + vector on workspace files)\r
  • You want cloud-hosted memory (use Mem0 instead)\r
  • You need a full knowledge graph database (use Graphiti + Neo4j)\r \r

Install\r

\r

npm install @jeremiaheth/neolata-mem\r
```\r
\r
No Docker. No Python. No Neo4j. No cloud API required.\r
\r
> **Supply-chain verification:** This package has zero runtime dependencies and no install scripts. Verify before installing:\r
> ```bash\r
> # Check for install scripts (should show only "test"):\r
> npm view @jeremiaheth/neolata-mem scripts\r
> # Check for runtime deps (should be empty):\r
> npm view @jeremiaheth/neolata-mem dependencies\r
> # Audit the tarball contents (15 files, ~40 kB):\r
> npm pack @jeremiaheth/neolata-mem --dry-run\r
> ```\r
> Source is fully auditable at [github.com/Jeremiaheth/neolata-mem](https://github.com/Jeremiaheth/neolata-mem).\r
\r
## Security & Data Flow\r
\r
**Default configuration is fully local** — JSON files on disk, no network calls, no embeddings, no external services.\r
\r
Data only leaves the host if you **explicitly configure** one of these:\r
\r
| Feature | What leaves | Where it goes | How to avoid |\r
|---------|------------|---------------|-------------|\r
| Embeddings (OpenAI/NVIDIA/Azure) | Memory text | Embedding API endpoint | Use `noop` embeddings or Ollama (local) |\r
| LLM (OpenAI/OpenClaw/Ollama) | Memory text for extraction/compression | LLM API endpoint | Don't configure `llm` option, or use Ollama |\r
| Supabase storage | All memory data | Your Supabase project | Use `json` or `memory` storage (default) |\r
| Webhook writethrough | Store/decay event payloads | Your webhook URL | Don't configure `webhookWritethrough` |\r
\r
**Key security properties:**\r
- 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.\r
- All provider URLs are validated against SSRF (private IPs blocked, cloud metadata blocked).\r
- Supabase: prefer anon key + RLS over service key. Service key bypasses row-level security.\r
- JSON storage uses atomic writes (temp file + rename) to prevent corruption.\r
- All user content sent to LLMs is XML-fenced with injection guards.\r
- Test safely with `storage: { type: 'memory' }` — nothing touches disk or network.\r
\r
See `docs/guide.md § Security` for the full security model.\r
\r
## Quick Start (Zero Config)\r
\r
```javascript\r
import { createMemory } from '@jeremiaheth/neolata-mem';\r
\r
const mem = createMemory();\r
await mem.store('agent-1', 'User prefers dark mode');\r
const results = await mem.search('agent-1', 'UI preferences');\r
```\r
\r
Works immediately with local JSON storage and keyword search. No API keys needed.\r
\r
## With Semantic Search\r
\r
```javascript\r
const mem = createMemory({\r
  embeddings: {\r
    type: 'openai',\r
    apiKey: process.env.OPENAI_API_KEY,\r
    model: 'text-embedding-3-small',\r
  },\r
});\r
\r
// Agent IDs like 'kuro' and 'maki' are just examples — use any string.\r
await mem.store('kuro', 'Found XSS in login form', { category: 'finding', importance: 0.9 });\r
const results = await mem.search('kuro', 'security vulnerabilities');\r
```\r
\r
Supports **5+ embedding providers**: OpenAI, NVIDIA NIM, Ollama, Azure, Together, or any OpenAI-compatible endpoint.\r
\r
## Key Features\r
\r
### Hybrid Search (Vector + Keyword Fallback)\r
Uses semantic similarity when embeddings are configured; falls back to tokenized keyword matching when they're not:\r
```javascript\r
// With embeddings → vector cosine similarity search\r
// Without embeddings → normalized keyword matching (stop word removal, lowercase, dedup)\r
const results = await mem.search('agent', 'security vulnerabilities');\r
```\r
\r
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).\r
\r
### Biological Decay\r
Memories fade over time unless reinforced. Old, unaccessed memories naturally lose relevance:\r
```javascript\r
await mem.decay();        // Run maintenance — archive/delete stale memories\r
await mem.reinforce(id);  // Boost a memory to resist decay\r
```\r
\r
### Memory Graph (Zettelkasten Linking)\r
Every memory is automatically linked to related memories by semantic similarity:\r
```javascript\r
const links = await mem.links(memoryId);     // Direct connections\r
const path = await mem.path(idA, idB);       // Shortest path between memories\r
const clusters = await mem.clusters();        // Detect topic clusters\r
```\r
\r
### Conflict Resolution & Quarantine\r
Detect contradictions before storing — with claim-based structural detection or LLM-based semantic detection:\r
```javascript\r
// Structural (no LLM needed): claim-based conflict detection\r
await mem.store('agent', 'Server uses port 443', {\r
  claim: { subject: 'server', predicate: 'port', value: '443' },\r
  provenance: { source: 'user_explicit', trust: 1.0 },\r
  onConflict: 'quarantine',  // low-trust conflicts quarantined for review\r
});\r
\r
// Semantic (requires LLM): LLM classifies as conflict/update/novel\r
await mem.evolve('agent', 'Server now uses port 8080');\r
\r
// Review quarantined memories\r
const quarantined = await mem.listQuarantined();\r
await mem.reviewQuarantine(quarantined[0].id, { action: 'activate' });\r
```\r
\r
### Predicate Schema Registry\r
Define per-predicate rules for conflict handling, normalization, and deduplication:\r
```javascript\r
const mem = createMemory({\r
  predicateSchemas: {\r
    'preferred_language': { cardinality: 'single', conflictPolicy: 'supersede', normalize: 'lowercase_trim' },\r
    'spoken_languages':   { cardinality: 'multi', dedupPolicy: 'corroborate' },\r
    'salary':             { cardinality: 'single', conflictPolicy: 'require_review', normalize: 'currency' },\r
  },\r
});\r
```\r
\r
Options: `cardinality` (single/multi), `conflictPolicy` (supersede/require_review/keep_both), `normalize` (none/trim/lowercase/lowercase_trim/currency), `dedupPolicy` (corroborate/store).\r
\r
### Explainability API\r
Understand why search returned or filtered specific memories:\r
```javascript\r
const results = await mem.search('agent', 'query', { explain: true });\r
console.log(results.meta);        // query options, result count\r
console.log(results[0].explain);  // retrieved, rerank, statusFilter details\r
\r
const detail = await mem.explainMemory(memoryId);\r
// { id, status, trust, confidence, provenance, claimSummary }\r
```\r
\r
### Multi-Agent Support\r
```javascript\r
await mem.store('kuro', 'Vuln found in API gateway');\r
await mem.store('maki', 'API gateway deployed to prod');\r
const all = await mem.searchAll('API gateway');  // Cross-agent search\r
```\r
\r
### Episodes (Temporal Grouping)\r
Group related memories into named episodes:\r
```javascript\r
const ep = await mem.createEpisode('Deploy v2.0', [id1, id2, id3], { tags: ['deploy'] });\r
const ep2 = await mem.captureEpisode('kuro', 'Standup', { start: '...', end: '...' });\r
const results = await mem.searchEpisode(ep.id, 'database migration');\r
const { summary } = await mem.summarizeEpisode(ep.id);  // requires LLM\r
```\r
\r
### Memory Compression & Consolidation\r
Consolidate redundant memories into digests:\r
```javascript\r
await mem.compress([id1, id2, id3], { method: 'llm', archiveOriginals: true });\r
await mem.compressEpisode(episodeId);\r
await mem.autoCompress({ minClusterSize: 3, maxDigests: 5 });\r
\r
// Full maintenance: dedup → contradictions → corroborate → compress → prune\r
await mem.consolidate({ dedupThreshold: 0.95, compressAge: 30, pruneAge: 90 });\r
```\r
\r
### Labeled Clusters\r
Persistent named groups:\r
```javascript\r
await mem.createCluster('Security findings', [id1, id2]);\r
await mem.autoLabelClusters();  // LLM labels unlabeled clusters\r
```\r
\r
### Event Emitter\r
Hook into the memory lifecycle:\r
```javascript\r
mem.on('store', ({ agent, content, id }) => { /* ... */ });\r
mem.on('search', ({ agent, query, results }) => { /* ... */ });\r
mem.on('decay', ({ archived, deleted, dryRun }) => { /* counts, not arrays */ });\r
```\r
\r
### Batch APIs\r
Amortize embedding calls and I/O with bulk operations:\r
```javascript\r
// Store many memories in one call (single embed batch + single persist)\r
const result = await mem.storeMany('agent', [\r
  { text: 'Fact one', category: 'fact', importance: 0.8 },\r
  { text: 'Fact two', tags: ['infra'] },\r
  'Plain string also works',\r
]);\r
// { total: 3, stored: 3, results: [{ id, links }, ...] }\r
\r
// Search multiple queries in one call (single embed batch)\r
const results = await mem.searchMany('agent', ['query one', 'query two']);\r
// [{ query: 'query one', results: [...] }, { query: 'query two', results: [...] }]\r
```\r
\r
Batch operations include:\r
- Atomic rollback on persist failure (memories, indexes, backlinks all reverted)\r
- Cross-linking within the same batch\r
- Configurable caps: `maxBatchSize` (default 1000), `maxQueryBatchSize` (default 100)\r
\r
### Bulk Ingestion with Fact Extraction\r
Extract atomic facts from text using an LLM, then store each with A-MEM linking:\r
```javascript\r
const mem = createMemory({\r
  embeddings: { type: 'openai', apiKey: process.env.OPENAI_API_KEY },\r
  extraction: { type: 'llm', apiKey: process.env.OPENAI_API_KEY },\r
});\r
\r
const result = await mem.ingest('agent', longText);\r
// { total: 12, stored: 10, results: [...] }\r
```\r
\r
## CLI\r
\r
```bash\r
npx neolata-mem store myagent "Important fact here"\r
npx neolata-mem search myagent "query"\r
npx neolata-mem decay --dry-run\r
npx neolata-mem health\r
npx neolata-mem clusters\r
```\r
\r
## OpenClaw Integration\r
\r
neolata-mem complements OpenClaw's built-in `memorySearch`:\r
- **memorySearch** = searches your workspace `.md` files (BM25 + vector)\r
- **neolata-mem** = structured memory store with graph, decay, evolution, multi-agent\r
\r
Use both together: memorySearch for workspace file recall, neolata-mem for agent-managed knowledge.\r
\r
### Recommended Setup\r
\r
In your agent's daily cron or heartbeat:\r
```javascript\r
// Store important facts from today's session\r
await mem.store(agentId, 'Key decision: migrated to Postgres', {\r
  category: 'decision',\r
  importance: 0.8,\r
  tags: ['infrastructure'],\r
});\r
\r
// Run decay maintenance\r
await mem.decay();\r
```\r
\r
## Comparison\r
\r
| Feature | neolata-mem | Mem0 | OpenClaw memorySearch |\r
|---------|:-----------:|:----:|:---------------------:|\r
| Local-first (data stays on machine) | ✅ (default) | ❌ | ✅ |\r
| Hybrid search (vector + keyword) | ✅ | ❌ | ✅ |\r
| Memory decay | ✅ | ❌ | ❌ |\r
| Memory graph / linking | ✅ | ❌ | ❌ |\r
| Conflict resolution | ✅ | Partial | ❌ |\r
| Quarantine lane | ✅ | ❌ | ❌ |\r
| Predicate schemas | ✅ | ❌ | ❌ |\r
| Explainability API | ✅ | ❌ | ❌ |\r
| Episodes & compression | ✅ | ❌ | ❌ |\r
| Labeled clusters | ✅ | ❌ | ❌ |\r
| Multi-agent | ✅ | ✅ | Per-agent |\r
| Zero infrastructure | ✅ | ❌ | ✅ |\r
| Event emitter | ✅ | ❌ | ❌ |\r
| Batch APIs (storeMany/searchMany) | ✅ | ❌ | ❌ |\r
| npm package | ✅ | ✅ | Built-in |\r
\r
## Security\r
\r
neolata-mem includes hardening against common agent memory attack vectors:\r
\r
- **Prompt injection mitigation**: XML-fenced user content in all LLM prompts + structural output validation\r
- **Input validation**: Agent names (alphanumeric, max 64), text length caps (10KB), bounded memory count (50K), batch size caps (1000 store / 100 query)\r
- **Batch atomicity**: `storeMany` rolls back all memories, indexes, and backlinks on persist failure\r
- **SSRF protection**: All provider URLs validated via `validateBaseUrl()` — blocks cloud metadata endpoints (`169.254.169.254`), private IP ranges, non-HTTP protocols\r
- **Supabase hardening**: UUID validation on query params, error text sanitized (strips tokens/keys), upsert-based save (crash-safe), 429 retry with backoff\r
- **Atomic writes**: Write-to-temp + rename prevents file corruption\r
- **Path traversal guards**: Storage directories and write-through paths validated with `resolve()` + prefix checks\r
- **Cryptographic IDs**: `crypto.randomUUID()` — no predictable memory references\r
- **Retry bounds**: Exponential backoff with max 3 retries on 429s\r
- **Error surfacing**: Failed conflict detection returns `{ error }` instead of silent fallthrough\r
\r
**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.\r
\r
See the [full security section](docs/guide.md#security) for details.\r
\r
### Data Residency & External API Usage\r
\r
**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.\r
\r
**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.\r
\r
| Mode | Data sent externally? | Storage location |\r
|------|:---------------------:|------------------|\r
| Default (no config) | ❌ No | `./neolata-mem-data/graph.json` |\r
| Ollama embeddings | ❌ No (local) | `./neolata-mem-data/graph.json` |\r
| OpenAI/NIM embeddings | ⚠️ Memory text → provider | `./neolata-mem-data/graph.json` |\r
| Supabase storage | ⚠️ All data → Supabase | Supabase PostgreSQL |\r
| LLM conflict resolution | ⚠️ Memory text → provider | Storage unchanged |\r
\r
**To keep all data local**: Use Ollama for embeddings and JSON storage. No API keys needed for keyword-only search.\r
\r
## Links\r
\r
- **npm:** [@jeremiaheth/neolata-mem](https://www.npmjs.com/package/@jeremiaheth/neolata-mem)\r
- **GitHub:** [Jeremiaheth/neolata-mem](https://github.com/Jeremiaheth/neolata-mem)\r
- **Full docs:** See `docs/guide.md` in the package\r
安全使用建议
This skill is instruction-only and describes a Node.js memory library; it appears coherent, but follow these steps before installing or enabling remote features: - Inspect the upstream package/repo before npm install: run `npm view ... scripts` / `npm view ... dependencies` and `npm pack --dry-run`, and review the repository source referenced in SKILL.md. The SKILL.md and registry metadata show small mismatches (version and homepage) — confirm you're installing the intended release. - Start in memory mode (`storage.type='memory'`) or local JSON to evaluate behavior before enabling persistence or networked backends. - Never supply a Supabase service key to a client agent; prefer anon/public keys with RLS as the docs recommend. - Treat webhookWritethrough and any configured remote embedding/LLM providers as explicit exfiltration surfaces — only point them at endpoints you control and trust. - If you depend on the OpenClaw gateway, provide OPENCLAW_GATEWAY_TOKEN securely; otherwise avoid configuring remote LLMs/embeddings. If you want higher assurance, request the exact npm tarball URL or a commit hash from the publisher so you (or an auditor) can verify the installed code matches the documentation.
功能分析
Type: OpenClaw Skill Name: neolata-mem Version: 0.8.5 The OpenClaw AgentSkills skill bundle for 'neolata-mem' is classified as benign. The documentation (SKILL.md, references/*.md) is highly transparent about its capabilities, including potential data flows to external LLM/embedding providers and webhooks, explicitly warning users about associated risks (e.g., 'Webhook URLs are an explicit exfiltration surface'). It details robust security features such as SSRF protection (blocking cloud metadata and private IPs by default), XML-fenced user content for LLM prompt injection mitigation, and extensive input validation. There is no evidence of intentional malicious behavior, obfuscation, unauthorized data exfiltration, or prompt injection attempts against the OpenClaw agent itself; instead, the documentation serves as a comprehensive security guide.
能力评估
Purpose & Capability
The skill's name/description (graph-native memory engine) matches the SKILL.md and reference docs: methods, storage backends, embedding/LLM integration, and runtime helpers are all memory-related. Minor metadata inconsistencies exist: SKILL.md frontmatter lists version 0.8.4 while the registry shows 0.8.5, and registry metadata lists no homepage/source while SKILL.md points to a GitHub repo. These are administrative mismatches but do not change the stated purpose.
Instruction Scope
Instructions are focused on memory operations (store/search/context/decay/etc.). They explicitly document when data is sent off-host (embeddings, LLM extraction, Supabase storage, webhook writethrough) and provide safety guidance (SSRF guards, use memory mode, prefer anon keys + RLS). Runtime helpers (heartbeatStore, preCompactionDump) do instruct the host to extract key moments from conversation text — expected for a memory engine but worth noting since they cause the agent to collect conversation content.
Install Mechanism
No install spec is included in the skill bundle (instruction-only), so nothing is written/executed by the platform. The SKILL.md recommends an npm package (@jeremiaheth/neolata-mem) hosted on GitHub; installing that package is a user action outside this skill. The author recommends verifying the tarball and notes zero runtime deps, which is prudent. Because the skill does not itself download/run code, install risk is low, but installing the referenced npm package carries the usual supply-chain risk and should be audited.
Credentials
The registry lists no required env vars; SKILL.md documents optional envs (OPENAI_API_KEY, OPENCLAW_GATEWAY_TOKEN, NVIDIA_API_KEY, AZURE_API_KEY, SUPABASE_URL, SUPABASE_KEY) and states that only OPENAI_API_KEY and OPENCLAW_GATEWAY_TOKEN are read directly by code by default. These optional credentials align with the described features (embeddings, LLM gateway, Supabase). The presence of supabase keys and webhook URLs is an explicit exfiltration/privilege surface if configured — the docs themselves warn about preferring anon keys with RLS and not using service keys in clients.
Persistence & Privilege
always:false and no install scripts in this bundle. The skill does not request persistent platform privileges. It documents local JSON storage by default and an in-memory test mode; persistent or networked storage only occurs if you explicitly configure Supabase, embeddings, LLMs, or webhooks. Autonomous invocation is allowed by default (platform normal) but the skill does not request elevated or always-on privileges.
如何使用
  1. 确保已安装 OpenClaw(本地或 Docker 部署)
  2. 在对话框中输入安装命令:/install neolata-mem
  3. 安装完成后,直接呼叫该 Skill 的名称或使用 /neolata-mem 触发
  4. 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
版本历史
v0.8.5
- Updated skill.
v0.8.4
- Updated skill.
v0.8.3
neolata-mem 0.8.2 - Added detailed security and data flow section, explaining local-first defaults and explicit configuration required for remote usage. - Updated metadata: clarified environment variables, security notes, data flow. - Enhanced documentation about safe configs and security properties (including SSRF protection, RLS guidance, memory-mode testing). - Expanded/clarified provider support and API key/environment variable usage details. - No runtime dependencies; still zero-install overhead.
v0.8.2
neolata-mem 0.8.2 - Added detailed security and data flow section, explaining local-first defaults and explicit configuration required for remote usage. - Updated metadata: clarified environment variables, security notes, data flow. - Enhanced documentation about safe configs and security properties (including SSRF protection, RLS guidance, memory-mode testing). - Expanded/clarified provider support and API key/environment variable usage details. - No runtime dependencies; still zero-install overhead.
v0.8.1
Big update: Major new features, advanced conflict resolution, and detailed internal docs. - Added advanced conflict resolution with claim/quarantine support and a rich predicate schema registry. - Introduced memory quarantine: review and activate/reject conflicting or low-confidence memories. - New explainability APIs: expose why memories are filtered, quarantined, or retrieved in searches. - Now supports episode grouping, cluster labeling, and automatic memory compression/consolidation. - Comprehensive internal documentation now available under /references.
v0.5.3
- Updated environment variable documentation: replaces SUPABASE_SERVICE_KEY with SUPABASE_KEY for clearer, preferred Supabase configuration. - Added explicit "Supply-chain verification" instructions, documenting how to audit the package for runtime dependencies, install scripts, and tarball contents. - No changes to core APIs, functionality, or features—documentation updates only.
v0.5.2
Version 0.5.2 - Added batch APIs: storeMany and searchMany for atomic bulk memory operations with cross-linking and rollback on failure. - Improved keyword search: now uses inverted token index for O(1) lookups and normalized matching with stop word removal and deduplication. - Large vector searches (>500 memories) now pre-filter candidates via token overlap for improved performance. - Updated security documentation to include batch operation caps and atomicity guarantees.
v0.5.1
v0.5.0-0.5.1: Performance + batch APIs + security hardening New features: - tokenize(): keyword normalization with stop word removal, lowercase, dedup - Inverted token index (Map<token, Set<id>>) for O(1) keyword search - _byId() Map index replaces 16 linear .find() lookups with O(1) - Candidate narrowing: pre-filters >500 memories via token overlap before cosine - storeMany(agent, items): batch store with amortized embedding + single persist - searchMany(agent, queries): batch search with single embed call - Cross-batch linking in storeMany Security fixes (v0.5.1): - S7: Fix stale token index on evolve() in-place memory update - S2: maxBatchSize config (default 1000) caps storeMany - S3: maxQueryBatchSize config (default 100) caps searchMany - S4: storeMany atomic rollback on persist failure (memories, indexes, backlinks) - Events emitted only after successful persist
v0.4.4
0.4.4 introduces additional environment variable support and expands security and storage backend options. - Added environment variables for NVIDIA and Supabase (NIM embeddings & storage backend). - CLI and base skill remain local-first by default; new optional Supabase cloud backend. - Security hardening: new path traversal guards, SSRF protection, Supabase-specific checks, and improved error handling. - Increased test coverage (120/120 passing). - Clarified that there are no install scripts or production dependencies. - Expanded documentation on security, data residency, and supported embedding providers.
v0.3.3
Version 0.3.2 - No user-visible changes; documentation and code remain unchanged from the previous version. - No file modifications detected in this release.
v0.3.2
- Adds bulk ingestion with fact extraction (LLM-powered), allowing automatic extraction and storage of atomic facts from longer texts. - Increases passing tests from 28 to 38, indicating expanded coverage and stability. - Hybrid search now uses vector + keyword fallback (instead of BM25), improving search reliability without embeddings. - The skill metadata now clarifies that an API key is optional, and includes direct homepage and repository links. - Event emitter now provides more concise decay info (counts instead of full memory arrays). - Documentation updated for new features and improved clarity, including enhanced feature descriptions and usage examples.
v0.3.1
Initial release of neolata-mem, a local-first agent memory engine. - Hybrid vector + BM25 search for accurate retrieval - Biological memory decay and Zettelkasten-style graph linking - Conflict detection and evolution of contradictory facts - Multi-agent memory with cross-agent searching and linking - Zero infrastructure: no cloud, Docker, or database required - Event emitter API, CLI tools, and full OpenClaw integration v0.3.1: Security hardening
元数据
Slug neolata-mem
版本 0.8.5
许可证
累计安装 1
当前安装数 1
历史版本数 12
常见问题

Neolata Memory Engine 是什么?

Graph-native memory engine for AI agents — hybrid vector+keyword search, biological decay, Zettelkasten linking, trust-gated conflict resolution, explainabil... 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 640 次。

如何安装 Neolata Memory Engine?

在 OpenClaw 或 Claude Code 对话框中运行命令「/install neolata-mem」即可一键安装,无需额外配置。

Neolata Memory Engine 是免费的吗?

是的,Neolata Memory Engine 完全免费(开源免费),可自由下载、安装和使用。

Neolata Memory Engine 支持哪些平台?

Neolata Memory Engine 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。

谁开发了 Neolata Memory Engine?

由 HEIS AGENCY(@jeremiaheth)开发并维护,当前版本 v0.8.5。

💬 留言讨论