zilliztech/memsearch

memsearch

A persistent, unified memory layer for all your AI agents (e.g. Claude Code, Codex, DSH), backed by Markdown and Milvus.

待分类agentagent-memoryai-agents

  memsearch

Cross-platform semantic memory for AI coding agents.

📰 What's New

  • Optional Jev reranking — rerank memory search results with Jev through the TypeSafe API, with no local model download. See configuration and the Chinese/English evaluation.
  • DeepSeek Harness support — MemSearch now brings automatic capture, pre-step memory injection, native skill-based recall, background maintenance, and a read-only memory browser to DeepSeek Harness (DSH).
  • Skills from memory — MemSearch now distills the workflows you repeat into reusable, installable agent skills (a third "procedural memory" layer) and keeps them up to date in the background. See Skills from Memory.
  • Advanced memory maintenance — optional background tasks keep durable PROJECT.md and USER.md notes current across sessions. See Advanced Memory Maintenance.

Why memsearch?

  • 🌐 All Platforms, One Memory — memories flow across Claude Code, Codex, DeepSeek Harness, OpenClaw, and OpenCode. A conversation in one agent becomes searchable context in all others — no extra setup
  • 👥 For Agent Users, install a plugin and get persistent memory with zero effort; for Agent Developers, use the full CLI and Python API to build memory and harness engineering into your own agents
  • 📄 Markdown is the source of truth — inspired by OpenClaw. Your memories are just .md files — human-readable, editable, version-controllable. Milvus is a "shadow index": a derived, rebuildable cache
  • 🔍 Progressive retrieval, hybrid search, smart dedup, live sync — 3-layer recall (search → expand → transcript); dense vector + BM25 sparse + RRF reranking; SHA-256 content hashing skips unchanged content; file watcher auto-indexes in real time

🧑‍💻 For Agent Users

Pick your platform, install the plugin, and you're done. Each plugin captures conversations automatically and provides semantic recall with zero configuration.

For Claude Code Users

# Install
/plugin marketplace add zilliztech/memsearch
/plugin install memsearch
# Restart Claude Code to activate the plugin

After restarting, just chat with Claude Code as usual. The plugin captures every conversation turn automatically.

Verify it's working — after a few conversations, check your memory files:

ls .memsearch/memory/          # you should see daily .md files
cat .memsearch/memory/$(date +%Y-%m-%d).md

Recall memories — two ways to trigger:

/memory-recall what did we discuss about Redis?

Or just ask naturally — Claude auto-invokes the skill when it senses the question needs history:

We discussed Redis caching before, what was the TTL we chose?
📖 Claude Code Plugin docs · Troubleshooting

For Codex Users

# Install
git clone --depth 1 https://github.com/zilliztech/memsearch.git
bash memsearch/plugins/codex/scripts/install.sh
codex --yolo  # needed for ONNX model network access

After installing, chat as usual. Hooks capture and summarize each turn.

Verify it's working:

ls .memsearch/memory/

Recall memories — use the skill:

$memory-recall what did we discuss about deployment?
📖 Codex Plugin docs

For DeepSeek Harness Users

# Install the published plugin into your DSH profile
uv tool install "memsearch[onnx]"
dsh plugin --profile web add @zilliz/memsearch-dsh
# Restart that DSH profile, or start a new session

After installing, use DSH normally. Completed turns are captured automatically, and relevant memories are injected before the first model step only when they are useful.

Verify it's working:

ls .memsearch/memory/

Recall memories — ask naturally or tell DSH to use the registered memory-recall skill:

Use memory-recall to find what we decided about the deployment architecture.

The web profile also adds a compact MemSearch dock where you can review skill candidates and browse supported files under .memsearch/ without editing them.

📖 DeepSeek Harness Plugin docs

For OpenClaw Users

# Install from ClawHub
openclaw plugins install --force clawhub:memsearch
openclaw config set plugins.entries.memsearch.hooks.allowConversationAccess true
openclaw config set plugins.entries.memsearch.hooks.allowPromptInjection true
openclaw gateway restart

After installing, chat in TUI as usual. The plugin captures each turn automatically.

Verify it's working — memory files are stored in your agent's workspace:

# For the main agent:
ls ~/.openclaw/workspace/.memsearch/memory/
# For other agents (e.g. work):
ls ~/.openclaw/workspace-work/.memsearch/memory/

Recall memories — two ways to trigger:

/memory-recall what was the batch size limit we set?

Or just ask naturally — the LLM auto-invokes memory tools when it senses the question needs history:

We discussed batch size limits before, what did we decide?
📖 OpenClaw Plugin docs · Browse on ClawHub

For OpenCode Users

MemSearch gives OpenCode persistent memory across sessions. Install the plugin:

opencode plugin add @zilliz/memsearch-opencode

Completed turns are summarized into .memsearch/memory/ and indexed for recall. Pending work resumes after an interruption.

Ask about previous decisions or debugging sessions, and OpenCode can search memory, expand relevant notes, and look up the original conversation. The memory-recall, memory-config, and memory-to-skill Skills are included.

📖 OpenCode Plugin docs

⚙️ Configuration (all platforms)

All plugins share the same memsearch backend. Configure once, works everywhere.

Embedding

Defaults to ONNX bge-m3 — runs locally on CPU, no API key, no cost. On first launch the model (~558 MB) is downloaded from HuggingFace Hub.

memsearch config set embedding.provider onnx     # default — local, free
memsearch config set embedding.provider openai   # needs OPENAI_API_KEY
memsearch config set embedding.provider ollama   # local, any model
All providers and models: Configuration — Embedding Provider

Milvus Backend

Just change milvus_uri (and optionally milvus_token) to switch between deployment modes:

Milvus Lite (default) — zero config, single file. Great for getting started:

# Works out of the box, no setup needed
memsearch config get milvus.uri   # → ~/.memsearch/milvus.db

⭐ Zilliz Cloud (recommended) — fully managed, free tier available — sign up 👇:

memsearch config set milvus.uri "https://in03-xxx.api.gcp-us-west1.zillizcloud.com"
memsearch config set milvus.token "your-api-key"

⭐ Sign up for a free Zilliz Cloud cluster

You can sign up on Zilliz Cloud to get a free cluster and API key.

Self-hosted Milvus Server (Docker) — for advanced users

For multi-user or team environments with a dedicated Milvus instance. Requires Docker. See the official installation guide.

memsearch config set milvus.uri http://localhost:19530
📖 Full configuration guide: Configuration · Platform comparison

Capture Summarization Routing

Each plugin keeps its native capture summarizer unless you override it explicitly:

memsearch config set plugins.codex.summarize.model gpt-5.1-codex-mini
memsearch config set plugins.opencode.summarize.model anthropic/claude-haiku

Advanced users can route plugin summarization through a memsearch-managed API provider:

memsearch config set llm.providers.openai.type openai
memsearch config set llm.providers.openai.model gpt-5-mini
memsearch config set llm.providers.openai.api_key env:OPENAI_API_KEY
memsearch config set plugins.codex.summarize.provider openai

Leave plugins..summarize.provider empty to preserve the platform's default behavior. Claude Code, Codex, OpenClaw, and OpenCode also accept native; DSH selects its headless-agent backend when the provider is unset. Plugin-specific summarize settings do not fall back to llm.model.

You can also disable automatic capture globally for a platform while keeping the plugin installed:

memsearch config set plugins.codex.summarize.enabled false

Advanced Memory Maintenance

Your agent can keep two higher-level notes current in the background: `PROJECT.md` — durable project state (active threads, decisions, risks, next steps) — and `USER.md` — your reusable preferences, working style, and recurring goals. They refresh after a session only when the journals changed and a minimum interval has passed, and they are off by default.

Turn them on by asking your agent — *"enable MemSearch's PROJECT.md and USER.md maintenance"* — and it configures them through the memory-config skill, which can also choose the model/provider, the interval, and custom prompts, or diagnose the current setup. Prefer editing files? The settings live under [plugins..project_review] and [plugins..user_profile] in your MemSearch config (both read .memsearch/memory and write .memsearch/PROJECT.md / .memsearch/USER.md by default).