@xdarkicex/openclaw-memory-libravdb 1.4.30 → 1.4.32
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/README.md +170 -20
- package/dist/sidecar.js +5 -32
- package/dist/types.d.ts +0 -10
- package/docs/embedding-profiles.md +14 -15
- package/docs/install.md +11 -9
- package/docs/installation.md +9 -9
- package/docs/models.md +10 -11
- package/docs/security.md +1 -1
- package/docs/uninstall.md +2 -2
- package/openclaw.plugin.json +3 -49
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -12,22 +12,44 @@
|
|
|
12
12
|
</div>
|
|
13
13
|
|
|
14
14
|
`@xdarkicex/openclaw-memory-libravdb` is a local-first OpenClaw memory plugin
|
|
15
|
-
backed by the `libravdbd`
|
|
15
|
+
backed by the `libravdbd` vector service. It replaces the lightweight default memory
|
|
16
16
|
path with scoped session, user, and global memory; continuity-aware prompt
|
|
17
17
|
assembly; durable recall; and sidecar-owned compaction.
|
|
18
18
|
|
|
19
19
|
[Install](./docs/install.md) · [Full installation reference](./docs/installation.md) · [Architecture](./docs/architecture.md) · [Security](./docs/security.md) · [Performance and tuning](./docs/performance-and-tuning.md) · [Contributing](./docs/contributing.md)
|
|
20
20
|
|
|
21
|
-
New install? Start here: [Install guide](./docs/install.md).
|
|
22
|
-
macOS: install `libravdbd` with Homebrew, install the OpenClaw plugin, then
|
|
23
|
-
assign the plugin to the OpenClaw memory slot.
|
|
21
|
+
New install? Start here: [Install guide](./docs/install.md).
|
|
24
22
|
|
|
25
23
|
## Install
|
|
26
24
|
|
|
25
|
+
Install `libravdbd` with your system package manager, then install
|
|
26
|
+
the OpenClaw plugin.
|
|
27
|
+
|
|
28
|
+
**macOS (Homebrew)**
|
|
29
|
+
|
|
27
30
|
```bash
|
|
28
31
|
brew tap xDarkicex/homebrew-openclaw-libravdb-memory
|
|
29
32
|
brew install libravdbd
|
|
30
33
|
brew services start libravdbd
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
**Linux (APT)**
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
sudo apt install libravdbd
|
|
40
|
+
systemctl --user enable --now libravdbd
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
**Linux (AUR)**
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
yay -S libravdbd-bin
|
|
47
|
+
systemctl --user enable --now libravdbd
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
**Plugin (all platforms)**
|
|
51
|
+
|
|
52
|
+
```bash
|
|
31
53
|
openclaw plugins install @xdarkicex/openclaw-memory-libravdb
|
|
32
54
|
```
|
|
33
55
|
|
|
@@ -51,8 +73,11 @@ Then activate the plugin in `~/.openclaw/openclaw.json`:
|
|
|
51
73
|
}
|
|
52
74
|
```
|
|
53
75
|
|
|
54
|
-
Verify the
|
|
76
|
+
Verify the service and plugin:
|
|
55
77
|
|
|
78
|
+
```bash
|
|
79
|
+
openclaw memory status
|
|
80
|
+
```
|
|
56
81
|
|
|
57
82
|
Healthy output should show `Sidecar=running`, stored memory counts, the active
|
|
58
83
|
gate threshold, and the loaded embedding profile.
|
|
@@ -63,7 +88,7 @@ Runtime requirements:
|
|
|
63
88
|
|
|
64
89
|
- OpenClaw `>= 2026.3.22`
|
|
65
90
|
- Node.js `>= 22`
|
|
66
|
-
- a separately installed `libravdbd`
|
|
91
|
+
- a separately installed `libravdbd` service
|
|
67
92
|
|
|
68
93
|
Compatibility note:
|
|
69
94
|
|
|
@@ -71,11 +96,11 @@ Compatibility note:
|
|
|
71
96
|
|
|
72
97
|
Default endpoints:
|
|
73
98
|
|
|
74
|
-
- macOS/Linux user-local
|
|
75
|
-
- Homebrew
|
|
76
|
-
- Windows
|
|
99
|
+
- macOS/Linux user-local service: `unix:$HOME/.libravdbd/run/libravdb.sock`
|
|
100
|
+
- Homebrew service on Apple Silicon: `unix:/opt/homebrew/var/libravdbd/run/libravdb.sock`
|
|
101
|
+
- Windows service: `tcp:127.0.0.1:37421`
|
|
77
102
|
|
|
78
|
-
If your
|
|
103
|
+
If your service runs elsewhere, set `sidecarPath`:
|
|
79
104
|
|
|
80
105
|
```json
|
|
81
106
|
{
|
|
@@ -108,14 +133,14 @@ If your daemon runs elsewhere, set `sidecarPath`:
|
|
|
108
133
|
newest working context.
|
|
109
134
|
- **Local-first inference** - uses local embedding and compaction paths by
|
|
110
135
|
default, with optional external summarizer configuration.
|
|
111
|
-
- **Explicit
|
|
136
|
+
- **Explicit service lifecycle** - the npm/OpenClaw package stays connect-only;
|
|
112
137
|
`libravdbd` is installed and supervised separately.
|
|
113
138
|
|
|
114
139
|
## Security Defaults
|
|
115
140
|
|
|
116
141
|
Stored memory is treated as untrusted historical context. Retrieved memory is
|
|
117
142
|
framed before it reaches the downstream model, memory collections are scoped by
|
|
118
|
-
session/user/global namespace, and
|
|
143
|
+
session/user/global namespace, and service installation is outside the npm plugin
|
|
119
144
|
package.
|
|
120
145
|
|
|
121
146
|
Before exposing OpenClaw over remote channels, read [Security](./docs/security.md).
|
|
@@ -123,7 +148,7 @@ Before exposing OpenClaw over remote channels, read [Security](./docs/security.m
|
|
|
123
148
|
## Operator Quick Refs
|
|
124
149
|
|
|
125
150
|
```bash
|
|
126
|
-
openclaw memory status
|
|
151
|
+
openclaw memory status [--deep] [--json]
|
|
127
152
|
openclaw memory index --force
|
|
128
153
|
openclaw memory search "prior context"
|
|
129
154
|
openclaw memory export --user-id <userId>
|
|
@@ -132,17 +157,142 @@ openclaw memory journal --limit 50
|
|
|
132
157
|
openclaw memory dream-promote --user-id <userId> --dream-file /path/to/DREAMS.md
|
|
133
158
|
```
|
|
134
159
|
|
|
135
|
-
Use [Install](./docs/install.md) for
|
|
160
|
+
Use [Install](./docs/install.md) for service lifecycle commands and
|
|
136
161
|
[Uninstall](./docs/uninstall.md) for safe shutdown and removal.
|
|
137
162
|
|
|
163
|
+
## Configuration Reference
|
|
164
|
+
|
|
165
|
+
All configuration keys are optional.
|
|
166
|
+
|
|
167
|
+
If you do not have a GPU available, setting `onnxDevice` to `"cpu"` is
|
|
168
|
+
recommended to avoid startup failures from missing GPU/NPU providers,
|
|
169
|
+
but this is also optional — the service auto-detects and falls back to
|
|
170
|
+
CPU when a provider is unavailable.
|
|
171
|
+
|
|
172
|
+
### Connection
|
|
173
|
+
|
|
174
|
+
| Key | Type | Default | Notes |
|
|
175
|
+
|---|---|---|---|
|
|
176
|
+
| `sidecarPath` | string | `auto` | `"auto"` probes standard socket paths; set `unix:/path` or `tcp:host:port` to override |
|
|
177
|
+
| `grpcEndpoint` | string | — | Optional gRPC kernel endpoint for hosts using the gRPC kernel transport |
|
|
178
|
+
| `rpcTimeoutMs` | number | `30000` | Per-call timeout for service RPC (ms) |
|
|
179
|
+
| `dbPath` | string | auto-named | Explicit DB path; when set bypasses model-specific naming |
|
|
180
|
+
|
|
181
|
+
### Embedding
|
|
182
|
+
|
|
183
|
+
| Key | Type | Default | Notes |
|
|
184
|
+
|---|---|---|---|
|
|
185
|
+
| `embeddingProfile` | string | `nomic-embed-text-v1.5` | Primary embedding model |
|
|
186
|
+
| `fallbackProfile` | string | `bge-small-en-v1.5` | Fallback when primary model fails dimension checks |
|
|
187
|
+
| `embeddingBackend` | string | — | `bundled`, `onnx-local`, or `custom-local` |
|
|
188
|
+
| `onnxDevice` | string | `auto` | ONNX execution provider: `auto`, `cpu`, `coreml` (macOS), `cuda` (Linux/Windows), `directml` (Windows), `openvino` (Linux) |
|
|
189
|
+
| `embeddingRuntimePath` | string | — | Path to ONNX runtime library (maps to `LIBRAVDB_ONNX_RUNTIME`) |
|
|
190
|
+
| `embeddingModelPath` | string | — | Path to custom embedding model `.onnx` file |
|
|
191
|
+
| `embeddingTokenizerPath` | string | — | Path to custom tokenizer file |
|
|
192
|
+
| `embeddingDimensions` | number | — | Embedding dimension override |
|
|
193
|
+
| `embeddingNormalize` | boolean | — | Enable embedding normalization |
|
|
194
|
+
|
|
195
|
+
### Retrieval
|
|
196
|
+
|
|
197
|
+
| Key | Type | Default | Notes |
|
|
198
|
+
|---|---|---|---|
|
|
199
|
+
| `topK` | number | — | Max results per search |
|
|
200
|
+
| `alpha` | number | — | Semantic similarity weight |
|
|
201
|
+
| `beta` | number | — | Recency weight |
|
|
202
|
+
| `gamma` | number | — | Summary quality weight |
|
|
203
|
+
| `crossSessionRecall` | boolean | `true` | When `false`, only session-scoped memories are retrieved |
|
|
204
|
+
| `useSessionRecallProjection` | boolean | — | Use `session_recall` collection instead of `session` |
|
|
205
|
+
| `useSessionSummarySearchExperiment` | boolean | — | Use `session_summary` collection for search |
|
|
206
|
+
|
|
207
|
+
### Ingestion gating
|
|
208
|
+
|
|
209
|
+
Gating thresholds and scoring weights are owned by the vector service and configured via
|
|
210
|
+
service environment variables. See the service documentation for tuning details.
|
|
211
|
+
|
|
212
|
+
The plugin exposes `ingestionGateThreshold` for host-side gating decisions:
|
|
213
|
+
|
|
214
|
+
| Key | Type | Default | Notes |
|
|
215
|
+
|---|---|---|---|
|
|
216
|
+
| `ingestionGateThreshold` | number | `0.35` | Minimum semantic relevance score used by the plugin host for ingestion gating |
|
|
217
|
+
|
|
218
|
+
### Compaction
|
|
219
|
+
|
|
220
|
+
| Key | Type | Default | Notes |
|
|
221
|
+
|---|---|---|---|
|
|
222
|
+
| `compactThreshold` | number | — | Absolute token threshold for forced compaction |
|
|
223
|
+
| `compactionThresholdFraction` | number | `0.8` | Dynamic trigger as fraction of active token budget |
|
|
224
|
+
| `compactSessionTokenBudget` | number | `2000` | Auto-compact when session exceeds this many tokens since last compaction; `0` disables |
|
|
225
|
+
| `compactionQualityWeight` | number | `0.5` | How much summary confidence affects retrieval score (0 = ignore, 1 = full suppression) |
|
|
226
|
+
|
|
227
|
+
### Summarizer
|
|
228
|
+
|
|
229
|
+
| Key | Type | Default | Notes |
|
|
230
|
+
|---|---|---|---|
|
|
231
|
+
| `summarizerBackend` | string | — | `bundled`, `onnx-local`, `ollama-local`, or `custom-local` |
|
|
232
|
+
| `summarizerProfile` | string | — | Summarizer model profile |
|
|
233
|
+
| `summarizerModel` | string | — | Model name for summarization |
|
|
234
|
+
| `summarizerModelPath` | string | — | Path to summarizer model file |
|
|
235
|
+
| `summarizerTokenizerPath` | string | — | Path to summarizer tokenizer file |
|
|
236
|
+
| `summarizerRuntimePath` | string | — | Path to summarizer ONNX runtime |
|
|
237
|
+
| `summarizerEndpoint` | string | — | External summarizer endpoint URL |
|
|
238
|
+
| `ollamaUrl` | string | — | Ollama base URL (populates `summarizerEndpoint` when unset) |
|
|
239
|
+
| `compactModel` | string | — | Model to use for compaction summaries (populates `summarizerModel` when unset) |
|
|
240
|
+
|
|
241
|
+
### Identity
|
|
242
|
+
|
|
243
|
+
| Key | Type | Default | Notes |
|
|
244
|
+
|---|---|---|---|
|
|
245
|
+
| `userId` | string | auto-derived | Stable user identity for cross-session durable memory |
|
|
246
|
+
| `identityPath` | string | `$OPENCLAW_STATE_DIR/libravdb-identity.json` | Custom path for the auto-derived identity file |
|
|
247
|
+
|
|
248
|
+
### Markdown ingestion
|
|
249
|
+
|
|
250
|
+
| Key | Type | Default | Notes |
|
|
251
|
+
|---|---|---|---|
|
|
252
|
+
| `markdownIngestionEnabled` | boolean | `false` | Watch markdown roots for changes |
|
|
253
|
+
| `markdownIngestionRoots` | string[] | — | Directories to watch |
|
|
254
|
+
| `markdownIngestionInclude` | string[] | — | Glob patterns to include |
|
|
255
|
+
| `markdownIngestionExclude` | string[] | — | Glob patterns to exclude |
|
|
256
|
+
| `markdownIngestionDebounceMs` | number | `150` | Debounce window for file change events |
|
|
257
|
+
| `markdownIngestionObsidianEnabled` | boolean | `false` | Watch Obsidian vault roots |
|
|
258
|
+
| `markdownIngestionObsidianRoots` | string[] | — | Obsidian vault directories |
|
|
259
|
+
| `markdownIngestionObsidianInclude` | string[] | — | Obsidian glob include patterns |
|
|
260
|
+
| `markdownIngestionObsidianExclude` | string[] | — | Obsidian glob exclude patterns |
|
|
261
|
+
| `markdownIngestionObsidianDebounceMs` | number | `150` | Obsidian debounce window |
|
|
262
|
+
|
|
263
|
+
### Dream promotion
|
|
264
|
+
|
|
265
|
+
| Key | Type | Default | Notes |
|
|
266
|
+
|---|---|---|---|
|
|
267
|
+
| `dreamPromotionEnabled` | boolean | `false` | Enable dream diary promotion |
|
|
268
|
+
| `dreamPromotionDiaryPath` | string | — | Path to dream diary markdown file |
|
|
269
|
+
| `dreamPromotionUserId` | string | — | User ID for dream collection scoping |
|
|
270
|
+
| `dreamPromotionDebounceMs` | number | `150` | Debounce window for dream diary changes |
|
|
271
|
+
|
|
272
|
+
### Misc
|
|
273
|
+
|
|
274
|
+
| Key | Type | Default | Notes |
|
|
275
|
+
|---|---|---|---|
|
|
276
|
+
| `sessionTTL` | number | — | Session TTL in seconds |
|
|
277
|
+
| `recencyLambdaSession` | number | — | Session recency decay factor |
|
|
278
|
+
| `recencyLambdaUser` | number | — | User recency decay factor |
|
|
279
|
+
| `recencyLambdaGlobal` | number | — | Global recency decay factor |
|
|
280
|
+
| `tokenBudgetFraction` | number | — | Fraction of host token budget to use for memory context |
|
|
281
|
+
| `maxRetries` | number | — | Max RPC retries |
|
|
282
|
+
| `logLevel` | string | — | Log level override |
|
|
283
|
+
| `lifecycleJournalMaxEntries` | number | `500` | Max lifecycle journal entries |
|
|
284
|
+
| `authoredHardBudgetFraction` | number | — | Token budget fraction for hard-authored recall (0–1) |
|
|
285
|
+
| `authoredSoftBudgetFraction` | number | — | Token budget fraction for soft-authored recall (0–1) |
|
|
286
|
+
| `elevatedGuidanceBudgetFraction` | number | — | Token budget fraction for elevated guidance recall (0–1) |
|
|
287
|
+
|
|
138
288
|
## Optional Features
|
|
139
289
|
|
|
140
290
|
- **Markdown ingestion** watches OpenClaw-owned markdown roots or Obsidian vaults
|
|
141
291
|
and syncs eligible notes into memory. See [Features](./docs/features.md).
|
|
142
292
|
- **Dream promotion** promotes vetted dream diary bullets into an isolated
|
|
143
293
|
`dream:{userId}` collection. See [Features](./docs/features.md).
|
|
144
|
-
- **Embedding profiles**
|
|
145
|
-
|
|
294
|
+
- **Embedding profiles** default to `nomic-embed-text-v1.5` with `bge-small-en-v1.5`
|
|
295
|
+
fallback. See [Embedding profiles](./docs/embedding-profiles.md).
|
|
146
296
|
|
|
147
297
|
## Docs By Goal
|
|
148
298
|
|
|
@@ -162,8 +312,8 @@ bash scripts/build-daemon.sh
|
|
|
162
312
|
```
|
|
163
313
|
|
|
164
314
|
`scripts/build-daemon.sh` prepares `.daemon-bin/libravdbd` for local plugin
|
|
165
|
-
testing when you have a published
|
|
166
|
-
|
|
315
|
+
testing when you have a published service binary, a Homebrew service, or a local
|
|
316
|
+
service checkout. For the full source workflow, read [Development](./docs/development.md).
|
|
167
317
|
|
|
168
318
|
## Runtime Facts
|
|
169
319
|
|
|
@@ -171,6 +321,6 @@ daemon checkout. For the full source workflow, read [Development](./docs/develop
|
|
|
171
321
|
- OpenClaw plugin id: `libravdb-memory`
|
|
172
322
|
- plugin kind: `memory`, `context-engine`
|
|
173
323
|
- minimum OpenClaw host version: `>= 2026.3.22`
|
|
174
|
-
- default data path: `$HOME/.
|
|
175
|
-
- default macOS/Linux endpoint: `unix:$HOME/.
|
|
324
|
+
- default data path: `$HOME/.libravdbd/data_nomic-embed-text-v1_5.libravdb`
|
|
325
|
+
- default macOS/Linux endpoint: `unix:$HOME/.libravdbd/run/libravdb.sock`
|
|
176
326
|
- default Windows endpoint: `tcp:127.0.0.1:37421`
|
package/dist/sidecar.js
CHANGED
|
@@ -342,11 +342,11 @@ export function defaultEndpoint(platform = process.platform, homeDir = os.homedi
|
|
|
342
342
|
const sockName = "libravdb.sock";
|
|
343
343
|
const candidateDirs = [
|
|
344
344
|
// User-local (npm plugin convention)
|
|
345
|
-
homeDir?.trim() ? path.join(homeDir, ".
|
|
345
|
+
homeDir?.trim() ? path.join(homeDir, ".libravdbd", "run") : null,
|
|
346
346
|
// Homebrew (Apple Silicon) — matches the Homebrew formula LaunchAgent
|
|
347
|
-
"/opt/homebrew/var/
|
|
347
|
+
"/opt/homebrew/var/libravdbd/run",
|
|
348
348
|
// Homebrew (Intel Mac) / manual Linux installs
|
|
349
|
-
"/usr/local/var/
|
|
349
|
+
"/usr/local/var/libravdbd/run",
|
|
350
350
|
].filter((d) => d !== null);
|
|
351
351
|
for (const dir of candidateDirs) {
|
|
352
352
|
const sockPath = path.join(dir, sockName);
|
|
@@ -361,8 +361,8 @@ export function defaultEndpoint(platform = process.platform, homeDir = os.homedi
|
|
|
361
361
|
}
|
|
362
362
|
// Fallback to the original user-local path so error messages stay familiar.
|
|
363
363
|
const baseDir = homeDir?.trim()
|
|
364
|
-
? path.join(homeDir, ".
|
|
365
|
-
: path.join(".", ".
|
|
364
|
+
? path.join(homeDir, ".libravdbd", "run")
|
|
365
|
+
: path.join(".", ".libravdbd", "run");
|
|
366
366
|
return `unix:${path.join(baseDir, sockName)}`;
|
|
367
367
|
}
|
|
368
368
|
export function buildSidecarEnv(cfg) {
|
|
@@ -424,33 +424,6 @@ export function buildSidecarEnv(cfg) {
|
|
|
424
424
|
if (cfg.compactModel && !env.LIBRAVDB_SUMMARIZER_MODEL) {
|
|
425
425
|
env.LIBRAVDB_SUMMARIZER_MODEL = cfg.compactModel;
|
|
426
426
|
}
|
|
427
|
-
if (cfg.gatingWeights?.w1c != null) {
|
|
428
|
-
env.LIBRAVDB_GATING_W1C = String(cfg.gatingWeights.w1c);
|
|
429
|
-
}
|
|
430
|
-
if (cfg.gatingWeights?.w2c != null) {
|
|
431
|
-
env.LIBRAVDB_GATING_W2C = String(cfg.gatingWeights.w2c);
|
|
432
|
-
}
|
|
433
|
-
if (cfg.gatingWeights?.w3c != null) {
|
|
434
|
-
env.LIBRAVDB_GATING_W3C = String(cfg.gatingWeights.w3c);
|
|
435
|
-
}
|
|
436
|
-
if (cfg.gatingWeights?.w1t != null) {
|
|
437
|
-
env.LIBRAVDB_GATING_W1T = String(cfg.gatingWeights.w1t);
|
|
438
|
-
}
|
|
439
|
-
if (cfg.gatingWeights?.w2t != null) {
|
|
440
|
-
env.LIBRAVDB_GATING_W2T = String(cfg.gatingWeights.w2t);
|
|
441
|
-
}
|
|
442
|
-
if (cfg.gatingWeights?.w3t != null) {
|
|
443
|
-
env.LIBRAVDB_GATING_W3T = String(cfg.gatingWeights.w3t);
|
|
444
|
-
}
|
|
445
|
-
if (typeof cfg.gatingTechNorm === "number" && cfg.gatingTechNorm > 0) {
|
|
446
|
-
env.LIBRAVDB_GATING_TECH_NORM = String(cfg.gatingTechNorm);
|
|
447
|
-
}
|
|
448
|
-
if (typeof cfg.ingestionGateThreshold === "number" && cfg.ingestionGateThreshold >= 0) {
|
|
449
|
-
env.LIBRAVDB_GATING_THRESHOLD = String(cfg.ingestionGateThreshold);
|
|
450
|
-
}
|
|
451
|
-
if (typeof cfg.gatingCentroidK === "number" && cfg.gatingCentroidK > 0) {
|
|
452
|
-
env.LIBRAVDB_GATING_CENTROID_K = String(cfg.gatingCentroidK);
|
|
453
|
-
}
|
|
454
427
|
if (typeof cfg.lifecycleJournalMaxEntries === "number" && cfg.lifecycleJournalMaxEntries > 0) {
|
|
455
428
|
env.LIBRAVDB_LIFECYCLE_JOURNAL_MAX_ENTRIES = String(cfg.lifecycleJournalMaxEntries);
|
|
456
429
|
}
|
package/dist/types.d.ts
CHANGED
|
@@ -52,16 +52,6 @@ export interface PluginConfig {
|
|
|
52
52
|
dreamPromotionDiaryPath?: string;
|
|
53
53
|
dreamPromotionUserId?: string;
|
|
54
54
|
dreamPromotionDebounceMs?: number;
|
|
55
|
-
gatingWeights?: {
|
|
56
|
-
w1c?: number;
|
|
57
|
-
w2c?: number;
|
|
58
|
-
w3c?: number;
|
|
59
|
-
w1t?: number;
|
|
60
|
-
w2t?: number;
|
|
61
|
-
w3t?: number;
|
|
62
|
-
};
|
|
63
|
-
gatingTechNorm?: number;
|
|
64
|
-
gatingCentroidK?: number;
|
|
65
55
|
lifecycleJournalMaxEntries?: number;
|
|
66
56
|
compactionQualityWeight?: number;
|
|
67
57
|
recencyLambdaSession?: number;
|
|
@@ -1,33 +1,32 @@
|
|
|
1
1
|
# Embedding Profiles
|
|
2
2
|
|
|
3
|
-
The plugin
|
|
3
|
+
The plugin uses `embeddingProfile` for named local model metadata defaults.
|
|
4
4
|
|
|
5
|
-
Default selection baseline
|
|
5
|
+
Default selection baseline:
|
|
6
6
|
|
|
7
|
-
- default embedding profile: `
|
|
8
|
-
- bundled fallback profile: `
|
|
7
|
+
- default embedding profile: `nomic-embed-text-v1.5`
|
|
8
|
+
- bundled fallback profile: `bge-small-en-v1.5`
|
|
9
9
|
|
|
10
10
|
Why:
|
|
11
11
|
|
|
12
|
-
-
|
|
13
|
-
-
|
|
14
|
-
- Nomic ONNX on macOS is fragile with CoreML execution and can trigger multi-GB RSS, so it is no longer the safe bundled default.
|
|
12
|
+
- Nomic is the default because its Matryoshka-trained embeddings deliver significantly higher retrieval accuracy than MiniLM, with principled dimensionality tiering (`64d → 256d → 768d`) that lets the daemon trade memory for precision without re-embedding.
|
|
13
|
+
- bge-small-en-v1.5 is the fallback for resource-constrained systems and is automatically selected when the primary model's dimensions do not match the active collection.
|
|
15
14
|
- Intel Macs without reliable Metal/MPS support should set `onnxDevice: "cpu"` to force CPU ONNX execution and bypass CoreML.
|
|
16
15
|
|
|
17
16
|
Current shipped profile names:
|
|
18
17
|
|
|
19
|
-
- `all-minilm-l6-v2`
|
|
20
|
-
- family: `all-minilm-l6-v2`
|
|
21
|
-
- dimensions: `384`
|
|
22
|
-
- normalize: `true`
|
|
23
|
-
- max context tokens: `128`
|
|
24
|
-
|
|
25
18
|
- `nomic-embed-text-v1.5`
|
|
26
19
|
- family: `nomic-embed-text-v1.5`
|
|
27
20
|
- dimensions: `768`
|
|
28
21
|
- normalize: `true`
|
|
29
22
|
- max context tokens: `8192`
|
|
30
23
|
|
|
24
|
+
- `bge-small-en-v1.5`
|
|
25
|
+
- family: `bge-small-en-v1.5`
|
|
26
|
+
- dimensions: `384`
|
|
27
|
+
- normalize: `true`
|
|
28
|
+
- max context tokens: `512`
|
|
29
|
+
|
|
31
30
|
How it works:
|
|
32
31
|
|
|
33
32
|
- `embeddingProfile` supplies metadata defaults like family, dimensions, and normalize behavior.
|
|
@@ -38,6 +37,6 @@ How it works:
|
|
|
38
37
|
|
|
39
38
|
Recommended usage:
|
|
40
39
|
|
|
41
|
-
- `bundled` for the shipped default path, which
|
|
42
|
-
- `onnx-local` plus `embeddingProfile` when a power user wants a known model family
|
|
40
|
+
- `bundled` for the shipped default path, which uses `nomic-embed-text-v1.5`.
|
|
41
|
+
- `onnx-local` plus `embeddingProfile` when a power user wants a known model family with local assets.
|
|
43
42
|
- treat remote/Ollama providers as future separate backend types, not as overloads of `custom-local`.
|
package/docs/install.md
CHANGED
|
@@ -63,7 +63,7 @@ If you run the daemon on a non-default endpoint, add a plugin config:
|
|
|
63
63
|
"libravdb-memory": {
|
|
64
64
|
"enabled": true,
|
|
65
65
|
"config": {
|
|
66
|
-
"sidecarPath": "unix:/Users/<you>/.
|
|
66
|
+
"sidecarPath": "unix:/Users/<you>/.libravdbd/run/libravdb.sock"
|
|
67
67
|
}
|
|
68
68
|
}
|
|
69
69
|
}
|
|
@@ -74,10 +74,10 @@ If you run the daemon on a non-default endpoint, add a plugin config:
|
|
|
74
74
|
When `sidecarPath` is set to `"auto"`, the plugin resolves endpoints in this order on macOS/Linux:
|
|
75
75
|
|
|
76
76
|
1. `LIBRAVDB_RPC_ENDPOINT` if it is set to a valid daemon endpoint
|
|
77
|
-
2. `$HOME/.
|
|
78
|
-
3. `/opt/homebrew/var/
|
|
79
|
-
4. `/usr/local/var/
|
|
80
|
-
5. fallback to `$HOME/.
|
|
77
|
+
2. `$HOME/.libravdbd/run/libravdb.sock` if it exists
|
|
78
|
+
3. `/opt/homebrew/var/libravdbd/run/libravdb.sock` if it exists
|
|
79
|
+
4. `/usr/local/var/libravdbd/run/libravdb.sock` if it exists
|
|
80
|
+
5. fallback to `$HOME/.libravdbd/run/libravdb.sock`
|
|
81
81
|
|
|
82
82
|
## Sidecar Daemon Install
|
|
83
83
|
|
|
@@ -85,13 +85,15 @@ The daemon owns the local database, embeddings, and JSON-RPC endpoint.
|
|
|
85
85
|
|
|
86
86
|
Default endpoints:
|
|
87
87
|
|
|
88
|
-
- Homebrew on macOS: `unix:/opt/homebrew/var/
|
|
89
|
-
- macOS
|
|
88
|
+
- Homebrew on macOS (Apple Silicon): `unix:/opt/homebrew/var/libravdbd/run/libravdb.sock`
|
|
89
|
+
- Homebrew on macOS (Intel): `unix:/usr/local/var/libravdbd/run/libravdb.sock`
|
|
90
|
+
- macOS/Linux user-local installs: `unix:$HOME/.libravdbd/run/libravdb.sock`
|
|
90
91
|
- Windows: `tcp:127.0.0.1:37421`
|
|
91
92
|
|
|
92
93
|
Default data path:
|
|
93
94
|
|
|
94
|
-
- macOS/Linux
|
|
95
|
+
- macOS/Linux user installs: `$HOME/.libravdbd/data_nomic-embed-text-v1_5.libravdb`
|
|
96
|
+
- Windows user installs: `%USERPROFILE%\.libravdbd\data_nomic-embed-text-v1_5.libravdb`
|
|
95
97
|
|
|
96
98
|
### Homebrew
|
|
97
99
|
|
|
@@ -188,5 +190,5 @@ Healthy output should show that:
|
|
|
188
190
|
|
|
189
191
|
If OpenClaw cannot reach the daemon, verify the endpoint first:
|
|
190
192
|
|
|
191
|
-
- macOS/Linux default: `unix:$HOME/.
|
|
193
|
+
- macOS/Linux default: `unix:$HOME/.libravdbd/run/libravdb.sock`
|
|
192
194
|
- Windows default: `tcp:127.0.0.1:37421`
|
package/docs/installation.md
CHANGED
|
@@ -87,7 +87,7 @@ If the daemon uses a non-default endpoint, add `sidecarPath`:
|
|
|
87
87
|
"libravdb-memory": {
|
|
88
88
|
"enabled": true,
|
|
89
89
|
"config": {
|
|
90
|
-
"sidecarPath": "unix:/Users/<you>/.
|
|
90
|
+
"sidecarPath": "unix:/Users/<you>/.libravdbd/run/libravdb.sock"
|
|
91
91
|
}
|
|
92
92
|
}
|
|
93
93
|
}
|
|
@@ -98,23 +98,23 @@ If the daemon uses a non-default endpoint, add `sidecarPath`:
|
|
|
98
98
|
When `sidecarPath` is `"auto"`, macOS/Linux endpoint resolution checks:
|
|
99
99
|
|
|
100
100
|
1. `LIBRAVDB_RPC_ENDPOINT`
|
|
101
|
-
2. `$HOME/.
|
|
102
|
-
3. `/opt/homebrew/var/
|
|
103
|
-
4. `/usr/local/var/
|
|
104
|
-
5. fallback to `$HOME/.
|
|
101
|
+
2. `$HOME/.libravdbd/run/libravdb.sock`
|
|
102
|
+
3. `/opt/homebrew/var/libravdbd/run/libravdb.sock`
|
|
103
|
+
4. `/usr/local/var/libravdbd/run/libravdb.sock`
|
|
104
|
+
5. fallback to `$HOME/.libravdbd/run/libravdb.sock`
|
|
105
105
|
|
|
106
106
|
## Default Paths
|
|
107
107
|
|
|
108
108
|
| Platform | Default endpoint |
|
|
109
109
|
|---|---|
|
|
110
|
-
| macOS/Linux user-local | `unix:$HOME/.
|
|
111
|
-
| macOS Homebrew Apple Silicon | `unix:/opt/homebrew/var/
|
|
110
|
+
| macOS/Linux user-local | `unix:$HOME/.libravdbd/run/libravdb.sock` |
|
|
111
|
+
| macOS Homebrew Apple Silicon | `unix:/opt/homebrew/var/libravdbd/run/libravdb.sock` |
|
|
112
112
|
| Windows | `tcp:127.0.0.1:37421` |
|
|
113
113
|
|
|
114
114
|
Default data path:
|
|
115
115
|
|
|
116
116
|
```text
|
|
117
|
-
$HOME/.
|
|
117
|
+
$HOME/.libravdbd/data_nomic-embed-text-v1_5.libravdb
|
|
118
118
|
```
|
|
119
119
|
|
|
120
120
|
## Verification
|
|
@@ -135,7 +135,7 @@ Expected output shape:
|
|
|
135
135
|
│ Lifecycle hints │ 0 │
|
|
136
136
|
│ Gate threshold │ 0.35 │
|
|
137
137
|
│ Abstractive model │ ready | not provisioned │
|
|
138
|
-
│ Embedding profile │
|
|
138
|
+
│ Embedding profile │ nomic-embed-text-v1.5 │
|
|
139
139
|
│ Message │ ok │
|
|
140
140
|
└────────────────────┴──────────────────────────────┘
|
|
141
141
|
```
|
package/docs/models.md
CHANGED
|
@@ -20,16 +20,15 @@ latency and offline operation are part of the product contract.
|
|
|
20
20
|
|
|
21
21
|
## Default And Optional Embedding Profiles
|
|
22
22
|
|
|
23
|
-
The
|
|
23
|
+
The default profile is `nomic-embed-text-v1.5`. Nomic was chosen as the default
|
|
24
|
+
because its Matryoshka-trained embeddings deliver significantly higher retrieval
|
|
25
|
+
accuracy than MiniLM, with principled dimensionality tiering (`64d → 256d →
|
|
26
|
+
768d`) that lets the daemon trade memory for precision without re-embedding.
|
|
24
27
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
`nomic-embed-text-v1.5` remains available as an explicit opt-in profile for
|
|
30
|
-
long-context retrieval experiments. Nomic's Matryoshka training makes
|
|
31
|
-
`64d -> 256d -> 768d` tiering principled rather than arbitrary truncation, but
|
|
32
|
-
its larger footprint makes it a less conservative default.
|
|
28
|
+
`bge-small-en-v1.5` is the fallback profile. It has a smaller disk and memory
|
|
29
|
+
footprint than Nomic and is automatically selected when the primary model's
|
|
30
|
+
dimensions do not match the active collection. Operators on resource-constrained
|
|
31
|
+
systems can also set it as the primary profile for lighter local inference.
|
|
33
32
|
|
|
34
33
|
For exact profile metadata, read [Embedding profiles](./embedding-profiles.md).
|
|
35
34
|
|
|
@@ -46,8 +45,8 @@ generative models would increase latency and operational complexity.
|
|
|
46
45
|
|
|
47
46
|
| Model/profile | Role |
|
|
48
47
|
|---|---|
|
|
49
|
-
| `
|
|
50
|
-
| `
|
|
48
|
+
| `nomic-embed-text-v1.5` | Default embedding profile — high-accuracy Matryoshka embeddings. |
|
|
49
|
+
| `bge-small-en-v1.5` | Fallback embedding profile — lighter footprint for constrained systems. |
|
|
51
50
|
| T5-small | Optional local abstractive compaction summarizer. |
|
|
52
51
|
|
|
53
52
|
External summarizer endpoints, such as Ollama, are optional. They are not part
|
package/docs/security.md
CHANGED
|
@@ -27,7 +27,7 @@ Current implementation facts:
|
|
|
27
27
|
- the published plugin manifest does not register `openclaw.setup`
|
|
28
28
|
- the published plugin source contains no direct `child_process` usage
|
|
29
29
|
- the plugin connects only to a configured local endpoint such as
|
|
30
|
-
`unix:/Users/<you>/.
|
|
30
|
+
`unix:/Users/<you>/.libravdbd/run/libravdb.sock` or `tcp:127.0.0.1:37421`
|
|
31
31
|
- daemon installation and lifecycle are explicit user or operator actions
|
|
32
32
|
|
|
33
33
|
The daemon distribution surface should be evaluated separately from the plugin
|
package/docs/uninstall.md
CHANGED
|
@@ -84,8 +84,8 @@ Only do this if you want to permanently remove stored LibraVDB memory.
|
|
|
84
84
|
|
|
85
85
|
Common local state:
|
|
86
86
|
|
|
87
|
-
- socket directory: `~/.
|
|
88
|
-
- database file: `~/.
|
|
87
|
+
- socket directory: `~/.libravdbd/run/`
|
|
88
|
+
- database file: `~/.libravdbd/data_nomic-embed-text-v1_5.libravdb`
|
|
89
89
|
|
|
90
90
|
If you configured a custom Unix socket endpoint in `sidecarPath`, remove that
|
|
91
91
|
socket path or containing directory if applicable. If you configured `dbPath`,
|
package/openclaw.plugin.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"id": "libravdb-memory",
|
|
3
3
|
"name": "LibraVDB Memory",
|
|
4
4
|
"description": "Persistent vector memory with three-tier hybrid scoring",
|
|
5
|
-
"version": "1.4.
|
|
5
|
+
"version": "1.4.32",
|
|
6
6
|
"kind": [
|
|
7
7
|
"memory",
|
|
8
8
|
"context-engine"
|
|
@@ -85,11 +85,11 @@
|
|
|
85
85
|
},
|
|
86
86
|
"embeddingProfile": {
|
|
87
87
|
"type": "string",
|
|
88
|
-
"default": "
|
|
88
|
+
"default": "nomic-embed-text-v1.5"
|
|
89
89
|
},
|
|
90
90
|
"fallbackProfile": {
|
|
91
91
|
"type": "string",
|
|
92
|
-
"default": "
|
|
92
|
+
"default": "bge-small-en-v1.5"
|
|
93
93
|
},
|
|
94
94
|
"embeddingModelPath": {
|
|
95
95
|
"type": "string"
|
|
@@ -215,52 +215,6 @@
|
|
|
215
215
|
"type": "number",
|
|
216
216
|
"default": 150
|
|
217
217
|
},
|
|
218
|
-
"gatingWeights": {
|
|
219
|
-
"type": "object",
|
|
220
|
-
"additionalProperties": false,
|
|
221
|
-
"default": {
|
|
222
|
-
"w1c": 0.35,
|
|
223
|
-
"w2c": 0.4,
|
|
224
|
-
"w3c": 0.25,
|
|
225
|
-
"w1t": 0.4,
|
|
226
|
-
"w2t": 0.35,
|
|
227
|
-
"w3t": 0.25
|
|
228
|
-
},
|
|
229
|
-
"properties": {
|
|
230
|
-
"w1c": {
|
|
231
|
-
"type": "number",
|
|
232
|
-
"default": 0.35
|
|
233
|
-
},
|
|
234
|
-
"w2c": {
|
|
235
|
-
"type": "number",
|
|
236
|
-
"default": 0.4
|
|
237
|
-
},
|
|
238
|
-
"w3c": {
|
|
239
|
-
"type": "number",
|
|
240
|
-
"default": 0.25
|
|
241
|
-
},
|
|
242
|
-
"w1t": {
|
|
243
|
-
"type": "number",
|
|
244
|
-
"default": 0.4
|
|
245
|
-
},
|
|
246
|
-
"w2t": {
|
|
247
|
-
"type": "number",
|
|
248
|
-
"default": 0.35
|
|
249
|
-
},
|
|
250
|
-
"w3t": {
|
|
251
|
-
"type": "number",
|
|
252
|
-
"default": 0.25
|
|
253
|
-
}
|
|
254
|
-
}
|
|
255
|
-
},
|
|
256
|
-
"gatingTechNorm": {
|
|
257
|
-
"type": "number",
|
|
258
|
-
"default": 1.5
|
|
259
|
-
},
|
|
260
|
-
"gatingCentroidK": {
|
|
261
|
-
"type": "number",
|
|
262
|
-
"default": 10
|
|
263
|
-
},
|
|
264
218
|
"lifecycleJournalMaxEntries": {
|
|
265
219
|
"type": "number",
|
|
266
220
|
"default": 500
|