Technical reference
Referenz zur Speicherkonfiguration
Diese Seite listet alle Konfigurationsoptionen für die Speichersuche von OpenClaw auf. Konzeptionelle Übersichten finden Sie unter:
Funktionsweise des Speichers.
Standardmäßiges SQLite-Backend.
Local-First-Sidecar.
Such-Pipeline und Optimierung.
Speicher-Sub-Agent für interaktive Sitzungen.
Alle gemeinsamen Speichereinstellungen befinden sich unter dem übergeordneten memory in openclaw.json. Suchstandards verwenden memory.search; agentspezifische Suchüberschreibungen verwenden agents.entries.*.memory.search.
Gesprächsübergreifend erinnern
| Schlüssel | Typ | Standard | Beschreibung |
|---|---|---|---|
rememberAcrossConversations |
boolean |
Bei persönlichen Installationen aktiviert; bei konfigurierter DM-Isolierung deaktiviert | Relevanten Kontext aus anderen erkannten privaten Gesprächen dieses Agent verwenden. |
Konfigurieren Sie dies pro Agent, wenn nur ein vertrauenswürdiger persönlicher Agent den gesprächsübergreifenden Abruf von Transkripten verwenden soll:
{ agents: { entries: { personal: { memory: { search: { rememberAcrossConversations: true, }, }, }, }, },}Der Wert folgt der normalen Vererbung von memory.search mit einer
agentspezifischen Überschreibung. Wenn er nicht festgelegt ist, wird er nur
standardmäßig aktiviert, wenn global session.dmScope nicht festgelegt oder
"main" ist und keine Bindung eine session.dmScope-Überschreibung
enthält. Jede konfigurierte DM-Isolierung deaktiviert ihn standardmäßig. Ein
explizites true oder false hat immer Vorrang. Die
Aktivierung schließt die Indizierung von Sitzungstranskripten ein und fügt
sessions zu den aufgelösten Speicherquellen des Agent hinzu. Mit QMD
wird außerdem der Sitzungsexport dieses Agent aktiviert; für diesen Modus ist
keine separate Einstellung memory.qmd.sessions.enabled erforderlich.
Der integrierte Speicher-Provider von OpenClaw unterstützt diesen geschützten
Pfad sowohl mit dem integrierten als auch mit dem QMD-Backend. Alternative
Speicher-Provider können weiterhin ihre eigenen Abruf-Hooks und erweiterten
Active-Memory-Werkzeuge verwenden, diese Einstellung wird jedoch übersprungen,
wenn der aktuelle Provider den geschützten Abruf privater Transkripte nicht
unterstützt. openclaw doctor meldet einen nicht unterstützten Provider oder
eine explizite Active-Memory-Liste toolsAllow, in der
memory_search fehlt.
Die Abrufgrenze ist enger als bei der allgemeinen Sitzungssuche:
- nur erkannte private Gespräche desselben Agent kommen infrage
- das gerade beantwortete Gespräch ist ausgeschlossen
- Gruppen und Kanäle sind als Quellen und Ziele ausgeschlossen
- unbekannte Gesprächsarten werden standardmäßig abgelehnt
- der Abruf in einer Sandbox kann die spezielle gesprächsübergreifende Autorisierung nicht verwenden
Die Einstellung ändert weder tools.sessions.visibility noch Sitzungsschlüssel,
Transkriptspeicherung, Zustellungsrouting oder die Berechtigungen von
sessions_list, sessions_history und sessions_send. Active Memory
führt einen begrenzten, schreibgeschützten Abrufdurchlauf aus; ein nicht
verfügbarer oder zeitüberschrittener Abruf blockiert die Antwort nicht.
Provider-Auswahl
| Schlüssel | Typ | Standard | Beschreibung |
|---|---|---|---|
enabled |
boolean |
true |
Speichersuche aktivieren oder deaktivieren |
provider |
string |
"openai" |
ID eines Embedding-Adapters wie bedrock, deepinfra, gemini, github-copilot, local, mistral, ollama, openai, openai-compatible oder voyage; kann auch ein konfigurierter models.providers.<id> sein, dessen api auf einen Speicher-Embedding-Adapter oder eine OpenAI-kompatible Modell-API verweist |
model |
string |
Provider-Standard | Name des Embedding-Modells |
fallback |
string |
"none" |
ID des Fallback-Adapters bei Ausfall des primären Adapters |
Wenn provider nicht festgelegt ist, verwendet OpenClaw OpenAI-Embeddings.
Legen Sie provider explizit fest, um Bedrock, DeepInfra, Gemini,
GitHub Copilot, Mistral, Ollama, Voyage, ein lokales GGUF-Modell oder einen
OpenAI-kompatiblen /v1/embeddings-Endpunkt zu verwenden. Veraltete
Konfigurationen, die weiterhin provider: "auto" angeben, werden als
openai aufgelöst.
Wenn provider nicht festgelegt ist, das veraltete
provider: "auto" vorhanden ist oder provider: "none" absichtlich den
reinen FTS-Modus auswählt, kann der Speicherabruf weiterhin die lexikalische
FTS-Rangfolge verwenden, wenn Embeddings nicht verfügbar sind.
Explizit angegebene nicht lokale Provider werden standardmäßig abgelehnt. Wenn
Sie memory.search.provider auf einen konkreten, remote gestützten Provider wie
Bedrock, DeepInfra, Gemini, GitHub Copilot, LM Studio, Mistral, Ollama, OpenAI,
Voyage oder einen OpenAI-kompatiblen benutzerdefinierten Provider setzen und
dieser Provider zur Laufzeit nicht verfügbar ist, gibt memory_search ein
Nichtverfügbarkeitsergebnis zurück, anstatt stillschweigend ausschließlich den
FTS-Abruf zu verwenden. Korrigieren Sie die Provider-/Authentifizierungskonfiguration,
wechseln Sie zu einem erreichbaren Provider oder legen Sie provider: "none"
fest, wenn Sie bewusst ausschließlich den FTS-Abruf verwenden möchten.
Benutzerdefinierte Provider-IDs
memory.search.provider kann auf einen benutzerdefinierten models.providers.<id>-Eintrag
für speicherspezifische Provider-Adapter wie ollama oder für
OpenAI-kompatible Modell-APIs wie openai-responses / openai-completions
verweisen. OpenClaw löst den api-Eigentümer dieses Providers für
den Embedding-Adapter auf und behält gleichzeitig die benutzerdefinierte
Provider-ID für die Verarbeitung von Endpunkt, Authentifizierung und
Modellpräfix bei. Dadurch können Multi-GPU- oder Multi-Host-Konfigurationen
Speicher-Embeddings einem bestimmten lokalen Endpunkt zuweisen:
{ models: { providers: { "ollama-5080": { api: "ollama", baseUrl: "http://gpu-box.local:11435", apiKey: "ollama-local", models: [{ id: "qwen3-embedding:0.6b", name: "Qwen3 Embedding 0.6B" }], }, }, }, memory: { search: { provider: "ollama-5080", model: "qwen3-embedding:0.6b", }, },}Auflösung des API-Schlüssels
Remote-Embeddings erfordern einen API-Schlüssel. Bedrock verwendet stattdessen die standardmäßige AWS-SDK-Anmeldedatenkette (Instanzrollen, SSO, Zugriffsschlüssel oder einen Bedrock-API-Schlüssel).
| Provider | Umgebungsvariable | Konfigurationsschlüssel |
|---|---|---|
| Bedrock | AWS-Anmeldedatenkette oder AWS_BEARER_TOKEN_BEDROCK |
Kein API-Schlüssel erforderlich |
| DeepInfra | DEEPINFRA_API_KEY |
models.providers.deepinfra.apiKey |
| Gemini | GEMINI_API_KEY |
models.providers.google.apiKey |
| GitHub Copilot | COPILOT_GITHUB_TOKEN, GH_TOKEN, GITHUB_TOKEN |
Authentifizierungsprofil über Geräteanmeldung |
| Mistral | MISTRAL_API_KEY |
models.providers.mistral.apiKey |
| Ollama | OLLAMA_API_KEY (Platzhalter) |
-- |
| OpenAI | OPENAI_API_KEY |
models.providers.openai.apiKey |
| Voyage | VOYAGE_API_KEY |
models.providers.voyage.apiKey |
Konfiguration des Remote-Endpunkts
Verwenden Sie provider: "openai-compatible" für einen generischen OpenAI-kompatiblen
/v1/embeddings-Server, der die globalen OpenAI-Chat-Anmeldedaten nicht
übernehmen soll.
remote.baseUrlstringBenutzerdefinierte API-Basis-URL.
remote.apiKeystringAPI-Schlüssel überschreiben.
remote.headersobjectZusätzliche HTTP-Header (mit den Provider-Standards zusammengeführt).
{ memory: { search: { provider: "openai-compatible", model: "text-embedding-3-small", remote: { baseUrl: "https://api.example.com/v1/", apiKey: "YOUR_KEY", }, }, },}Providerspezifische Konfiguration
Gemini
| Schlüssel | Typ | Standard | Beschreibung |
|---|---|---|---|
model |
string |
gemini-embedding-001 |
Unterstützt außerdem gemini-embedding-2-preview |
outputDimensionality |
number |
3072 |
Für Embedding 2: 768, 1536 oder 3072 |
OpenAI-kompatible Eingabetypen
OpenAI-kompatible Embedding-Endpunkte können providerspezifische
input_type-Anfragefelder aktivieren. Dies ist für asymmetrische
Embedding-Modelle nützlich, die unterschiedliche Bezeichnungen für
Abfrage- und Dokument-Embeddings erfordern.
| Schlüssel | Typ | Standard | Beschreibung |
|---|---|---|---|
inputType |
string |
nicht festgelegt | Gemeinsames input_type für Abfrage- und Dokument-Embeddings |
queryInputType |
string |
nicht festgelegt | input_type zur Abfragezeit; überschreibt inputType |
documentInputType |
string |
nicht festgelegt | Index-/Dokument-input_type; überschreibt inputType |
{ memory: { search: { provider: "openai-compatible", remote: { baseUrl: "https://embeddings.example/v1", apiKey: "${EMBEDDINGS_API_KEY}", }, model: "asymmetric-embedder", queryInputType: "query", documentInputType: "passage", }, },}Änderungen dieser Werte wirken sich auf die Identität des Embedding-Caches für die Batch-Indexierung des Providers aus. Wenn das Upstream-Modell die Bezeichnungen unterschiedlich behandelt, sollte anschließend der Speicher neu indexiert werden.
Bedrock
Bedrock-Embedding-Konfiguration
Bedrock verwendet die Standard-Anmeldedatenkette des AWS SDK sowie ein von OpenClaw geprüftes Bearer-Token, sodass keine API-Schlüssel in der Konfiguration gespeichert werden. Wenn OpenClaw auf EC2 mit einer für Bedrock aktivierten Instanzrolle ausgeführt wird, legen Sie lediglich Provider und Modell fest:
{ memory: { search: { provider: "bedrock", model: "amazon.titan-embed-text-v2:0", }, },}| Schlüssel | Typ | Standard | Beschreibung |
|---|---|---|---|
model |
string |
amazon.titan-embed-text-v2:0 |
Beliebige Bedrock-Embedding-Modell-ID |
outputDimensionality |
number |
Modellstandard | Für Titan V2: 256, 512 oder 1024 |
Unterstützte Modelle (mit Familienerkennung und Standarddimensionen):
| Modell-ID | Provider | Standarddimensionen | Konfigurierbare Dimensionen |
|---|---|---|---|
amazon.titan-embed-text-v2:0 |
Amazon | 1024 | 256, 512, 1024 |
amazon.titan-embed-text-v1 |
Amazon | 1536 | -- |
amazon.titan-embed-g1-text-02 |
Amazon | 1536 | -- |
amazon.titan-embed-image-v1 |
Amazon | 1024 | -- |
amazon.nova-2-multimodal-embeddings-v1:0 |
Amazon | 1024 | 256, 384, 1024, 3072 |
cohere.embed-english-v3 |
Cohere | 1024 | -- |
cohere.embed-multilingual-v3 |
Cohere | 1024 | -- |
cohere.embed-v4:0 |
Cohere | 1536 | 256, 384, 512, 768, 1024, 1536 |
twelvelabs.marengo-embed-3-0-v1:0 |
TwelveLabs | 512 | -- |
twelvelabs.marengo-embed-2-7-v1:0 |
TwelveLabs | 1024 | -- |
Varianten mit Durchsatzsuffix (z. B. amazon.titan-embed-text-v1:2:8k) und Inferenzprofil-IDs mit Regionspräfix (z. B. us.amazon.titan-embed-text-v2:0) übernehmen die Konfiguration des Basismodells.
Region: wird in dieser Reihenfolge aufgelöst: die Überschreibung memory.search.remote.baseUrl, die Konfiguration models.providers.amazon-bedrock.baseUrl, AWS_REGION, AWS_DEFAULT_REGION und anschließend der Standardwert us-east-1.
Authentifizierung: OpenClaw prüft zuerst auf AWS_ACCESS_KEY_ID + AWS_SECRET_ACCESS_KEY oder AWS_BEARER_TOKEN_BEDROCK und greift anschließend auf die standardmäßige Anmeldedaten-Provider-Kette des AWS SDK zurück:
- Umgebungsvariablen (
AWS_ACCESS_KEY_ID+AWS_SECRET_ACCESS_KEY), sofern nicht auchAWS_PROFILEfestgelegt ist - SSO (nur wenn SSO-Felder konfiguriert sind)
- Gemeinsame Anmeldedaten- und Konfigurationsdateien (
fromIni, einschließlichAWS_PROFILE) - Anmeldedatenprozess (
credential_processin der AWS-Konfigurationsdatei) - Anmeldedaten für Webidentitäts-Token
- Anmeldedaten aus ECS- oder EC2-Instanzmetadaten
IAM-Berechtigungen: Die IAM-Rolle oder der IAM-Benutzer benötigt:
{ "Effect": "Allow", "Action": "bedrock:InvokeModel", "Resource": "*"}Beschränken Sie für minimale Berechtigungen InvokeModel auf das jeweilige Modell:
arn:aws:bedrock:*::foundation-model/amazon.titan-embed-text-v2:0Lokal (GGUF + llama.cpp)
| Schlüssel | Typ | Standard | Beschreibung |
|---|---|---|---|
local.modelPath |
string |
automatisch heruntergeladen | Pfad zur GGUF-Modelldatei |
local.modelCacheDir |
string |
node-llama-cpp-Standard | Cache-Verzeichnis für heruntergeladene Modelle |
local.contextSize |
number | "auto" |
4096 |
Kontextfenstergröße für den Embedding-Kontext. 4096 deckt typische Abschnitte (128–512 Token) ab und begrenzt zugleich den nicht durch Gewichte belegten VRAM. Reduzieren Sie den Wert auf eingeschränkten Hosts auf 1024–2048. "auto" verwendet das trainierte Maximum des Modells – für Modelle ab 8B nicht empfohlen (Qwen3-Embedding-8B: Bis zu 40 960 Token können den VRAM-Bedarf auf ~32 GB erhöhen). |
Installieren Sie zuerst den offiziellen llama.cpp-Provider: openclaw plugins install @openclaw/llama-cpp-provider.
Standardmodell: embeddinggemma-300m-qat-Q8_0.gguf (~0,6 GB, wird automatisch heruntergeladen). Source-Checkouts erfordern weiterhin die Genehmigung des nativen Builds: pnpm approve-builds und anschließend pnpm rebuild node-llama-cpp.
Verwenden Sie die eigenständige CLI, um denselben Provider-Pfad zu prüfen, den das Gateway verwendet:
openclaw memory status --deep --agent mainopenclaw memory index --force --agent mainNumerische Werte für local.contextSize fließen außerdem in die automatische Platzierung der GPU-Layer durch node-llama-cpp ein, damit die Modellgewichte und der angeforderte Embedding-Kontext gemeinsam Platz finden. openclaw memory status --deep meldet das zuletzt bekannte llama.cpp-Backend, Gerät, Offloading, den angeforderten Kontext und mit Zeitstempeln versehene Speicherinformationen, nachdem die Laufzeit das Modell geladen hat; eine passive Statusabfrage lädt kein Modell.
Legen Sie provider: "local" für lokale GGUF-Embeddings explizit fest. hf: und HTTP(S)-Modellreferenzen werden für explizite lokale Konfigurationen unterstützt (über die Modellauflösung von node-llama-cpp), ändern jedoch nicht den Standard-Provider.
Indexierungsverhalten
Speicher-Engines verwalten Synchronisierung, Batch-Verarbeitung, Überwachung und Indexierungsheuristiken nach der Compaction. OpenClaw hält diese Verhaltensweisen mit gepflegten Standardwerten aktiviert, anstatt installationsspezifische Zeitsteuerungen bereitzustellen.
Konfiguration der hybriden Suche
Alle unter memory.search.query:
| Schlüssel | Typ | Standard | Beschreibung |
|---|---|---|---|
maxResults |
number |
6 |
Maximale Anzahl vor der Einspeisung zurückgegebener Speichertreffer |
minScore |
number |
0.35 |
Mindestrelevanzwert für die Aufnahme eines Treffers |
Die hybride Abfrage bleibt aktiviert; MMR und zeitlicher Verfall bleiben gemäß der integrierten Engine-Richtlinie deaktiviert.
Vollständiges Beispiel
{ memory: { search: { query: { maxResults: 6, minScore: 0.35, }, }, },}Zusätzliche Speicherpfade
| Schlüssel | Typ | Beschreibung |
|---|---|---|
extraPaths |
string[] |
Zusätzliche zu indexierende Verzeichnisse oder Dateien |
{ memory: { search: { extraPaths: ["../team-docs", "/srv/shared-notes"], }, },}Pfade können absolut oder relativ zum Workspace sein. Verzeichnisse werden rekursiv nach .md-Dateien durchsucht. Die Behandlung symbolischer Links hängt vom aktiven Backend ab: Die integrierte Engine überspringt symbolische Links, während QMD dem Verhalten des zugrunde liegenden QMD-Scanners folgt.
Verwenden Sie für eine agentenspezifische, agentenübergreifende Transkriptsuche agents.entries.*.memory.search.qmd.extraCollections anstelle von memory.qmd.paths. Diese zusätzlichen Sammlungen folgen derselben { path, name, pattern? }-Struktur, werden jedoch pro Agent zusammengeführt und können explizite gemeinsame Namen beibehalten, wenn der Pfad außerhalb des aktuellen Workspace liegt. Wenn derselbe aufgelöste Pfad sowohl in memory.qmd.paths als auch in memory.search.qmd.extraCollections vorkommt, behält QMD den ersten Eintrag und überspringt das Duplikat.
Multimodaler Speicher (Gemini)
Indexieren Sie Bilder und Audiodateien neben Markdown mit Gemini Embedding 2:
| Schlüssel | Typ | Standard | Beschreibung |
|---|---|---|---|
multimodal.enabled |
boolean |
false |
Multimodale Indexierung aktivieren |
multimodal.modalities |
string[] |
-- | ["image"], ["audio"] oder ["all"] |
multimodal.maxFileBytes |
number |
10485760 |
Maximale Dateigröße für die Indexierung (10 MiB) |
Unterstützte Formate: .jpg, .jpeg, .png, .webp, .gif, .heic, .heif (Bilder); .mp3, .wav, .ogg, .opus, .m4a, .aac, .flac (Audio).
Embedding-Cache
| Schlüssel | Typ | Standard | Beschreibung |
|---|---|---|---|
cache.enabled |
boolean |
true |
Abschnitts-Embeddings in SQLite zwischenspeichern |
Verhindert bei einer Neuindexierung oder bei Transkriptaktualisierungen die erneute Einbettung unveränderten Textes.
Batch-Indexierung
| Schlüssel | Typ | Standard | Beschreibung |
|---|---|---|---|
remote.nonBatchConcurrency |
number |
4 |
Parallele Inline-Embeddings |
remote.batch.enabled |
boolean |
false |
Batch-Embedding-API aktivieren |
Verfügbar für gemini, openai und voyage. OpenAI Batch ist bei großen Nachbefüllungen in der Regel am schnellsten und kostengünstigsten.
Nebenläufigkeit, Abfrageintervalle und Timeout-Verhalten werden vom Provider verwaltet.
Sitzungsspeichersuche
Indexieren Sie Sitzungstranskripte und stellen Sie sie über memory_search bereit:
| Schlüssel | Typ | Standard | Beschreibung |
|---|---|---|---|
rememberAcrossConversations |
boolean |
false |
Privates sitzungsübergreifendes Erinnern zulassen |
sources |
string[] |
["memory"] |
"sessions" hinzufügen, um Transkripte einzubeziehen |
Die gewöhnliche, vom Modell aufgerufene Suche in Sitzungstranskripten folgt
tools.sessions.visibility. Die standardmäßige
Sichtbarkeit tree umfasst die aktuelle Sitzung, von ihr gestartete Sitzungen und
über die implizite Gruppenwahrnehmung beobachtete Gruppensitzungen desselben Agenten. Andere,
nicht zugehörige Sitzungen erfordern die Sichtbarkeit agent (oder all nur, wenn zusätzlich
agentenübergreifender Abruf erforderlich ist und die Agent-zu-Agent-Richtlinie dies zulässt).
rememberAcrossConversations erweitert diese Einstellung nicht. Es stellt eine
separate, ausschließlich zur Laufzeit geltende Autorisierung bereit, die während des begrenzten
Active-Memory-Durchlaufs auf private Transkripte desselben Agenten beschränkt ist.
Die folgenden Beispiele platzieren diese Einstellungen unter memory.search auf oberster Ebene. Sie können
entsprechende Einstellungen auch in einer agentenspezifischen Überschreibung memory.search anwenden, wenn nur ein
Agent Sitzungstranskripte indizieren und durchsuchen soll.
Für den Abruf desselben Agenten vom Gateway zu Direktnachrichten:
Integriertes Backend
{ memory: { search: { experimental: { sessionMemory: true }, sources: ["memory", "sessions"], }, }, tools: { sessions: { visibility: "agent" }, },}QMD-Backend
{ memory: { backend: "qmd", search: { experimental: { sessionMemory: true }, sources: ["memory", "sessions"], }, qmd: { sessions: { enabled: true }, }, }, tools: { sessions: { visibility: "agent" }, },}Bei Verwendung von QMD exportiert sources: ["sessions"] allein keine Transkripte nach QMD. Legen Sie
zusätzlich memory.qmd.sessions.enabled: true fest. Die übergeordnete Einstellung
rememberAcrossConversations: true bildet die Ausnahme: Sie impliziert den
erforderlichen QMD-Sitzungsexport für diesen Agenten. Implizite Exporte bleiben privat:
Sie verwenden immer den standardmäßigen internen Exportspeicherort (ein konfiguriertes
sessions.exportDir gilt nur für explizite Exporte), werden nur
beim sitzungsübergreifenden Abruf dieses Agenten durchsucht und können von gewöhnlichem memory_get
nicht gelesen werden. Explizites
memory.qmd.sessions.enabled: true behält sein bestehendes Verhalten bei und macht
exportierte Transkripte zu einem Bestandteil des gewöhnlichen Speicherkorpus.
SQLite-Vektorbeschleunigung (sqlite-vec)
| Schlüssel | Typ | Standardwert | Beschreibung |
|---|---|---|---|
store.vector.enabled |
boolean |
true |
sqlite-vec für Vektorabfragen verwenden |
store.vector.extensionPath |
string |
gebündelt | sqlite-vec-Pfad überschreiben |
Wenn sqlite-vec nicht verfügbar ist, greift OpenClaw automatisch auf die prozessinterne Kosinusähnlichkeit zurück.
Indexspeicherung
Integrierte Speicherindizes befinden sich in der OpenClaw-SQLite-Datenbank jedes Agenten unter
agents/<agentId>/agent/openclaw-agent.sqlite.
| Schlüssel | Typ | Standardwert | Beschreibung |
|---|---|---|---|
store.fts.tokenizer |
string |
unicode61 |
FTS5-Tokenizer (unicode61 oder trigram) |
QMD-Backend-Konfiguration
Setzen Sie zum Aktivieren memory.backend = "qmd". Alle QMD-Einstellungen befinden sich unter memory.qmd:
| Schlüssel | Typ | Standardwert | Beschreibung |
|---|---|---|---|
command |
string |
qmd |
Pfad zur ausführbaren QMD-Datei; legen Sie einen absoluten Pfad fest, wenn sich der Dienst-PATH von Ihrer Shell unterscheidet |
searchMode |
string |
search |
Suchbefehl: search, vsearch, query |
rerank |
boolean |
-- | Mit searchMode: "query" und QMD 2.1+ auf false setzen, um das QMD-Reranking zu überspringen |
includeDefaultMemory |
boolean |
true |
MEMORY.md + memory/**/*.md automatisch indizieren |
paths[] |
array |
-- | Zusätzliche Pfade: { name, path, pattern? } |
sessions.enabled |
boolean |
false |
Sitzungstranskripte nach QMD exportieren |
sessions.retentionDays |
number |
-- | Aufbewahrung von Transkripten |
sessions.exportDir |
string |
-- | Exportverzeichnis |
searchMode: "search" verwendet ausschließlich lexikalische/BM25-Suche. OpenClaw führt für diesen Modus keine Bereitschaftsprüfungen semantischer Vektoren und keine QMD-Embedding-Wartung aus, auch nicht während memory status --deep; vsearch und query erfordern weiterhin QMD-Vektorbereitschaft und Embeddings.
rerank: false ändert nur den QMD-Modus query und erfordert QMD 2.1 oder neuer. Im direkten CLI-Modus übergibt OpenClaw --no-rerank; im MCP-Modus über mcporter übergibt es rerank: false an das einheitliche Abfragewerkzeug von QMD. Lassen Sie die Einstellung unausgefüllt, um das standardmäßige QMD-Abfrage-Reranking zu verwenden.
OpenClaw bevorzugt die aktuellen QMD-Sammlungs- und MCP-Abfragestrukturen, unterstützt jedoch weiterhin ältere QMD-Versionen, indem es bei Bedarf kompatible Muster-Flags für Sammlungen und ältere MCP-Werkzeugnamen ausprobiert. Wenn QMD die Unterstützung mehrerer Sammlungsfilter angibt, werden Sammlungen derselben Quelle mit einem einzigen QMD-Prozess durchsucht; ältere QMD-Builds verwenden weiterhin den Kompatibilitätspfad pro Sammlung. Dieselbe Quelle bedeutet, dass dauerhafte Speichersammlungen (standardmäßige Speicherdateien plus benutzerdefinierte Pfade) zusammen gruppiert werden, während Sammlungen von Sitzungstranskripten eine separate Gruppe bleiben, damit die Quellendiversifizierung weiterhin beide Eingaben umfasst.
Grenzwerte
| Schlüssel | Typ | Standardwert | Beschreibung |
|---|---|---|---|
limits.maxResults |
number |
4 |
Maximale Anzahl von Suchergebnissen |
limits.maxSnippetChars |
number |
450 |
Ausschnittlänge begrenzen |
limits.maxInjectedChars |
number |
2200 |
Gesamtzahl eingefügter Zeichen begrenzen |
limits.timeoutMs |
number |
4000 |
Zeitlimit des QMD-Befehls während der QMD-gestützten Suche, einschließlich memory_search; Einrichtung, Synchronisierung, integrierter Rückgriff und ergänzende Arbeiten behalten die standardmäßige Werkzeugfrist bei |
Geltungsbereich
Steuert, welche Sitzungen QMD-Suchergebnisse erhalten können. Dasselbe Schema wie session.sendPolicy:
{ memory: { qmd: { scope: { default: "deny", rules: [{ action: "allow", match: { chatType: "direct" } }], }, }, },}Der ausgelieferte Standardwert erlaubt nur Direktnachrichten bzw. direkte Chats und verweigert Gruppen und andere Kanaltypen. match.keyPrefix entspricht dem normalisierten Sitzungsschlüssel; match.rawKeyPrefix entspricht dem Rohschlüssel einschließlich agent:<id>:.
Quellenangaben
memory.citations gilt für alle Backends:
| Wert | Verhalten |
|---|---|
auto (Standardwert) |
Source: <path#line>-Fußzeile in Ausschnitte aufnehmen |
on |
Fußzeile immer aufnehmen |
off |
Fußzeile weglassen (Pfad wird intern weiterhin an den Agenten übergeben) |
QMD wird bei der ersten Speichernutzung verzögert initialisiert; der Adapter verwaltet die Zeitpläne für Aktualisierungen und Embeddings.
Vollständiges QMD-Beispiel
{ memory: { backend: "qmd", citations: "auto", qmd: { includeDefaultMemory: true, update: { interval: "5m", debounceMs: 15000 }, limits: { maxResults: 4, timeoutMs: 4000 }, scope: { default: "deny", rules: [{ action: "allow", match: { chatType: "direct" } }], }, paths: [{ name: "docs", path: "~/notes", pattern: "**/*.md" }], }, },}Dreaming
Dreaming wird unter plugins.entries.memory-core.config.dreaming konfiguriert, nicht unter memory.search.
Dreaming wird als ein geplanter Durchlauf ausgeführt und verwendet interne Light-/Deep-/REM-Phasen als Implementierungsdetail.
Informationen zum konzeptionellen Verhalten und zu Slash-Befehlen finden Sie unter Dreaming.
Benutzereinstellungen
| Schlüssel | Typ | Standardwert | Beschreibung |
|---|---|---|---|
enabled |
boolean |
false |
Dreaming vollständig aktivieren oder deaktivieren |
frequency |
string |
0 3 * * * |
Optionaler Cron-Zeitplan für den vollständigen Dreaming-Durchlauf |
model |
string |
Standardmodell | Optionale Modellüberschreibung für den Dream-Diary-Unteragenten |
phases.deep.maxPromotedSnippetTokens |
number |
160 |
Maximale geschätzte Anzahl von Tokens, die aus jedem in MEMORY.md übernommenen Kurzzeitabruf-Ausschnitt beibehalten wird; Herkunftsmetadaten bleiben sichtbar |
Beispiel
{ plugins: { entries: { "memory-core": { subagent: { allowModelOverride: true, allowedModels: ["anthropic/claude-sonnet-4-6"], }, config: { dreaming: { enabled: true, frequency: "0 3 * * *", model: "anthropic/claude-sonnet-4-6", }, }, }, }, },}