Install
openclaw skills install openclaw-siliconflow-memoryConfigure OpenClaw semantic memory to use SiliconFlow embeddings through the OpenAI-compatible API, especially `BAAI/bge-m3`. Use when enabling or repairing `memory_search`, replacing a broken embedding provider, switching `agents.defaults.memorySearch` to SiliconFlow, validating `openclaw memory status/index/search`, or adding curated `extraPaths` from external Markdown knowledge bases.
openclaw skills install openclaw-siliconflow-memoryConfigure OpenClaw memory_search to use SiliconFlow embeddings reliably, then verify indexing and retrieval.
Use this skill to:
BAAI/bge-m3fallback: "none" for clearer debuggingBefore changing config, inspect the relevant schema paths:
agents.defaults.memorySearchagents.defaults.memorySearch.remoteagents.defaults.memorySearch.extraPathsThen inspect the current config with gateway config.get so the patch is based on the latest hash.
Important:
agents.defaults.memorySearch, not top-level memorySearch.remote.apiKey explicitly.Use gateway config.patch and keep the configuration explicit.
Recommended baseline:
agents: {
defaults: {
memorySearch: {
provider: "openai",
model: "BAAI/bge-m3",
fallback: "none",
remote: {
baseUrl: "https://api.siliconflow.cn/v1/",
apiKey: "YOUR_SILICONFLOW_API_KEY"
}
}
}
}
Why this baseline works well:
provider: "openai" matches SiliconFlow's OpenAI-compatible embeddings APImodel: "BAAI/bge-m3" is a strong default for mixed Chinese/English Markdown recallfallback: "none" avoids silently switching providers during debuggingremote.baseUrl and remote.apiKey remove ambiguityWhen indexing a local knowledge base, prefer curated paths instead of adding the entire repo at once.
Good first candidates:
Avoid adding these in the first pass unless the user explicitly wants them indexed:
Example:
agents: {
defaults: {
memorySearch: {
extraPaths: [
"D:/Knowledge/README.md",
"D:/Knowledge/Notes/02-Sources",
"D:/Knowledge/Notes/03-Concepts",
"D:/Knowledge/Notes/05-Projects",
"D:/Knowledge/Notes/09-Indexes"
]
}
}
}
After config reload/restart, validate in a fixed order:
openclaw memory status --deepopenclaw memory index --forceopenclaw memory search "<known phrase from indexed docs>"memory_search with the same querySuccess signs:
Embeddings: readyIndexed: N/N files increases as expectedDirty: noDo not validate with vague keywords only.
Prefer a phrase that appears verbatim in the indexed notes, such as:
This makes it easier to distinguish:
404 page not foundInterpret this as: the endpoint likely does not provide embeddings at the configured route.
Typical cause:
/embeddingsAction:
remote.baseUrl is https://api.siliconflow.cn/v1/fetch failedInterpret this as: the request could not complete at all.
Typical causes:
Action:
provider, model, remote.baseUrl, and remote.apiKey explicitopenclaw memory status --deepEBUSY: resource busy or lockedInterpret this as: the SQLite memory store is locked during reindex.
Action order:
Do not assume config is wrong just because reindex failed with EBUSY.
fallback: "none" during setup and debuggingBefore declaring success, confirm all of the following:
BAAI/bge-m3 is activeopenclaw memory status --deep shows Embeddings: ready