Technical reference
ã¡ã¢ãªèšå®ãªãã¡ã¬ã³ã¹
ãã®ããŒãžã§ã¯ãOpenClaw ã¡ã¢ãªæ€çŽ¢ã®ãã¹ãŠã®èšå®é ç®ãäžèЧããŸããæŠå¿µçãªæŠèŠã«ã€ããŠã¯ã次ãåç §ããŠãã ããã
ã¡ã¢ãªã®ä»çµã¿ã
ããã©ã«ãã® SQLite ããã¯ãšã³ãã
ããŒã«ã«ãã¡ãŒã¹ãã®ãµã€ãã«ãŒã
æ€çŽ¢ãã€ãã©ã€ã³ãšãã¥ãŒãã³ã°ã
察話åã»ãã·ã§ã³çšã®ã¡ã¢ãªãµããšãŒãžã§ã³ãã
ç¹ã«èšèŒããªãéãããã¹ãŠã®ã¡ã¢ãªæ€çŽ¢èšå®ã¯ openclaw.json ã® agents.defaults.memorySearch é
äžã«ãããŸãã
ãããã€ããŒã®éžæ
| ã㌠| å | ããã©ã«ã | 説æ |
|---|---|---|---|
provider |
string |
"openai" |
bedrockãdeepinfraãgeminiãgithub-copilotãlocalãmistralãollamaãopenaiãopenai-compatibleãvoyage ãªã©ã®åã蟌ã¿ã¢ããã¿ãŒ IDãapi ãã¡ã¢ãªåã蟌ã¿ã¢ããã¿ãŒãŸã㯠OpenAI äºæã¢ãã« API ãæããèšå®æžã¿ã® models.providers.<id> ãæå®ã§ããŸã |
model |
string |
ãããã€ããŒã®ããã©ã«ã | åã蟌ã¿ã¢ãã«å |
fallback |
string |
"none" |
ãã©ã€ããªã倱æããå Žåã®ãã©ãŒã«ããã¯ã¢ããã¿ãŒ ID |
enabled |
boolean |
true |
ã¡ã¢ãªæ€çŽ¢ãæå¹ãŸãã¯ç¡å¹ã«ããŸã |
provider ãèšå®ãããŠããªãå ŽåãOpenClaw 㯠OpenAI åã蟌ã¿ã䜿çšããŸããGeminiãVoyageãMistralãDeepInfraãBedrockãGitHub Copilotã
OllamaãããŒã«ã« GGUF ã¢ãã«ããŸã㯠OpenAI äºæã® /v1/embeddings ãšã³ããã€ã³ãã䜿çšããã«ã¯ãprovider
ãæç€ºçã«èšå®ããŠãã ããã
ãŸã provider: "auto" ãšãªã£ãŠããã¬ã¬ã·ãŒèšå®ã¯ openai ã«è§£æ±ºãããŸãã
provider ãæªèšå®ã®å Žåãã¬ã¬ã·ãŒã® provider: "auto" ãååšããå ŽåããŸãã¯
provider: "none" ãæå³çã« FTS ã®ã¿ã®ã¢ãŒããéžæããŠããå Žåãåã蟌ã¿ãå©çšã§ããªããŠããã¡ã¢ãªãªã³ãŒã«ã¯èªåœç㪠FTS ã©ã³ãã³ã°ãåŒãç¶ã䜿çšã§ããŸãã
æç€ºçãªéããŒã«ã«ãããã€ããŒã¯å€±ææã«éããŸããmemorySearch.provider ã«
OpenAIãGeminiãVoyageãMistralã
BedrockãGitHub CopilotãDeepInfraãOllamaãLM StudioããŸã㯠OpenAI äºæã®
ã«ã¹ã¿ã ãããã€ããŒãªã©ãå
·äœçãªãªã¢ãŒãããã¯ãšã³ãã®ãããã€ããŒãèšå®ãããã®ãããã€ããŒãå®è¡æã«å©çšã§ããªãå Žåãmemory_search
ã¯é»ã£ãŠ FTS ã®ã¿ã®ãªã³ãŒã«ã䜿çšãã代ããã«ãå©çšäžå¯ã®çµæãè¿ããŸãã
ãããã€ããŒãŸãã¯èªèšŒèšå®ãä¿®æ£ããããå°éå¯èœãªãããã€ããŒã«åãæ¿ããããæå³çã« FTS ã®ã¿ã®ãªã³ãŒã«ã䜿ãããå Žåã¯
provider: "none" ãèšå®ããŠãã ããã
ã«ã¹ã¿ã ãããã€ã㌠ID
memorySearch.provider ã¯ãollama ãªã©ã®ã¡ã¢ãªå°çšãããã€ããŒã¢ããã¿ãŒããŸã㯠openai-responses / openai-completions ãªã©ã® OpenAI äºæã¢ãã« API çšã«ãã«ã¹ã¿ã ã® models.providers.<id> ãšã³ããªãæãããšãã§ããŸããOpenClaw ã¯ããšã³ããã€ã³ããèªèšŒãã¢ãã«ãã¬ãã£ãã¯ã¹åŠçã®ããã«ã«ã¹ã¿ã ãããã€ã㌠ID ãä¿æããªãããåã蟌ã¿ã¢ããã¿ãŒçšã«ãã®ãããã€ããŒã® api ææè
ã解決ããŸããããã«ããããã«ã GPU ãŸãã¯ãã«ããã¹ãæ§æã§ãã¡ã¢ãªåã蟌ã¿ãç¹å®ã®ããŒã«ã«ãšã³ããã€ã³ãã«å°çšåã§ããŸãã
{ models: { providers: { "ollama-5080": { api: "ollama", baseUrl: "http://gpu-box.local:11435", apiKey: "ollama-local", models: [{ id: "qwen3-embedding:0.6b" }], }, }, }, agents: { defaults: { memorySearch: { provider: "ollama-5080", model: "qwen3-embedding:0.6b", }, }, },}API ããŒã®è§£æ±º
ãªã¢ãŒãåã蟌ã¿ã«ã¯ API ããŒãå¿ èŠã§ããBedrock ã¯ä»£ããã« AWS SDK ã®ããã©ã«ãèªèšŒæ å ±ãã§ãŒã³ïŒã€ã³ã¹ã¿ã³ã¹ããŒã«ãSSOãã¢ã¯ã»ã¹ããŒïŒã䜿çšããŸãã
| ãããã€ã㌠| ç°å¢å€æ° | èšå®ã㌠|
|---|---|---|
| Bedrock | AWS èªèšŒæ å ±ãã§ãŒã³ | API ããŒã¯äžèŠ |
| 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 |
ããã€ã¹ãã°ã€ã³çµç±ã®èªèšŒãããã¡ã€ã« |
| Mistral | MISTRAL_API_KEY |
models.providers.mistral.apiKey |
| Ollama | OLLAMA_API_KEYïŒãã¬ãŒã¹ãã«ããŒïŒ |
-- |
| OpenAI | OPENAI_API_KEY |
models.providers.openai.apiKey |
| Voyage | VOYAGE_API_KEY |
models.providers.voyage.apiKey |
ãªã¢ãŒããšã³ããã€ã³ãèšå®
ã°ããŒãã«ãª OpenAI ãã£ããèªèšŒæ
å ±ãç¶æ¿ãã¹ãã§ãªããæ±çšã® OpenAI äºæ
/v1/embeddings ãµãŒããŒã«ã¯ provider: "openai-compatible" ã䜿çšããŸãã
remote.baseUrlstringã«ã¹ã¿ã API ããŒã¹ URLã
remote.apiKeystringAPI ããŒãäžæžãããŸãã
remote.headersobject远å ã® HTTP ããããŒïŒãããã€ããŒã®ããã©ã«ããšããŒãžïŒã
{ agents: { defaults: { memorySearch: { provider: "openai-compatible", model: "text-embedding-3-small", remote: { baseUrl: "https://api.example.com/v1/", apiKey: "YOUR_KEY", }, }, }, },}ãããã€ããŒåºæã®èšå®
Gemini
| ã㌠| å | ããã©ã«ã | 説æ |
|---|---|---|---|
model |
string |
gemini-embedding-001 |
gemini-embedding-2-preview ããµããŒã |
outputDimensionality |
number |
3072 |
Embedding 2 ã®å Žå: 768ã1536ããŸã㯠3072 |
OpenAI äºæã®å ¥åã¿ã€ã
OpenAI äºæã®åã蟌ã¿ãšã³ããã€ã³ãã¯ããããã€ããŒåºæã® input_type ãªã¯ãšã¹ããã£ãŒã«ãã«ãªããã€ã³ã§ããŸããããã¯ãã¯ãšãªåã蟌ã¿ãšããã¥ã¡ã³ãåã蟌ã¿ã§ç°ãªãã©ãã«ãå¿
èŠãšããé察称åã蟌ã¿ã¢ãã«ã«æçšã§ãã
| ã㌠| å | ããã©ã«ã | 説æ |
|---|---|---|---|
inputType |
string |
æªèšå® | ã¯ãšãªåã蟌ã¿ãšããã¥ã¡ã³ãåã蟌ã¿ã§å
±æãã input_type |
queryInputType |
string |
æªèšå® | ã¯ãšãªæã® input_type; inputType ãäžæžã |
documentInputType |
string |
æªèšå® | ã€ã³ããã¯ã¹/ããã¥ã¡ã³ãã® input_type; inputType ãäžæžã |
{ agents: { defaults: { memorySearch: { provider: "openai-compatible", remote: { baseUrl: "https://embeddings.example/v1", apiKey: "${EMBEDDINGS_API_KEY}", }, model: "asymmetric-embedder", queryInputType: "query", documentInputType: "passage", }, }, },}ãããã®å€ã倿Žãããšããããã€ããŒãããã€ã³ããã¯ã¹äœæã®åã蟌ã¿ãã£ãã·ã¥ ID ã«åœ±é¿ããŸããäžæµã¢ãã«ãã©ãã«ãç°ãªããã®ãšããŠæ±ãå Žåã¯ãã¡ã¢ãªã®åã€ã³ããã¯ã¹ãè¡ã£ãŠãã ããã
Bedrock
Bedrock åã蟌ã¿èšå®
Bedrock 㯠AWS SDK ã®ããã©ã«ãèªèšŒæ å ±ãã§ãŒã³ã䜿çšããŸããAPI ããŒã¯äžèŠã§ããOpenClaw ã Bedrock 察å¿ã®ã€ã³ã¹ã¿ã³ã¹ããŒã«ãæã€ EC2 äžã§å®è¡ãããŠããå Žåã¯ããããã€ããŒãšã¢ãã«ãèšå®ããã ãã§ãã
{ agents: { defaults: { memorySearch: { provider: "bedrock", model: "amazon.titan-embed-text-v2:0", }, }, },}| ã㌠| å | ããã©ã«ã | 説æ |
|---|---|---|---|
model |
string |
amazon.titan-embed-text-v2:0 |
ä»»æã® Bedrock åã蟌ã¿ã¢ãã« ID |
outputDimensionality |
number |
ã¢ãã«ã®ããã©ã«ã | Titan V2 ã®å Žå: 256ã512ããŸã㯠1024 |
ãµããŒããããŠããã¢ãã«ïŒãã¡ããªãŒæ€åºãšæ¬¡å æ°ã®ããã©ã«ããå«ãïŒ:
| Model ID | ãããã€ã㌠| ããã©ã«ãæ¬¡å æ° | èšå®å¯èœãªæ¬¡å æ° |
|---|---|---|---|
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-1536 |
twelvelabs.marengo-embed-3-0-v1:0 |
TwelveLabs | 512 | -- |
twelvelabs.marengo-embed-2-7-v1:0 |
TwelveLabs | 1024 | -- |
ã¹ã«ãŒãããæ¥å°ŸèŸä»ãã®ããªã¢ã³ãïŒäŸ: amazon.titan-embed-text-v1:2:8kïŒã¯ãããŒã¹ã¢ãã«ã®èšå®ãç¶æ¿ããŸãã
èªèšŒ: Bedrock èªèšŒã¯ãæšæºã® AWS SDK èªèšŒæ å ±è§£æ±ºé åºã䜿çšããŸãã
- ç°å¢å€æ°ïŒ
AWS_ACCESS_KEY_ID+AWS_SECRET_ACCESS_KEYïŒ - SSO ããŒã¯ã³ãã£ãã·ã¥
- Web ã¢ã€ãã³ãã£ãã£ããŒã¯ã³èªèšŒæ å ±
- å ±æèªèšŒæ å ±ãã¡ã€ã«ãšèšå®ãã¡ã€ã«
- ECS ãŸã㯠EC2 ã¡ã¿ããŒã¿èªèšŒæ å ±
ãªãŒãžã§ã³ã¯ãAWS_REGIONãAWS_DEFAULT_REGIONãamazon-bedrock ãããã€ããŒã® baseUrl ãã解決ãããããããã©ã«ãã§ us-east-1 ã«ãªããŸãã
IAM æš©é: IAM ããŒã«ãŸãã¯ãŠãŒã¶ãŒã«ã¯æ¬¡ãå¿ èŠã§ãã
{ "Effect": "Allow", "Action": "bedrock:InvokeModel", "Resource": "*"}æå°æš©éã«ããã«ã¯ãInvokeModel ã®ã¹ã³ãŒããç¹å®ã®ã¢ãã«ã«éå®ããŸãã
arn:aws:bedrock:*::foundation-model/amazon.titan-embed-text-v2:0Local (GGUF + llama.cpp)
| ã㌠| å | ããã©ã«ã | 説æ |
|---|---|---|---|
local.modelPath |
string |
èªåããŠã³ããŒã | GGUF ã¢ãã«ãã¡ã€ã«ãžã®ãã¹ |
local.modelCacheDir |
string |
node-llama-cpp ã®ããã©ã«ã | ããŠã³ããŒãæžã¿ã¢ãã«ã®ãã£ãã·ã¥ãã£ã¬ã¯ã㪠|
local.contextSize |
number | "auto" |
4096 |
åã蟌ã¿ã³ã³ããã¹ãã®ã³ã³ããã¹ããŠã£ã³ããŠãµã€ãºã4096 ã¯äžè¬çãªãã£ã³ã¯ïŒ128ã512 ããŒã¯ã³ïŒãã«ããŒãã€ã€ãéã¿ä»¥å€ã® VRAM ãæããŸããå¶çŽã®ãããã¹ãã§ã¯ 1024ã2048 ã«äžããŸãã"auto" ã¯ã¢ãã«ã®åŠç¿æã®æå€§å€ã䜿çšããŸãã8B+ ã¢ãã«ã§ã¯æšå¥šãããŸããïŒQwen3-Embedding-8B: 40,960 ããŒã¯ã³ â çŽ 32 GB VRAMã4096 ã§ã¯çŽ 8.8 GBïŒã |
ãŸãå
¬åŒ llama.cpp ãããã€ããŒãã€ã³ã¹ããŒã«ããŸã: openclaw plugins install @openclaw/llama-cpp-providerã
ããã©ã«ãã¢ãã«: embeddinggemma-300m-qat-Q8_0.ggufïŒçŽ 0.6 GBãèªåããŠã³ããŒãïŒããœãŒã¹ãã§ãã¯ã¢ãŠãã§ã¯ãåŒãç¶ããã€ãã£ããã«ãã®æ¿èªãå¿
èŠã§ã: pnpm approve-builds ã®åŸã« pnpm rebuild node-llama-cppã
Gateway ã䜿çšãããã®ãšåããããã€ããŒãã¹ãæ€èšŒããã«ã¯ãã¹ã¿ã³ãã¢ãã³ CLI ã䜿çšããŸãã
openclaw memory status --deep --agent mainopenclaw memory index --force --agent mainããŒã«ã« GGUF åã蟌ã¿ã«ã¯ provider: "local" ãæç€ºçã«èšå®ããŸããhf: ãš HTTP(S) ã¢ãã«åç
§ã¯æç€ºçãªããŒã«ã«èšå®ã§ãµããŒããããŠããŸãããããã©ã«ããããã€ããŒã¯å€æŽãããŸããã
ã€ã³ã©ã€ã³åã蟌ã¿ã®ã¿ã€ã ã¢ãŠã
sync.embeddingBatchTimeoutSecondsnumberã¡ã¢ãªãŒã€ã³ããã¯ã¹äœæäžã®ã€ã³ã©ã€ã³åã蟌ã¿ãããã®ã¿ã€ã ã¢ãŠããäžæžãããŸãã
æªèšå®ã®å Žåã¯ãããã€ããŒã®ããã©ã«ãã䜿çšããŸããlocalãollamaãlmstudio ãªã©ã®ããŒã«ã«/ã»ã«ããã¹ããããã€ããŒã§ã¯ 600 ç§ããã¹ãåãããã€ããŒã§ã¯ 120 ç§ã§ããããŒã«ã«ã® CPU ããŠã³ããªåã蟌ã¿ããããæ£åžžã ãé
ãå Žåã¯ããã®å€ãå¢ãããŸãã
ãã€ããªããæ€çŽ¢èšå®
ãã¹ãŠ memorySearch.query.hybrid ã®äžã«ãããŸãã
| ã㌠| å | ããã©ã«ã | 説æ |
|---|---|---|---|
enabled |
boolean |
true |
ãã€ããªãã BM25 + ãã¯ãã«æ€çŽ¢ãæå¹å |
vectorWeight |
number |
0.7 |
ãã¯ãã«ã¹ã³ã¢ã®éã¿ïŒ0-1ïŒ |
textWeight |
number |
0.3 |
BM25 ã¹ã³ã¢ã®éã¿ïŒ0-1ïŒ |
candidateMultiplier |
number |
4 |
åè£ããŒã«ãµã€ãºã®ä¹æ° |
MMR (diversity)
| ã㌠| å | ããã©ã«ã | 説æ |
|---|---|---|---|
mmr.enabled |
boolean |
false |
MMR åã©ã³ãã³ã°ãæå¹å |
mmr.lambda |
number |
0.7 |
0 = æå€§å€æ§æ§ã1 = æå€§é¢é£æ§ |
Temporal decay (recency)
| ã㌠| å | ããã©ã«ã | 説æ |
|---|---|---|---|
temporalDecay.enabled |
boolean |
false |
æ°ããããŒã¹ããæå¹å |
temporalDecay.halfLifeDays |
number |
30 |
N æ¥ããšã«ã¹ã³ã¢ãåæž |
ãšããŒã°ãªãŒã³ãã¡ã€ã«ïŒMEMORY.mdãmemory/ å
ã®æ¥ä»ãªããã¡ã€ã«ïŒã¯æžè¡°ãããŸããã
å®å šãªäŸ
{ agents: { defaults: { memorySearch: { query: { hybrid: { vectorWeight: 0.7, textWeight: 0.3, mmr: { enabled: true, lambda: 0.7 }, temporalDecay: { enabled: true, halfLifeDays: 30 }, }, }, }, }, },}远å ã¡ã¢ãªãã¹
| ã㌠| å | 説æ |
|---|---|---|
extraPaths |
string[] |
ã€ã³ããã¯ã¹å¯Ÿè±¡ã«ãã远å ã®ãã£ã¬ã¯ããªãŸãã¯ãã¡ã€ã« |
{ agents: { defaults: { memorySearch: { extraPaths: ["../team-docs", "/srv/shared-notes"], }, }, },}ãã¹ã¯çµ¶å¯Ÿãã¹ãŸãã¯ã¯ãŒã¯ã¹ããŒã¹çžå¯Ÿãã¹ã«ã§ããŸãããã£ã¬ã¯ããªã¯ .md ãã¡ã€ã«ãååž°çã«ã¹ãã£ã³ããŸããã·ã³ããªãã¯ãªã³ã¯ã®æ±ãã¯æå¹ãªããã¯ãšã³ãã«ãã£ãŠç°ãªããŸããçµã¿èŸŒã¿ãšã³ãžã³ã¯ã·ã³ããªãã¯ãªã³ã¯ãç¡èŠããQMD ã¯åºç€ãšãªã QMD ã¹ãã£ããŒã®æåã«åŸããŸãã
ãšãŒãžã§ã³ãã¹ã³ãŒãã®ãšãŒãžã§ã³ã暪æãã©ã³ã¹ã¯ãªããæ€çŽ¢ã«ã¯ãmemory.qmd.paths ã§ã¯ãªã agents.list[].memorySearch.qmd.extraCollections ã䜿çšããŸãããããã®è¿œå ã³ã¬ã¯ã·ã§ã³ã¯åã { path, name, pattern? } 圢ç¶ã«åŸããŸããããšãŒãžã§ã³ãããšã«ããŒãžããããã¹ãçŸåšã®ã¯ãŒã¯ã¹ããŒã¹å€ãæãå Žåã§ãæç€ºçãªå
±æåãä¿æã§ããŸããåã解決æžã¿ãã¹ã memory.qmd.paths ãš memorySearch.qmd.extraCollections ã®äž¡æ¹ã«çŸããå ŽåãQMD ã¯æåã®ãšã³ããªãä¿æããéè€ãã¹ãããããŸãã
ãã«ãã¢ãŒãã«ã¡ã¢ãªïŒGeminiïŒ
Gemini Embedding 2 ã䜿çšããŠãMarkdown ãšäžç·ã«ç»åãšé³å£°ãã€ã³ããã¯ã¹ããŸãã
| ã㌠| å | ããã©ã«ã | 説æ |
|---|---|---|---|
multimodal.enabled |
boolean |
false |
ãã«ãã¢ãŒãã«ã€ã³ããã¯ã¹ãæå¹ã«ãã |
multimodal.modalities |
string[] |
-- | ["image"]ã["audio"]ããŸã㯠["all"] |
multimodal.maxFileBytes |
number |
10000000 |
ã€ã³ããã¯ã¹å¯Ÿè±¡ã®æå€§ãã¡ã€ã«ãµã€ãº |
察å¿åœ¢åŒ: .jpgã.jpegã.pngã.webpã.gifã.heicã.heifïŒç»åïŒã.mp3ã.wavã.oggã.opusã.m4aã.aacã.flacïŒé³å£°ïŒã
åã蟌ã¿ãã£ãã·ã¥
| ã㌠| å | ããã©ã«ã | 説æ |
|---|---|---|---|
cache.enabled |
boolean |
true |
ãã£ã³ã¯åã蟌ã¿ã SQLite ã«ãã£ãã·ã¥ãã |
cache.maxEntries |
number |
50000 |
ãã£ãã·ã¥ãããåã蟌ã¿ã®æå€§æ° |
åã€ã³ããã¯ã¹ãŸãã¯ãã©ã³ã¹ã¯ãªããæŽæ°æã«ã倿ŽãããŠããªãããã¹ããå床åã蟌ãããšãé²ããŸãã
ãããã€ã³ããã¯ã¹
| ã㌠| å | ããã©ã«ã | 説æ |
|---|---|---|---|
remote.nonBatchConcurrency |
number |
4 |
䞊åã€ã³ã©ã€ã³åã蟌㿠|
remote.batch.enabled |
boolean |
false |
ãããåã蟌㿠API ãæå¹ã«ãã |
remote.batch.concurrency |
number |
2 |
䞊åããããžã§ã |
remote.batch.wait |
boolean |
true |
ãããå®äºãåŸ æ© |
remote.batch.pollIntervalMs |
number |
-- | ããŒãªã³ã°éé |
remote.batch.timeoutMinutes |
number |
-- | ãããã¿ã€ã ã¢ãŠã |
openaiãgeminiãvoyage ã§å©çšã§ããŸããOpenAI ãããã¯éåžžãå€§èŠæš¡ãªããã¯ãã£ã«ã§ã¯æéãã€æå®ã§ãã
remote.nonBatchConcurrency ã¯ããããã€ããŒã®ããã API ãæå¹ã§ãªãå Žåã«ãããŒã«ã«ãŸãã¯ã»ã«ããã¹ããããã€ããŒãããã³ãã¹ãåãããã€ããŒã§äœ¿çšãããã€ã³ã©ã€ã³åã蟌ã¿åŒã³åºããå¶åŸ¡ããŸããOllama ã¯ãå°èŠæš¡ãªããŒã«ã«ãã¹ãã«éå°ãªè² è·ããããªãããã«ãéãããã€ã³ããã¯ã¹ã§ã¯ããã©ã«ãã§ 1 ã«ãªããŸãããã倧ããªãã·ã³ã§ã¯ãããé«ãå€ãèšå®ããŠãã ããã
ããã¯ãã€ã³ã©ã€ã³åã蟌ã¿åŒã³åºãã®ã¿ã€ã ã¢ãŠããå¶åŸ¡ãã sync.embeddingBatchTimeoutSeconds ãšã¯å¥ã§ãã
ã»ãã·ã§ã³ã¡ã¢ãªæ€çŽ¢ïŒå®éšçïŒ
ã»ãã·ã§ã³ãã©ã³ã¹ã¯ãªãããã€ã³ããã¯ã¹ããmemory_search çµç±ã§è¡šç€ºããŸãã
| ã㌠| å | ããã©ã«ã | 説æ |
|---|---|---|---|
experimental.sessionMemory |
boolean |
false |
ã»ãã·ã§ã³ã€ã³ããã¯ã¹ãæå¹ã«ãã |
sources |
string[] |
["memory"] |
ãã©ã³ã¹ã¯ãªãããå«ããã«ã¯ "sessions" ã远å |
sync.sessions.deltaBytes |
number |
100000 |
åã€ã³ããã¯ã¹ã®ãã€ããããå€ |
sync.sessions.deltaMessages |
number |
50 |
åã€ã³ããã¯ã¹ã®ã¡ãã»ãŒãžãããå€ |
ã»ãã·ã§ã³ãã©ã³ã¹ã¯ãªããã®ãããã
tools.sessions.visibility ã«åŸããŸããããã©ã«ãã®
tree å¯èŠæ§ã§ã¯ãçŸåšã®ã»ãã·ã§ã³ãšãã®ã»ãã·ã§ã³ãçæããã»ãã·ã§ã³ã ããå
¬éãããŸããDM ãªã©ãå¥ã®ã»ãã·ã§ã³ããåããšãŒãžã§ã³ãã®ç¡é¢ä¿ãª Gateway ãã£ã¹ãããã»ãã·ã§ã³ãæ³èµ·ããã«ã¯ãæå³çã«å¯èŠæ§ã agent ã«åºããŠãã ããïŒãšãŒãžã§ã³ãããŸããã æ³èµ·ãå¿
èŠã§ããšãŒãžã§ã³ãéããªã·ãŒãèš±å¯ããŠããå Žåã®ã¿ allïŒã
以äžã®äŸã§ã¯ããããã®èšå®ã agents.defaults ã®äžã«çœ®ããŠããŸãã1 ã€ã®ãšãŒãžã§ã³ãã ããã»ãã·ã§ã³ãã©ã³ã¹ã¯ãªãããã€ã³ããã¯ã¹åããŠæ€çŽ¢ãã¹ãå Žåã¯ããšãŒãžã§ã³ãããšã®ãªãŒããŒã©ã€ãã§åçã® memorySearch èšå®ãé©çšããããšãã§ããŸãã
åããšãŒãžã§ã³ãã§ã® Gateway ãã DM ãžã®æ³èµ·ã®å Žå:
çµã¿èŸŒã¿ããã¯ãšã³ã
{ agents: { defaults: { memorySearch: { experimental: { sessionMemory: true }, sources: ["memory", "sessions"], }, }, }, tools: { sessions: { visibility: "agent" }, },}QMD ããã¯ãšã³ã
{ agents: { defaults: { memorySearch: { experimental: { sessionMemory: true }, sources: ["memory", "sessions"], }, }, }, memory: { backend: "qmd", qmd: { sessions: { enabled: true }, }, }, tools: { sessions: { visibility: "agent" }, },}QMD ã䜿çšããå Žåãagents.defaults.memorySearch.experimental.sessionMemory ãš
sources: ["sessions"] ã ãã§ã¯ããã©ã³ã¹ã¯ãªãã㯠QMD ã«ãšã¯ã¹ããŒããããŸãããããããŠ
memory.qmd.sessions.enabled: true ãèšå®ããŠãã ããã
SQLite ãã¯ãã«é«éå (sqlite-vec)
| ã㌠| å | ããã©ã«ã | 説æ |
|---|---|---|---|
store.vector.enabled |
boolean |
true |
ãã¯ãã«ã¯ãšãªã« sqlite-vec ã䜿çšãã |
store.vector.extensionPath |
string |
忢± | sqlite-vec ãã¹ãäžæžããã |
sqlite-vec ãå©çšã§ããªãå ŽåãOpenClaw ã¯èªåçã«ããã»ã¹å ã®ã³ãµã€ã³é¡äŒŒåºŠã«ãã©ãŒã«ããã¯ããŸãã
ã€ã³ããã¯ã¹ã¹ãã¬ãŒãž
çµã¿èŸŒã¿ã¡ã¢ãªãŒã€ã³ããã¯ã¹ã¯ãåãšãŒãžã§ã³ãã® OpenClaw SQLite ããŒã¿ããŒã¹
agents/<agentId>/agent/openclaw-agent.sqlite ã«ä¿åãããŸãã
| ã㌠| å | ããã©ã«ã | 説æ |
|---|---|---|---|
store.fts.tokenizer |
string |
unicode61 |
FTS5 ããŒã¯ãã€ã¶ãŒïŒunicode61 ãŸã㯠trigramïŒ |
QMD ããã¯ãšã³ãèšå®
æå¹åããã«ã¯ memory.backend = "qmd" ãèšå®ããŸãããã¹ãŠã® QMD èšå®ã¯ memory.qmd ã®äžã«ãããŸãã
| ã㌠| å | ããã©ã«ã | 説æ |
|---|---|---|---|
command |
string |
qmd |
QMD å®è¡å¯èœãã¡ã€ã«ã®ãã¹ããµãŒãã¹ã® PATH ãã·ã§ã«ãšç°ãªãå Žåã¯çµ¶å¯Ÿãã¹ãèšå®ããŸã |
searchMode |
string |
search |
æ€çŽ¢ã³ãã³ã: search, vsearch, query |
rerank |
boolean |
-- | QMD ã®åã©ã³ãã³ã°ãã¹ãããããã«ã¯ãQMD 2.1+ ã§ searchMode: "query" ãšãšãã« false ã«èšå®ããŸã |
includeDefaultMemory |
boolean |
true |
MEMORY.md + memory/**/*.md ãèªåã€ã³ããã¯ã¹åããŸã |
paths[] |
array |
-- | 远å ãã¹: { name, path, pattern? } |
sessions.enabled |
boolean |
false |
ã»ãã·ã§ã³ãã©ã³ã¹ã¯ãªããã QMD ã«ãšã¯ã¹ããŒãããŸã |
sessions.retentionDays |
number |
-- | ãã©ã³ã¹ã¯ãªããã®ä¿ææé |
sessions.exportDir |
string |
-- | ãšã¯ã¹ããŒããã£ã¬ã¯ã㪠|
searchMode: "search" ã¯èªåœ/BM25 ã®ã¿ã§ããOpenClaw ã¯ãã®ã¢ãŒãã§ã¯ãmemory status --deep äžãå«ããã»ãã³ãã£ãã¯ãã¯ãã«ã®æºåç¶æ³ãããŒãã QMD åã蟌ã¿ã¡ã³ããã³ã¹ãå®è¡ããŸãããvsearch ãš query ã¯åŒãç¶ã QMD ãã¯ãã«ã®æºåç¶æ³ãšåã蟌ã¿ãå¿
èŠãšããŸãã
rerank: false 㯠QMD ã® query ã¢ãŒãã ãã倿ŽããQMD 2.1 以éãå¿
èŠã§ããçŽæ¥ CLI ã¢ãŒãã§ã¯ OpenClaw 㯠--no-rerank ãæž¡ããŸããmcporter ããŒã¹ã® MCP ã¢ãŒãã§ã¯ãQMD ã®çµ±åã¯ãšãªããŒã«ã« rerank: false ãæž¡ããŸããQMD ã®ããã©ã«ãã®ã¯ãšãªåã©ã³ãã³ã°åäœã䜿çšããã«ã¯æªèšå®ã®ãŸãŸã«ããŠãã ããã
OpenClaw ã¯çŸåšã® QMD ã³ã¬ã¯ã·ã§ã³ãš MCP ã¯ãšãªåœ¢ç¶ãåªå ããŸãããå¿ èŠã«å¿ããŠäºææ§ã®ããã³ã¬ã¯ã·ã§ã³ãã¿ãŒã³ãã©ã°ãå€ã MCP ããŒã«åã詊ãããšã§ãå€ã QMD ãªãªãŒã¹ãåäœããããã«ããŠããŸããQMD ãè€æ°ã®ã³ã¬ã¯ã·ã§ã³ãã£ã«ã¿ãŒã®ãµããŒããéç¥ããŠããå ŽåãåäžãœãŒã¹ã®ã³ã¬ã¯ã·ã§ã³ã¯ 1 ã€ã® QMD ããã»ã¹ã§æ€çŽ¢ãããŸããå€ã QMD ãã«ãã§ã¯ãã³ã¬ã¯ã·ã§ã³ããšã®äºæãã¹ãç¶æãããŸããåäžãœãŒã¹ãšã¯ãæ°žç¶ã¡ã¢ãªãŒã³ã¬ã¯ã·ã§ã³ããŸãšããŠã°ã«ãŒãåãããäžæ¹ãã»ãã·ã§ã³ãã©ã³ã¹ã¯ãªããã³ã¬ã¯ã·ã§ã³ã¯å¥ã°ã«ãŒãã®ãŸãŸæ®ãããœãŒã¹ã®å€æ§åãåŒãç¶ãäž¡æ¹ã®å ¥åãæã€ããšãæå³ããŸãã
æŽæ°ã¹ã±ãžã¥ãŒã«
| ã㌠| å | ããã©ã«ã | 説æ |
|---|---|---|---|
update.interval |
string |
5m |
æŽæ°éé |
update.debounceMs |
number |
15000 |
ãã¡ã€ã«å€æŽããããŠã³ã¹ |
update.onBoot |
boolean |
true |
é·æéå®è¡ããã QMD ãããŒãžã£ãŒãéãããšãã«æŽæ°ããã峿ã®èµ·åææŽæ°ãã¹ãããããã«ã¯ false ã«èšå® |
update.startup |
string |
off |
ä»»æã® gateway èµ·åæ QMD åæå: offãidleããŸã㯠immediate |
update.startupDelayMs |
number |
120000 |
startup: "idle" æŽæ°ãå®è¡ããããŸã§ã®é
å»¶ |
update.waitForBootSync |
boolean |
false |
ååæŽæ°ãå®äºãããŸã§ãããŒãžã£ãŒã®ãªãŒãã³ãããã㯠|
update.embedInterval |
string |
-- | å¥åã®åã蟌ã¿éé |
update.commandTimeoutMs |
number |
-- | QMD ã³ãã³ãã®ã¿ã€ã ã¢ãŠã |
update.updateTimeoutMs |
number |
-- | QMD æŽæ°æäœã®ã¿ã€ã ã¢ãŠã |
update.embedTimeoutMs |
number |
-- | QMD åãèŸŒã¿æäœã®ã¿ã€ã ã¢ãŠã |
å¶é
| ã㌠| å | ããã©ã«ã | 説æ |
|---|---|---|---|
limits.maxResults |
number |
6 |
æå€§æ€çŽ¢çµææ° |
limits.maxSnippetChars |
number |
-- | ã¹ããããã®é·ããå¶é |
limits.maxInjectedChars |
number |
-- | æ³šå ¥ãããç·æåæ°ãå¶é |
limits.timeoutMs |
number |
4000 |
æ€çŽ¢ã¿ã€ã ã¢ãŠã |
ã¹ã³ãŒã
ã©ã®ã»ãã·ã§ã³ã QMD æ€çŽ¢çµæãåä¿¡ã§ããããå¶åŸ¡ããŸããsession.sendPolicy ãšåãã¹ããŒãã§ã:
{ memory: { qmd: { scope: { default: "deny", rules: [{ action: "allow", match: { chatType: "direct" } }], }, }, },}忢±ã®ããã©ã«ãã§ã¯ãã€ã¬ã¯ãããã³ãã£ã³ãã«ã»ãã·ã§ã³ãèš±å¯ããã°ã«ãŒãã¯åŒãç¶ãæåŠããŸãã
ããã©ã«ã㯠DM ã®ã¿ã§ããmatch.keyPrefix ã¯æ£èŠåãããã»ãã·ã§ã³ããŒã«äžèŽããŸããmatch.rawKeyPrefix 㯠agent:<id>: ãå«ãçããŒã«äžèŽããŸãã
åŒçš
memory.citations ã¯ãã¹ãŠã®ããã¯ãšã³ãã«é©çšãããŸã:
| å€ | åäœ |
|---|---|
auto (ããã©ã«ã) |
ã¹ããããã« Source: <path#line> ããã¿ãŒãå«ãã |
on |
åžžã«ããã¿ãŒãå«ãã |
off |
ããã¿ãŒãçç¥ãã (ãã¹ã¯å éšçã« agent ã«æž¡ãããŸã) |
gateway èµ·åæ QMD åæåãæå¹ãªå ŽåãOpenClaw ã¯å¯Ÿè±¡ãšãŒãžã§ã³ãã«å¯ŸããŠã®ã¿ QMD ãèµ·åããŸããupdate.onBoot ã true ã§ãinterval/embed ã¡ã³ããã³ã¹ãæ§æãããŠããªãå Žåãstartup ã¯èµ·åææŽæ°çšã«ã¯ã³ã·ã§ãããããŒãžã£ãŒã䜿çšãããããéããŸããupdate ãŸã㯠embed interval ãæ§æãããŠããå Žåãstartup ã¯é·æéå®è¡ããã QMD ãããŒãžã£ãŒãéããwatcher ãš interval timer ãææã§ããããã«ããŸããupdate.onBoot: false ã¯å³æã®èµ·åææŽæ°ã®ã¿ãã¹ãããããŸãã
å®å šãª QMD äŸ
{ memory: { backend: "qmd", citations: "auto", qmd: { includeDefaultMemory: true, update: { interval: "5m", debounceMs: 15000 }, limits: { maxResults: 6, timeoutMs: 4000 }, scope: { default: "deny", rules: [{ action: "allow", match: { chatType: "direct" } }], }, paths: [{ name: "docs", path: "~/notes", pattern: "**/*.md" }], }, },}Dreaming
Dreaming 㯠agents.defaults.memorySearch ã§ã¯ãªã plugins.entries.memory-core.config.dreaming ã®äžã§æ§æãããŸãã
Dreaming 㯠1 ã€ã®ã¹ã±ãžã¥ãŒã«ãããã¹ã€ãŒããšããŠå®è¡ãããå®è£ ã®è©³çްãšããŠå éšã® light/deep/REM ãã§ãŒãºã䜿çšããŸãã
æŠå¿µçãªåäœãšã¹ã©ãã·ã¥ã³ãã³ãã«ã€ããŠã¯ãDreaming ãåç §ããŠãã ããã
ãŠãŒã¶ãŒèšå®
| ã㌠| å | ããã©ã«ã | 説æ |
|---|---|---|---|
enabled |
boolean |
false |
Dreaming å šäœãæå¹ãŸãã¯ç¡å¹ã«ãã |
frequency |
string |
0 3 * * * |
å®å šãª Dreaming ã¹ã€ãŒãã®ä»»æã® Cron éé |
model |
string |
ããã©ã«ãã¢ãã« | ä»»æã® Dream Diary ãµããšãŒãžã§ã³ãã¢ãã«äžæžã |
phases.deep.maxPromotedSnippetTokens |
number |
160 |
MEMORY.md ã«ææ Œãããåçæ recall ã¹ããããããä¿æãããæšå®æå€§ããŒã¯ã³æ°ãæ¥æŽã¡ã¿ããŒã¿ã¯è¡šç€ºããããŸãŸã§ã |
äŸ
{ 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", }, }, }, }, },}