enhanced-memory

Search & Research
v1.0.0
Benign

Enhanced memory search with hybrid vector+keyword scoring, temporal routing, filepath scoring, adaptive weighting.

683 downloads683 installsby @jameseball

Setup & Installation

Install command

clawhub install jameseball/enhanced-memory

If the CLI is not installed:

Install command

npx clawhub@latest install jameseball/enhanced-memory

Or install with OpenClaw CLI:

Install command

openclaw skills install jameseball/enhanced-memory

or paste the repo link into your assistant's chat

Install command

https://github.com/openclaw/skills/tree/main/skills/jameseball/enhanced-memory

What This Skill Does

A drop-in replacement for OpenClaw's default memory search. Uses a 4-signal fusion pipeline combining vector similarity, keyword matching, header matching, and filepath scoring to retrieve memory chunks. Also includes salience scoring and a knowledge graph cross-reference builder.

Achieves 0.782 MRR versus approximately 0.45 for baseline vector-only search by fusing four signals and applying adaptive weighting when keyword overlap is low.

When to Use It

  • Finding relevant past context when vector-only search returns weak results
  • Surfacing stale memory files during agent heartbeat cycles
  • Building cross-reference links between related memory chunks
  • Querying memories with date references like 'last Monday' or 'Feb 8'
  • Indexing updated memory files after significant workspace changes
View original SKILL.md file
# Enhanced Memory

Drop-in enhancement for OpenClaw's memory system. Replaces flat vector search with a 4-signal hybrid retrieval pipeline that achieved **0.782 MRR** (vs ~0.45 baseline vector-only).

## Setup

```bash
# Install Ollama and pull the embedding model
ollama pull nomic-embed-text

# Index your memory files (run from workspace root)
python3 skills/enhanced-memory/scripts/embed_memories.py

# Optional: build cross-reference graph
python3 skills/enhanced-memory/scripts/crossref_memories.py build
```

Re-run `embed_memories.py` whenever memory files change significantly.

## Scripts

### `scripts/search_memory.py` — Primary Search

Hybrid 4-signal retrieval with automatic adaptation:

```bash
python3 skills/enhanced-memory/scripts/search_memory.py "query" [top_n]
```

**Signals fused:**
1. **Vector similarity** (0.4) — cosine similarity via nomic-embed-text embeddings
2. **Keyword matching** (0.25) — query term overlap with chunk text
3. **Header matching** (0.1) — query terms in section headers
4. **Filepath scoring** (0.25) — query terms matching file/directory names

**Automatic behaviors:**
- **Temporal routing** — date references ("yesterday", "Feb 8", "last Monday") get 3x boost on matching files
- **Adaptive weighting** — when keyword overlap is low, shifts to 85% vector weight
- **Pseudo-relevance feedback (PRF)** — when top score < 0.45, expands query with terms from initial results and re-scores

### `scripts/enhanced_memory_search.py` — JSON-Compatible Search

Same pipeline with JSON output format compatible with OpenClaw's memory_search tool:

```bash
python3 skills/enhanced-memory/scripts/enhanced_memory_search.py --json "query"
```

Returns `{results: [{path, startLine, endLine, score, snippet, header}], ...}`.

### `scripts/embed_memories.py` — Indexing

Chunks all `.md` files in `memory/` plus core workspace files (MEMORY.md, AGENTS.md, etc.) by markdown headers and embeds them:

```bash
python3 skills/enhanced-memory/scripts/embed_memories.py
```

Outputs `memory/vectors.json`. Batches embeddings in groups of 20, truncates chunks to 2000 chars.

### `scripts/memory_salience.py` — Salience Scoring

Surfaces stale/important memory items for heartbeat self-prompting:

```bash
python3 skills/enhanced-memory/scripts/memory_salience.py          # Human-readable prompts
python3 skills/enhanced-memory/scripts/memory_salience.py --json   # Programmatic output
python3 skills/enhanced-memory/scripts/memory_salience.py --top 5  # More items
```

Scores `importance × staleness` considering: file type (topic > core > daily), size, access frequency, and query gap correlation.

### `scripts/crossref_memories.py` — Knowledge Graph

Builds cross-reference links between memory chunks using embedding similarity:

```bash
python3 skills/enhanced-memory/scripts/crossref_memories.py build          # Build index
python3 skills/enhanced-memory/scripts/crossref_memories.py show <file>    # Show refs for file
python3 skills/enhanced-memory/scripts/crossref_memories.py graph          # Graph statistics
```

Uses file-representative approach (top 5 chunks per file) to reduce O(n²) to manageable comparisons. Threshold: 0.75 cosine similarity.

## Configuration

All tunable constants are at the top of each script. Key parameters:

| Parameter | Default | Script | Purpose |
|-----------|---------|--------|---------|
| `VECTOR_WEIGHT` | 0.4 | search_memory.py | Weight for vector similarity |
| `KEYWORD_WEIGHT` | 0.25 | search_memory.py | Weight for keyword overlap |
| `FILEPATH_WEIGHT` | 0.25 | search_memory.py | Weight for filepath matching |
| `TEMPORAL_BOOST` | 3.0 | search_memory.py | Multiplier for date-matching files |
| `PRF_THRESHOLD` | 0.45 | search_memory.py | Score below which PRF activates |
| `SIMILARITY_THRESHOLD` | 0.75 | crossref_memories.py | Min similarity for cross-ref links |
| `MODEL` | nomic-embed-text | all | Ollama embedding model |

To use a different embedding model (e.g., `mxbai-embed-large`), change `MODEL` in each script and re-run `embed_memories.py`.

## Integration

To replace the default memory search, point your agent's search tool at these scripts. The scripts expect:
- `memory/` directory relative to workspace root containing `.md` files
- `memory/vectors.json` (created by `embed_memories.py`)
- Ollama running locally on port 11434

All scripts use only Python stdlib + Ollama HTTP API. No pip dependencies.

Example Workflow

Here's how your AI assistant might use this skill in practice.

INPUT

User asks: Finding relevant past context when vector-only search returns weak results

AGENT
  1. 1Finding relevant past context when vector-only search returns weak results
  2. 2Surfacing stale memory files during agent heartbeat cycles
  3. 3Building cross-reference links between related memory chunks
  4. 4Querying memories with date references like 'last Monday' or 'Feb 8'
  5. 5Indexing updated memory files after significant workspace changes
OUTPUT
Enhanced memory search with hybrid vector+keyword scoring, temporal routing, filepath scoring, adaptive weighting.

Share this skill

Security Audits

VirusTotalBenign
OpenClawBenign
View full report

These signals reflect official OpenClaw status values. A Suspicious status means the skill should be used with extra caution.

Details

LanguageMarkdown
Last updatedFeb 28, 2026