@nowledge/openclaw-nowledge-mem 0.6.5 → 0.6.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +104 -53
- package/CLAUDE.md +72 -60
- package/README.md +92 -55
- package/openclaw.plugin.json +8 -9
- package/package.json +1 -1
- package/src/config.js +220 -37
- package/src/hooks/capture.js +1 -1
- package/src/index.js +5 -1
- package/src/tools/status.js +145 -0
package/README.md
CHANGED
|
@@ -17,7 +17,7 @@ openclaw plugins install @nowledge/openclaw-nowledge-mem
|
|
|
17
17
|
|
|
18
18
|
### Local mode (default)
|
|
19
19
|
|
|
20
|
-
Start Nowledge Mem desktop app or run `nmem serve`, then
|
|
20
|
+
Start Nowledge Mem desktop app or run `nmem serve`, then enable the plugin:
|
|
21
21
|
|
|
22
22
|
```json
|
|
23
23
|
{
|
|
@@ -32,30 +32,24 @@ Start Nowledge Mem desktop app or run `nmem serve`, then configure:
|
|
|
32
32
|
}
|
|
33
33
|
```
|
|
34
34
|
|
|
35
|
-
That's it. The agent gets
|
|
35
|
+
That's it. The agent gets 10 tools and calls them on demand. No extra tokens wasted.
|
|
36
36
|
|
|
37
37
|
### Remote mode
|
|
38
38
|
|
|
39
|
-
Connect to a Nowledge Mem server running elsewhere
|
|
39
|
+
Connect to a Nowledge Mem server running elsewhere (a VPS, a home server, or a shared team instance). See [remote access guide](https://mem.nowledge.co/docs/remote-access) for server setup.
|
|
40
|
+
|
|
41
|
+
Enable the plugin the same way as local mode, then set `apiUrl` and `apiKey` in the OpenClaw plugin settings.
|
|
42
|
+
|
|
43
|
+
Or use a config file at `~/.nowledge-mem/openclaw.json`:
|
|
40
44
|
|
|
41
45
|
```json
|
|
42
46
|
{
|
|
43
|
-
"
|
|
44
|
-
|
|
45
|
-
"entries": {
|
|
46
|
-
"openclaw-nowledge-mem": {
|
|
47
|
-
"enabled": true,
|
|
48
|
-
"config": {
|
|
49
|
-
"apiUrl": "https://nowledge.example.com",
|
|
50
|
-
"apiKey": "your-api-key-here"
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
}
|
|
47
|
+
"apiUrl": "https://nowledge.example.com",
|
|
48
|
+
"apiKey": "your-api-key-here"
|
|
55
49
|
}
|
|
56
50
|
```
|
|
57
51
|
|
|
58
|
-
The `apiKey` is injected as `NMEM_API_KEY` into the nmem CLI process
|
|
52
|
+
The `apiKey` is injected as `NMEM_API_KEY` into the nmem CLI process. Never passed as a CLI argument, never logged.
|
|
59
53
|
|
|
60
54
|
## How It Works
|
|
61
55
|
|
|
@@ -70,7 +64,7 @@ flowchart TD
|
|
|
70
64
|
B --> C["Behavioral guidance(always, ~110 tokens)"]
|
|
71
65
|
B -.->|"sessionContext: true"| D["Working Memory +relevant memories (~1-2 KB)"]
|
|
72
66
|
|
|
73
|
-
C --> E["Agent processes message(
|
|
67
|
+
C --> E["Agent processes message(10 tools available)"]
|
|
74
68
|
D --> E
|
|
75
69
|
|
|
76
70
|
E --> F{"Needs past context?"}
|
|
@@ -99,6 +93,7 @@ The behavioral hook nudges the agent to **search before answering** and **save a
|
|
|
99
93
|
| Memory has `sourceThreadId` | `nowledge_mem_thread_fetch` | Fetch full source conversation. Pagination via `offset` + `limit`. |
|
|
100
94
|
| "Find our discussion about X" | `nowledge_mem_thread_search` | Search past conversations by keyword. Returns matched snippets. |
|
|
101
95
|
| "Forget X" | `nowledge_mem_forget` | Delete by ID or search query. |
|
|
96
|
+
| "Is my setup working?" | `nowledge_mem_status` | Show effective config, backend connectivity, and version. |
|
|
102
97
|
|
|
103
98
|
### Session Lifecycle (Automatic Capture)
|
|
104
99
|
|
|
@@ -114,7 +109,7 @@ flowchart TD
|
|
|
114
109
|
|
|
115
110
|
C --> F{"sessionDigest enabled+ enough messages+ cooldown passed?"}
|
|
116
111
|
F -->|"Yes"| G["LLM triage (~100 tokens):worth distilling?"]
|
|
117
|
-
F -->|"No"| H["Done
|
|
112
|
+
F -->|"No"| H["Done - thread saved"]
|
|
118
113
|
G -->|"Decisions, insights,preferences found"| I["Full distillation ->structured memories(with sourceThreadId)"]
|
|
119
114
|
G -->|"Routine chat"| H
|
|
120
115
|
|
|
@@ -123,7 +118,7 @@ flowchart TD
|
|
|
123
118
|
```
|
|
124
119
|
|
|
125
120
|
**Key points:**
|
|
126
|
-
- Thread capture is
|
|
121
|
+
- Thread capture is unconditional: every conversation is saved and searchable via `nowledge_mem_thread_search`
|
|
127
122
|
- LLM distillation only runs at `agent_end`, not during compaction/reset checkpoints
|
|
128
123
|
- Distilled memories carry `sourceThreadId`, linking them back to the source conversation
|
|
129
124
|
- Cooldown (`digestMinInterval`, default 300s) prevents burst distillation
|
|
@@ -151,8 +146,8 @@ flowchart LR
|
|
|
151
146
|
```
|
|
152
147
|
|
|
153
148
|
Two entry points:
|
|
154
|
-
1. **From a memory
|
|
155
|
-
2. **Direct search
|
|
149
|
+
1. **From a memory**: `memory_search` or `memory_get` returns `sourceThreadId`, then fetch the source conversation
|
|
150
|
+
2. **Direct search**: `nowledge_mem_thread_search` finds conversations by keyword, then fetch any result
|
|
156
151
|
|
|
157
152
|
### Three Modes at a Glance
|
|
158
153
|
|
|
@@ -161,21 +156,21 @@ flowchart LR
|
|
|
161
156
|
subgraph "default" ["Default (recommended)"]
|
|
162
157
|
direction TB
|
|
163
158
|
D1["Every turn: behavioral guidance (~50 tokens)"]
|
|
164
|
-
D2["Agent calls
|
|
159
|
+
D2["Agent calls 10 tools on demand"]
|
|
165
160
|
D3["Session end: thread capture + LLM distillation"]
|
|
166
161
|
end
|
|
167
162
|
|
|
168
163
|
subgraph context ["Session Context"]
|
|
169
164
|
direction TB
|
|
170
165
|
C1["Every turn: guidance + Working Memory+ recalled memories (~1-2 KB)"]
|
|
171
|
-
C2["Agent calls
|
|
166
|
+
C2["Agent calls 10 tools on demand"]
|
|
172
167
|
C3["Session end: thread capture + LLM distillation"]
|
|
173
168
|
end
|
|
174
169
|
|
|
175
170
|
subgraph minimal ["Minimal"]
|
|
176
171
|
direction TB
|
|
177
172
|
M1["Every turn: behavioral guidance (~50 tokens)"]
|
|
178
|
-
M2["Agent calls
|
|
173
|
+
M2["Agent calls 10 tools on demand"]
|
|
179
174
|
M3["No automatic capture"]
|
|
180
175
|
end
|
|
181
176
|
```
|
|
@@ -186,15 +181,15 @@ flowchart LR
|
|
|
186
181
|
|
|
187
182
|
These satisfy the OpenClaw memory slot contract and activate the "Memory Recall" section in OpenClaw's system prompt.
|
|
188
183
|
|
|
189
|
-
**memory_search**
|
|
184
|
+
**memory_search** - Multi-signal recall using embedding, BM25, label match, graph signals, and recency decay. Returns structured source paths (`nowledgemem://memory/<id>`) for follow-up with `memory_get` or `nowledge_mem_connections`. Also returns relevant past conversation snippets (`relatedThreads`) and `sourceThreadId` (link to the conversation the memory was distilled from) when available.
|
|
190
185
|
|
|
191
|
-
**memory_get**
|
|
186
|
+
**memory_get** - Read a specific memory by ID or path. Supports `MEMORY.md` alias for Working Memory. Returns `sourceThreadId` when the memory was distilled from a conversation.
|
|
192
187
|
|
|
193
188
|
### Nowledge Mem Native
|
|
194
189
|
|
|
195
190
|
These reflect capabilities unique to Nowledge Mem's knowledge graph architecture.
|
|
196
191
|
|
|
197
|
-
**nowledge_mem_save**
|
|
192
|
+
**nowledge_mem_save** - Capture structured knowledge with type classification, labels, and temporal context.
|
|
198
193
|
|
|
199
194
|
```
|
|
200
195
|
text: "We decided to use PostgreSQL with JSONB for the task events table"
|
|
@@ -204,18 +199,18 @@ importance: 0.8
|
|
|
204
199
|
labels: ["backend", "architecture"]
|
|
205
200
|
event_start: 2024-03
|
|
206
201
|
temporal_context: past
|
|
207
|
-
|
|
202
|
+
> Saved: Task events database choice [decision] (id: mem_abc) - labels: backend, architecture - event: 2024-03
|
|
208
203
|
```
|
|
209
204
|
|
|
210
|
-
Eight memory types: `fact`, `preference`, `decision`, `plan`, `procedure`, `learning`, `context`, `event
|
|
205
|
+
Eight memory types: `fact`, `preference`, `decision`, `plan`, `procedure`, `learning`, `context`, `event`. Each becomes a typed node in the knowledge graph. Labels enable filtering in `memory_search`. `event_start` records *when* something happened, not just when you saved it, powering bi-temporal search.
|
|
211
206
|
|
|
212
|
-
**nowledge_mem_context**
|
|
207
|
+
**nowledge_mem_context** - Read today's Working Memory: focus areas, priorities, unresolved flags, and recent activity. Generated by the Knowledge Agent each morning, updated throughout the day.
|
|
213
208
|
|
|
214
|
-
**nowledge_mem_connections**
|
|
209
|
+
**nowledge_mem_connections** - Explore the knowledge graph around a topic or memory. Returns connected memories, EVOLVES version chains (how understanding has grown), related entities, and source document provenance (which files or URLs knowledge was extracted from).
|
|
215
210
|
|
|
216
211
|
```
|
|
217
212
|
memoryId: "mem_abc"
|
|
218
|
-
|
|
213
|
+
> Connected memories:
|
|
219
214
|
- PostgreSQL optimization patterns: Use JSONB GIN indexes for...
|
|
220
215
|
- Redis caching layer decision: For frequently accessed task lists...
|
|
221
216
|
Source documents (provenance):
|
|
@@ -227,25 +222,25 @@ memoryId: "mem_abc"
|
|
|
227
222
|
- superseded by newer understanding (version chain)
|
|
228
223
|
```
|
|
229
224
|
|
|
230
|
-
**nowledge_mem_timeline**
|
|
225
|
+
**nowledge_mem_timeline** - Browse your knowledge history chronologically. Use for questions like "what was I working on last week?" or "what happened yesterday?". Groups activity by day: memories saved, documents ingested, insights generated, and more.
|
|
231
226
|
|
|
232
227
|
```
|
|
233
228
|
last_n_days: 7
|
|
234
|
-
|
|
235
|
-
- [Memory saved] UV guide
|
|
229
|
+
> 2026-02-18:
|
|
230
|
+
- [Memory saved] UV guide - Python toolchain setup
|
|
236
231
|
- [Knowledge extracted from document] api-spec.pdf
|
|
237
232
|
2026-02-17:
|
|
238
233
|
- [Daily briefing] Focus: NebulaGraph, AI biotech...
|
|
239
234
|
- [Insight] Connection between Redis caching and...
|
|
240
235
|
```
|
|
241
236
|
|
|
242
|
-
**nowledge_mem_forget**
|
|
237
|
+
**nowledge_mem_forget** - Delete a memory by ID or search query. Supports user confirmation when multiple matches are found.
|
|
243
238
|
|
|
244
239
|
### Thread Tools
|
|
245
240
|
|
|
246
|
-
**nowledge_mem_thread_search**
|
|
241
|
+
**nowledge_mem_thread_search** - Search past conversations by keyword. Returns matched threads with message snippets and relevance scores. Use when the user asks about a past discussion or wants to find a conversation from a specific time.
|
|
247
242
|
|
|
248
|
-
**nowledge_mem_thread_fetch**
|
|
243
|
+
**nowledge_mem_thread_fetch** - Fetch full messages from a conversation thread with pagination. Pass a `sourceThreadId` from memory results or a `threadId` from thread search. Supports `offset` and `limit` for progressive retrieval of long conversations.
|
|
249
244
|
|
|
250
245
|
```
|
|
251
246
|
threadId: "openclaw-db-arch-a1b2c3"
|
|
@@ -262,19 +257,19 @@ The plugin supports three modes. Choose based on how much you want to guarantee
|
|
|
262
257
|
|
|
263
258
|
| Mode | Config | Behavior | Tradeoff |
|
|
264
259
|
|------|--------|----------|----------|
|
|
265
|
-
| **Default** (recommended) | `sessionContext: false, sessionDigest: true` | Agent calls
|
|
266
|
-
| **Session context** | `sessionContext: true` | Working Memory + relevant memories injected at prompt time, plus all
|
|
260
|
+
| **Default** (recommended) | `sessionContext: false, sessionDigest: true` | Agent calls 10 tools on demand. Behavioral guidance every turn (~50 tokens). Conversations captured + distilled at session end. | Lowest cost. Agent decides when to search, usually smart, occasionally forgets. |
|
|
261
|
+
| **Session context** | `sessionContext: true` | Working Memory + relevant memories injected at prompt time, plus all 10 tools still available. | ~1-2 KB/turn. Guarantees context is always present. Best for short sessions or critical workflows. |
|
|
267
262
|
| **Minimal** | `sessionDigest: false` | Tool-only, no automatic capture. | Zero overhead beyond guidance. Use when you handle memory manually. |
|
|
268
263
|
|
|
269
264
|
**Which mode should you use?**
|
|
270
265
|
|
|
271
266
|
- **Most users**: start with default. The agent gets behavioral guidance nudging it to search before answering and save after deciding. It works well for most conversations.
|
|
272
|
-
- **Short sessions or critical accuracy**: enable `sessionContext`. This guarantees relevant memories are present from the first turn
|
|
267
|
+
- **Short sessions or critical accuracy**: enable `sessionContext`. This guarantees relevant memories are present from the first turn. The agent doesn't need to decide whether to search. The tradeoff is ~1-2 KB of context per turn.
|
|
273
268
|
- **Full manual control**: set `sessionDigest: false`. You control what gets saved (via `/remember` or `nowledge_mem_save`) and nothing is captured automatically.
|
|
274
269
|
|
|
275
270
|
### Session Context (`sessionContext`, default: false)
|
|
276
271
|
|
|
277
|
-
When enabled, the plugin injects Working Memory and relevant search results at prompt time. The behavioral guidance automatically adjusts to tell the agent that context is already present
|
|
272
|
+
When enabled, the plugin injects Working Memory and relevant search results at prompt time. The behavioral guidance automatically adjusts to tell the agent that context is already present, so `memory_search` should only be used for specific follow-up queries, not broad recall. This prevents the agent from redundantly searching for the same context that was just injected.
|
|
278
273
|
|
|
279
274
|
Useful for giving the agent immediate context without waiting for it to search proactively.
|
|
280
275
|
|
|
@@ -284,7 +279,7 @@ When enabled, two things happen at `agent_end`, `after_compaction`, and `before_
|
|
|
284
279
|
|
|
285
280
|
**1. Thread capture (always).** The full conversation is appended to a persistent thread. Unconditional, idempotent by message ID.
|
|
286
281
|
|
|
287
|
-
**2. LLM distillation (when worthwhile).** A lightweight LLM triage determines if the conversation has save-worthy content. If yes, a full distillation pass creates structured memories with types, labels, and temporal data. Language-agnostic
|
|
282
|
+
**2. LLM distillation (when worthwhile).** A lightweight LLM triage determines if the conversation has save-worthy content. If yes, a full distillation pass creates structured memories with types, labels, and temporal data. Language-agnostic, works in any language.
|
|
288
283
|
|
|
289
284
|
## Design Decisions
|
|
290
285
|
|
|
@@ -292,23 +287,23 @@ Honest answers to common questions about how the memory system works.
|
|
|
292
287
|
|
|
293
288
|
**Does the agent always search before answering?**
|
|
294
289
|
|
|
295
|
-
No. The behavioral guidance nudges the agent to search, but doesn't force it. This is a deliberate tradeoff
|
|
290
|
+
No. The behavioral guidance nudges the agent to search, but doesn't force it. This is a deliberate tradeoff: forcing a search on every turn would add latency and cost for messages that don't need past context (like "hello" or "thanks"). In practice, modern LLMs follow behavioral guidance reliably for knowledge-related questions. If guaranteed recall matters for your use case, enable `sessionContext: true`. That injects relevant memories at prompt time, before the agent even processes your message.
|
|
296
291
|
|
|
297
292
|
**What stops the agent from saving duplicate memories?**
|
|
298
293
|
|
|
299
|
-
Two layers. First, the plugin checks for near-identical existing memories before every save. If a memory with
|
|
294
|
+
Two layers. First, the plugin checks for near-identical existing memories before every save. If a memory with >=90% similarity already exists, the save is skipped and the existing memory is returned instead. Second, Nowledge Mem's Knowledge Agent runs in the background and handles deeper deduplication, identifying semantic overlap across memories and linking them via EVOLVES chains (replaces, enriches, confirms, or challenges). The plugin handles obvious duplicates; the Knowledge Agent handles subtle ones.
|
|
300
295
|
|
|
301
296
|
**When `sessionContext` is on, will the agent search again and get duplicate context?**
|
|
302
297
|
|
|
303
|
-
The behavioral guidance adjusts when `sessionContext` is enabled. Instead of "search with memory_search when prior context would help," it tells the agent "relevant memories have already been injected
|
|
298
|
+
The behavioral guidance adjusts when `sessionContext` is enabled. Instead of "search with memory_search when prior context would help," it tells the agent "relevant memories have already been injected, use memory_search only for specific follow-up queries." This reduces redundant searches. The injected context and manual search results are in different XML blocks, so even if overlap occurs, it doesn't confuse the agent.
|
|
304
299
|
|
|
305
300
|
**What happens to conversations I don't explicitly save?**
|
|
306
301
|
|
|
307
|
-
With `sessionDigest` enabled (the default), every conversation is saved as a searchable thread
|
|
302
|
+
With `sessionDigest` enabled (the default), every conversation is saved as a searchable thread. You can find it later with `nowledge_mem_thread_search`. On top of that, a lightweight LLM triage checks if the conversation contained decisions, insights, or preferences worth keeping as structured memories. If yes, they're extracted with proper types, labels, and temporal context. If the conversation was routine ("fix this typo"), nothing extra is saved.
|
|
308
303
|
|
|
309
304
|
**Can memories be wrong or outdated?**
|
|
310
305
|
|
|
311
|
-
Yes. Memories are what you or the AI saved at a point in time. Nowledge Mem's EVOLVES chains track how understanding changes
|
|
306
|
+
Yes. Memories are what you or the AI saved at a point in time. Nowledge Mem's EVOLVES chains track how understanding changes: a newer memory can supersede, enrich, or challenge an older one. The Knowledge Agent identifies these relationships automatically. When you search, the relevance scoring considers recency, so newer memories rank higher by default.
|
|
312
307
|
|
|
313
308
|
## Slash Commands
|
|
314
309
|
|
|
@@ -327,24 +322,66 @@ openclaw nowledge-mem status
|
|
|
327
322
|
|
|
328
323
|
## Configuration
|
|
329
324
|
|
|
325
|
+
No config needed to get started. The defaults work for local mode.
|
|
326
|
+
|
|
327
|
+
To change settings, use the OpenClaw plugin settings UI. Changes take effect on restart.
|
|
328
|
+
|
|
330
329
|
| Key | Type | Default | Description |
|
|
331
330
|
|-----|------|---------|-------------|
|
|
332
331
|
| `sessionContext` | boolean | `false` | Inject Working Memory + relevant memories at prompt time |
|
|
333
332
|
| `sessionDigest` | boolean | `true` | Thread capture + LLM distillation at session end |
|
|
334
|
-
| `
|
|
335
|
-
| `
|
|
333
|
+
| `digestMinInterval` | integer | `300` | Minimum seconds between session digests for the same thread (0-86400) |
|
|
334
|
+
| `maxContextResults` | integer | `5` | Max memories to inject at prompt time (1-20, only used when sessionContext is enabled) |
|
|
336
335
|
| `apiUrl` | string | `""` | Remote server URL. Empty = local (`http://127.0.0.1:14242`) |
|
|
337
|
-
| `apiKey` | string | `""` | API key for remote access. Injected as `NMEM_API_KEY` env var
|
|
336
|
+
| `apiKey` | string | `""` | API key for remote access. Injected as `NMEM_API_KEY` env var, never logged |
|
|
337
|
+
|
|
338
|
+
### Advanced: config file
|
|
339
|
+
|
|
340
|
+
For persistent or scripted config, create `~/.nowledge-mem/openclaw.json`:
|
|
341
|
+
|
|
342
|
+
```json
|
|
343
|
+
{
|
|
344
|
+
"sessionContext": false,
|
|
345
|
+
"sessionDigest": true,
|
|
346
|
+
"digestMinInterval": 300,
|
|
347
|
+
"maxContextResults": 5,
|
|
348
|
+
"apiUrl": "",
|
|
349
|
+
"apiKey": ""
|
|
350
|
+
}
|
|
351
|
+
```
|
|
352
|
+
|
|
353
|
+
The config file takes priority over OpenClaw settings. Only the keys you include are overridden; missing keys fall through to OpenClaw settings, then env vars, then defaults.
|
|
354
|
+
|
|
355
|
+
### Advanced: environment variables
|
|
356
|
+
|
|
357
|
+
For CI, scripts, or Docker deployments, all options also support environment variables:
|
|
358
|
+
|
|
359
|
+
```bash
|
|
360
|
+
NMEM_SESSION_CONTEXT=true
|
|
361
|
+
NMEM_SESSION_DIGEST=true
|
|
362
|
+
NMEM_DIGEST_MIN_INTERVAL=300
|
|
363
|
+
NMEM_MAX_CONTEXT_RESULTS=5
|
|
364
|
+
NMEM_API_URL=https://...
|
|
365
|
+
NMEM_API_KEY=your-key
|
|
366
|
+
```
|
|
367
|
+
|
|
368
|
+
### Priority
|
|
369
|
+
|
|
370
|
+
```
|
|
371
|
+
config file > OpenClaw settings > env vars > defaults
|
|
372
|
+
```
|
|
373
|
+
|
|
374
|
+
Use `nowledge_mem_status` (or `openclaw nowledge-mem status`) to see where each value comes from.
|
|
338
375
|
|
|
339
376
|
## What Makes This Different
|
|
340
377
|
|
|
341
378
|
- **Local-first**: no API key, no cloud account. Your knowledge stays on your machine.
|
|
342
379
|
- **Knowledge graph**: memories are connected nodes, not isolated vectors. EVOLVES edges track how understanding grows over time.
|
|
343
|
-
- **Source provenance**: the Library ingests PDFs, DOCX, URLs
|
|
344
|
-
- **Working Memory**: an AI-generated daily briefing that evolves
|
|
380
|
+
- **Source provenance**: the Library ingests PDFs, DOCX, URLs. Extracted knowledge links back to the exact document section it came from.
|
|
381
|
+
- **Working Memory**: an AI-generated daily briefing that evolves, not a static user profile.
|
|
345
382
|
- **Cross-AI continuity**: knowledge captured in any tool (Cursor, Claude, ChatGPT) flows to OpenClaw and back.
|
|
346
|
-
- **Typed memories**: 8 knowledge types mapped to graph node properties
|
|
347
|
-
- **Multi-signal search**: not just semantic similarity
|
|
383
|
+
- **Typed memories**: 8 knowledge types mapped to graph node properties. Structured understanding, not text blobs.
|
|
384
|
+
- **Multi-signal search**: not just semantic similarity. Combines embedding, BM25 keyword, label match, graph & community signals, and recency/importance decay. See [Search & Relevance](https://mem.nowledge.co/docs/search-relevance).
|
|
348
385
|
|
|
349
386
|
## License
|
|
350
387
|
|
package/openclaw.plugin.json
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"id": "openclaw-nowledge-mem",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.8",
|
|
4
4
|
"kind": "memory",
|
|
5
5
|
"uiHints": {
|
|
6
6
|
"sessionContext": {
|
|
7
7
|
"label": "Session context injection",
|
|
8
|
-
"help": "Inject Working Memory and relevant memories at prompt time. Off by default
|
|
8
|
+
"help": "Inject Working Memory and relevant memories at prompt time. Off by default \u2014 the agent can call memory_search on demand instead."
|
|
9
9
|
},
|
|
10
10
|
"sessionDigest": {
|
|
11
11
|
"label": "Session digest at end",
|
|
12
|
-
"help": "Capture conversation threads and distill key memories via LLM at session end. On by default
|
|
12
|
+
"help": "Capture conversation threads and distill key memories via LLM at session end. On by default \u2014 negligible cost, one triage call per session."
|
|
13
13
|
},
|
|
14
14
|
"digestMinInterval": {
|
|
15
15
|
"label": "Minimum digest interval (seconds)",
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
},
|
|
18
18
|
"maxContextResults": {
|
|
19
19
|
"label": "Max context results",
|
|
20
|
-
"help": "How many memories to inject for each context cycle (1
|
|
20
|
+
"help": "How many memories to inject for each context cycle (1\u201320)"
|
|
21
21
|
},
|
|
22
22
|
"apiUrl": {
|
|
23
23
|
"label": "Server URL (remote mode)",
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
},
|
|
26
26
|
"apiKey": {
|
|
27
27
|
"label": "API key (remote mode)",
|
|
28
|
-
"help": "Required when connecting to a remote server. Never logged or passed as a CLI argument
|
|
28
|
+
"help": "Required when connecting to a remote server. Never logged or passed as a CLI argument \u2014 injected as NMEM_API_KEY env var only.",
|
|
29
29
|
"secret": true
|
|
30
30
|
}
|
|
31
31
|
},
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
"sessionContext": {
|
|
36
36
|
"type": "boolean",
|
|
37
37
|
"default": false,
|
|
38
|
-
"description": "Inject Working Memory and recalled memories at prompt time. Off by default
|
|
38
|
+
"description": "Inject Working Memory and recalled memories at prompt time. Off by default \u2014 the agent queries memory on demand via tools."
|
|
39
39
|
},
|
|
40
40
|
"sessionDigest": {
|
|
41
41
|
"type": "boolean",
|
|
@@ -64,9 +64,8 @@
|
|
|
64
64
|
"apiKey": {
|
|
65
65
|
"type": "string",
|
|
66
66
|
"default": "",
|
|
67
|
-
"description": "API key for remote access. Stored in plugin config, injected as NMEM_API_KEY env var
|
|
67
|
+
"description": "API key for remote access. Stored in plugin config, injected as NMEM_API_KEY env var. Never logged."
|
|
68
68
|
}
|
|
69
|
-
}
|
|
70
|
-
"additionalProperties": false
|
|
69
|
+
}
|
|
71
70
|
}
|
|
72
71
|
}
|