You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- On gateway start, the plugin launches a local config page and prints the URL in the terminal (default: `http://127.0.0.1:38463`).
15
+
- The page reads and writes the host config file directly:
16
+
- OpenClaw: `~/.openclaw/openclaw.json`
17
+
- Moltbot: `~/.moltbot/moltbot.json`
18
+
- ClawDBot: `~/.clawdbot/clawdbot.json`
19
+
- If the preferred UI port is already in use, the plugin automatically picks the next free port.
20
+
- Saving changes writes `plugins.entries.memos-cloud-openclaw-plugin.config`. (Note: you may need to manually restart the gateway after saving for settings to take effect).
21
+
12
22
## Install
13
23
14
24
### Option A — NPM (Recommended)
@@ -55,9 +65,8 @@ Make sure it’s enabled in `~/.openclaw/openclaw.json`:
55
65
Restart the gateway after config changes.
56
66
57
67
## Environment Variables
58
-
The plugin resolves runtime config in this order: **plugin config → env files → process environment**.
59
-
Among env files, it tries them in order (**openclaw → moltbot → clawdbot**). For each key, the first file with a value wins.
60
-
If none of these files exist (or the key is missing), it falls back to the process environment.
68
+
The plugin resolves runtime config in this order: **plugin config → env files**. Due to strict security sandboxing, it **does not** read credentials from process environment variables.
69
+
For env files, it tries them in order (**openclaw → moltbot → clawdbot**). For each key, the first file with a value wins.
61
70
62
71
**Where to configure**
63
72
- Files (priority order):
@@ -66,19 +75,9 @@ If none of these files exist (or the key is missing), it falls back to the proce
-**What it does**: when enabled, session keys like `agent:main:<provider>:direct:<peer-id>` reuse `<peer-id>` as MemOS `user_id`.
307
306
-**What it does not do**: non-direct session keys such as `agent:main:<provider>:channel:<channel-id>` keep using the configured fallback `userId`.
308
307
-**Request paths affected**: the same resolver is used by both `buildSearchPayload()` and `buildAddMessagePayload()`, so recall and add stay consistent.
309
-
-**Config precedence**: runtime config still follows the same rule as the rest of the plugin - plugin config first, then `.env` files (`~/.openclaw/.env` -> `~/.moltbot/.env` -> `~/.clawdbot/.env`), then process env.
308
+
-**Config precedence**: runtime config still follows the same rule as the rest of the plugin - plugin config first, then `.env` files (`~/.openclaw/.env` -> `~/.moltbot/.env` -> `~/.clawdbot/.env`).
"description": "When enabled, direct-session keys like agent:main:<provider>:direct:<id> use the direct id as MemOS user_id instead of the default configured userId.",
47
-
"default": false
44
+
"description": "When enabled, direct-session keys like agent:main:<provider>:direct:<id> use the direct id as MemOS user_id instead of the default configured userId."
48
45
},
49
46
"resetOnNew": {
50
-
"type": "boolean",
51
-
"default": true
47
+
"type": "boolean"
52
48
},
53
49
"queryPrefix": {
54
50
"type": "string",
@@ -63,8 +59,37 @@
63
59
"default": true
64
60
},
65
61
"recallGlobal": {
66
-
"type": "boolean",
67
-
"default": true
62
+
"type": "boolean"
63
+
},
64
+
"recallFilterEnabled": {
65
+
"type": "boolean"
66
+
},
67
+
"recallFilterBaseUrl": {
68
+
"type": "string",
69
+
"description": "OpenAI-compatible base URL for recall filter model"
70
+
},
71
+
"recallFilterApiKey": {
72
+
"type": "string",
73
+
"description": "API key for recall filter model endpoint"
74
+
},
75
+
"recallFilterModel": {
76
+
"type": "string",
77
+
"description": "Model name used to filter recall candidates"
78
+
},
79
+
"recallFilterTimeoutMs": {
80
+
"type": "integer"
81
+
},
82
+
"recallFilterRetries": {
83
+
"type": "integer"
84
+
},
85
+
"recallFilterCandidateLimit": {
86
+
"type": "integer"
87
+
},
88
+
"recallFilterMaxItemChars": {
89
+
"type": "integer"
90
+
},
91
+
"recallFilterFailOpen": {
92
+
"type": "boolean"
68
93
},
69
94
"addEnabled": {
70
95
"type": "boolean",
@@ -75,26 +100,23 @@
75
100
"enum": [
76
101
"last_turn",
77
102
"full_session"
78
-
],
79
-
"default": "last_turn"
103
+
]
80
104
},
81
105
"maxMessageChars": {
82
106
"type": "integer",
83
-
"description": "Max chars per message when adding",
84
-
"default": 20000
107
+
"description": "Max chars per message when adding"
85
108
},
86
109
"maxItemChars": {
87
110
"type": "integer",
88
111
"description": "Max chars per memory item when injecting prompt",
89
112
"default": 8000
90
113
},
91
114
"includeAssistant": {
92
-
"type": "boolean",
93
-
"default": true
115
+
"type": "boolean"
94
116
},
95
117
"memoryLimitNumber": {
96
118
"type": "integer",
97
-
"default": 6
119
+
"default": 9
98
120
},
99
121
"preferenceLimitNumber": {
100
122
"type": "integer",
@@ -112,50 +134,15 @@
112
134
"type": "integer",
113
135
"default": 6
114
136
},
137
+
"relativity": {
138
+
"type": "number",
139
+
"description": "Minimum relativity score required before a recalled item is injected"
140
+
},
115
141
"filter": {
116
142
"type": "object",
117
143
"description": "MemOS search filter",
118
144
"additionalProperties": true
119
145
},
120
-
"relativity": {
121
-
"type": "number",
122
-
"description": "Search relativity threshold",
123
-
"default": 0.45
124
-
},
125
-
"recallFilterEnabled": {
126
-
"type": "boolean",
127
-
"default": false
128
-
},
129
-
"recallFilterBaseUrl": {
130
-
"type": "string",
131
-
"description": "OpenAI-compatible API base URL for recall filtering"
0 commit comments