@poolzin/pool-bot 2026.3.7 → 2026.3.10
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 +40 -0
- package/README.md +147 -69
- package/dist/.buildstamp +1 -1
- package/dist/agents/error-classifier.js +251 -0
- package/dist/agents/skills/security.js +211 -0
- package/dist/build-info.json +3 -3
- package/dist/cli/cron-cli/register.cron-dashboard.js +339 -0
- package/dist/cli/cron-cli/register.js +2 -0
- package/dist/cli/errors.js +187 -0
- package/dist/cli/lazy-commands.example.js +113 -0
- package/dist/cli/lazy-commands.js +329 -0
- package/dist/cli/program/command-registry.js +26 -0
- package/dist/cli/program/register.maintenance.js +21 -0
- package/dist/cli/program/register.skills.js +4 -0
- package/dist/cli/program/register.subclis.js +9 -0
- package/dist/cli/swarm-cli/register.js +8 -0
- package/dist/cli/swarm-cli/register.swarm-status.js +488 -0
- package/dist/cli/telemetry-cli/register.js +10 -0
- package/dist/cli/telemetry-cli/register.telemetry-alerts.js +176 -0
- package/dist/cli/telemetry-cli/register.telemetry-metrics.js +323 -0
- package/dist/cli/telemetry-cli/register.telemetry-status.js +179 -0
- package/dist/commands/doctor-checks.js +498 -0
- package/dist/config/config.js +1 -0
- package/dist/config/secrets-integration.js +88 -0
- package/dist/context-engine/index.js +33 -0
- package/dist/context-engine/legacy.js +179 -0
- package/dist/context-engine/registry.js +86 -0
- package/dist/context-engine/summarizing.js +290 -0
- package/dist/context-engine/types.js +7 -0
- package/dist/cron/service/timer.js +18 -0
- package/dist/gateway/protocol/index.js +5 -2
- package/dist/gateway/protocol/schema/error-codes.js +1 -0
- package/dist/gateway/protocol/schema/swarm.js +80 -0
- package/dist/gateway/protocol/schema.js +1 -0
- package/dist/gateway/server-close.js +4 -0
- package/dist/gateway/server-constants.js +1 -0
- package/dist/gateway/server-cron.js +29 -0
- package/dist/gateway/server-maintenance.js +35 -2
- package/dist/gateway/server-methods/swarm.js +58 -0
- package/dist/gateway/server-methods/telemetry.js +71 -0
- package/dist/gateway/server-methods-list.js +8 -0
- package/dist/gateway/server-methods.js +9 -2
- package/dist/gateway/server.impl.js +33 -16
- package/dist/infra/abort-pattern.js +106 -0
- package/dist/infra/retry.js +96 -0
- package/dist/secrets/index.js +28 -0
- package/dist/secrets/resolver.js +185 -0
- package/dist/secrets/runtime.js +142 -0
- package/dist/secrets/types.js +11 -0
- package/dist/security/dangerous-tools.js +80 -0
- package/dist/security/types.js +12 -0
- package/dist/skills/commands.js +333 -0
- package/dist/skills/index.js +164 -0
- package/dist/skills/loader.js +282 -0
- package/dist/skills/parser.js +446 -0
- package/dist/skills/registry.js +394 -0
- package/dist/skills/security.js +312 -0
- package/dist/skills/types.js +21 -0
- package/dist/swarm/service.js +247 -0
- package/dist/telemetry/alert-engine.js +258 -0
- package/dist/telemetry/cron-instrumentation.js +49 -0
- package/dist/telemetry/gateway-instrumentation.js +80 -0
- package/dist/telemetry/instrumentation.js +66 -0
- package/dist/telemetry/service.js +345 -0
- package/dist/test-utils/index.js +219 -0
- package/dist/tui/components/assistant-message.js +6 -2
- package/dist/tui/components/hyperlink-markdown.js +32 -0
- package/dist/tui/components/searchable-select-list.js +12 -1
- package/dist/tui/components/user-message.js +6 -2
- package/dist/tui/index.js +611 -0
- package/dist/tui/theme/theme-detection.js +226 -0
- package/dist/tui/tui-command-handlers.js +20 -0
- package/dist/tui/tui-formatters.js +4 -3
- package/dist/tui/utils/ctrl-c-handler.js +67 -0
- package/dist/tui/utils/osc8-hyperlinks.js +208 -0
- package/dist/tui/utils/safe-stop.js +180 -0
- package/dist/tui/utils/session-key-utils.js +81 -0
- package/dist/tui/utils/text-sanitization.js +284 -0
- package/dist/utils/lru-cache.js +116 -0
- package/dist/utils/performance.js +199 -0
- package/dist/utils/retry.js +240 -0
- package/docs/INTEGRATION_PLAN.md +475 -0
- package/docs/INTEGRATION_SUMMARY.md +215 -0
- package/docs/MELHORIAS_IMPLEMENTADAS.md +228 -0
- package/docs/MELHORIAS_PROFISSIONAIS.md +282 -0
- package/docs/PLANO_ACAO_TUI.md +357 -0
- package/docs/PROGRESSO_TUI.md +66 -0
- package/docs/RELATORIO_FINAL.md +217 -0
- package/docs/diagnostico-shell-completion.md +265 -0
- package/docs/features/advanced-memory.md +585 -0
- package/docs/features/discord-components-v2.md +277 -0
- package/docs/features/swarm.md +100 -0
- package/docs/features/telemetry.md +284 -0
- package/docs/integrations/HEXSTRIKE_PLAN.md +796 -0
- package/docs/integrations/INTEGRATION_PLAN.md +744 -0
- package/docs/integrations/PAGE_AGENT_PLAN.md +370 -0
- package/docs/integrations/XYOPS_PLAN.md +978 -0
- package/docs/models/provider-infrastructure.md +400 -0
- package/docs/security/exec-approvals.md +294 -0
- package/docs/skills/IMPLEMENTATION_SUMMARY.md +145 -0
- package/docs/skills/SKILL.md +524 -0
- package/docs/skills.md +405 -0
- package/extensions/bluebubbles/package.json +1 -1
- package/extensions/copilot-proxy/package.json +1 -1
- package/extensions/diagnostics-otel/package.json +1 -1
- package/extensions/discord/package.json +1 -1
- package/extensions/feishu/package.json +1 -1
- package/extensions/google-antigravity-auth/package.json +1 -1
- package/extensions/google-gemini-cli-auth/package.json +1 -1
- package/extensions/googlechat/package.json +1 -1
- package/extensions/hexstrike-bridge/README.md +119 -0
- package/extensions/hexstrike-bridge/index.test.ts +247 -0
- package/extensions/hexstrike-bridge/index.ts +487 -0
- package/extensions/hexstrike-bridge/package.json +17 -0
- package/extensions/imessage/package.json +1 -1
- package/extensions/irc/package.json +1 -1
- package/extensions/line/package.json +1 -1
- package/extensions/llm-task/package.json +1 -1
- package/extensions/lobster/package.json +1 -1
- package/extensions/matrix/CHANGELOG.md +5 -0
- package/extensions/matrix/package.json +1 -1
- package/extensions/mattermost/package.json +1 -1
- package/extensions/mcp-server/index.ts +14 -0
- package/extensions/mcp-server/package.json +11 -0
- package/extensions/mcp-server/src/service.ts +540 -0
- package/extensions/memory-core/package.json +1 -1
- package/extensions/memory-lancedb/package.json +1 -1
- package/extensions/minimax-portal-auth/package.json +1 -1
- package/extensions/msteams/CHANGELOG.md +5 -0
- package/extensions/msteams/package.json +1 -1
- package/extensions/nextcloud-talk/package.json +1 -1
- package/extensions/nostr/CHANGELOG.md +5 -0
- package/extensions/nostr/package.json +1 -1
- package/extensions/open-prose/package.json +1 -1
- package/extensions/openai-codex-auth/package.json +1 -1
- package/extensions/signal/package.json +1 -1
- package/extensions/slack/package.json +1 -1
- package/extensions/telegram/package.json +1 -1
- package/extensions/tlon/package.json +1 -1
- package/extensions/twitch/CHANGELOG.md +5 -0
- package/extensions/twitch/package.json +1 -1
- package/extensions/voice-call/CHANGELOG.md +5 -0
- package/extensions/voice-call/package.json +1 -1
- package/extensions/whatsapp/package.json +1 -1
- package/extensions/zalo/CHANGELOG.md +5 -0
- package/extensions/zalo/package.json +1 -1
- package/extensions/zalouser/CHANGELOG.md +5 -0
- package/extensions/zalouser/package.json +1 -1
- package/package.json +8 -1
- package/skills/example-skill/SKILL.md +195 -0
|
@@ -0,0 +1,585 @@
|
|
|
1
|
+
# Advanced Memory System
|
|
2
|
+
|
|
3
|
+
PoolBot features a sophisticated memory system for context-aware conversations, supporting semantic search, keyword search, and hybrid retrieval strategies.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
The memory system provides:
|
|
8
|
+
|
|
9
|
+
- **Semantic Search** - Find relevant context using vector embeddings
|
|
10
|
+
- **Keyword Search** - Traditional FTS (Full Text Search) using SQLite FTS5
|
|
11
|
+
- **Hybrid Search** - Combine semantic + keyword for best results
|
|
12
|
+
- **MMR (Maximal Marginal Relevance)** - Diverse results, avoiding redundancy
|
|
13
|
+
- **Temporal Decay** - Prioritize recent memories
|
|
14
|
+
|
|
15
|
+
## Architecture
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
User Query
|
|
19
|
+
│
|
|
20
|
+
▼
|
|
21
|
+
┌─────────────────────────────────────┐
|
|
22
|
+
│ Memory Manager │
|
|
23
|
+
│ ┌──────────┐ ┌──────────────┐ │
|
|
24
|
+
│ │ Keyword │ │ Semantic │ │
|
|
25
|
+
│ │ Search │ │ Search │ │
|
|
26
|
+
│ │ (FTS5) │ │ (Embeddings) │ │
|
|
27
|
+
│ └────┬─────┘ └──────┬───────┘ │
|
|
28
|
+
│ │ │ │
|
|
29
|
+
│ └────────┬─────────┘ │
|
|
30
|
+
│ ▼ │
|
|
31
|
+
│ ┌─────────────┐ │
|
|
32
|
+
│ │Hybrid Merge │ │
|
|
33
|
+
│ │+ MMR + Time │ │
|
|
34
|
+
│ └──────┬──────┘ │
|
|
35
|
+
└────────────────┼───────────────────┘
|
|
36
|
+
▼
|
|
37
|
+
Relevant Memories
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Configuration
|
|
41
|
+
|
|
42
|
+
### Basic Setup
|
|
43
|
+
|
|
44
|
+
```json
|
|
45
|
+
{
|
|
46
|
+
"agents": {
|
|
47
|
+
"defaults": {
|
|
48
|
+
"memorySearch": {
|
|
49
|
+
"enabled": true,
|
|
50
|
+
"provider": "openai",
|
|
51
|
+
"fallback": "ollama"
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### Configuration Options
|
|
59
|
+
|
|
60
|
+
| Option | Type | Default | Description |
|
|
61
|
+
|--------|------|---------|-------------|
|
|
62
|
+
| `enabled` | boolean | `true` | Enable memory search |
|
|
63
|
+
| `provider` | string | `"openai"` | Primary embedding provider |
|
|
64
|
+
| `fallback` | string | - | Fallback provider if primary fails |
|
|
65
|
+
| `sources` | array | `["memory"]` | Memory sources to search |
|
|
66
|
+
| `extraPaths` | array | `[]` | Additional paths to index |
|
|
67
|
+
|
|
68
|
+
### Query Configuration
|
|
69
|
+
|
|
70
|
+
```json
|
|
71
|
+
{
|
|
72
|
+
"agents": {
|
|
73
|
+
"defaults": {
|
|
74
|
+
"memorySearch": {
|
|
75
|
+
"query": {
|
|
76
|
+
"maxResults": 10,
|
|
77
|
+
"minScore": 0.5,
|
|
78
|
+
"hybrid": {
|
|
79
|
+
"enabled": true,
|
|
80
|
+
"vectorWeight": 0.7,
|
|
81
|
+
"textWeight": 0.3,
|
|
82
|
+
"candidateMultiplier": 4,
|
|
83
|
+
"mmr": {
|
|
84
|
+
"enabled": true,
|
|
85
|
+
"lambda": 0.5
|
|
86
|
+
},
|
|
87
|
+
"temporalDecay": {
|
|
88
|
+
"enabled": true,
|
|
89
|
+
"halfLifeDays": 30
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
## Search Modes
|
|
100
|
+
|
|
101
|
+
### Hybrid Search (Default)
|
|
102
|
+
|
|
103
|
+
Combines keyword and semantic search with configurable weights:
|
|
104
|
+
|
|
105
|
+
```json
|
|
106
|
+
{
|
|
107
|
+
"agents": {
|
|
108
|
+
"defaults": {
|
|
109
|
+
"memorySearch": {
|
|
110
|
+
"query": {
|
|
111
|
+
"hybrid": {
|
|
112
|
+
"enabled": true,
|
|
113
|
+
"vectorWeight": 0.7,
|
|
114
|
+
"textWeight": 0.3
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
**How it works:**
|
|
124
|
+
1. Performs both keyword (FTS5) and semantic (vector) searches
|
|
125
|
+
2. Merges results with weighted scoring
|
|
126
|
+
3. Applies MMR reranking for diversity
|
|
127
|
+
4. Applies temporal decay boost
|
|
128
|
+
|
|
129
|
+
### Keyword-Only Search
|
|
130
|
+
|
|
131
|
+
For exact term matching without API calls:
|
|
132
|
+
|
|
133
|
+
```json
|
|
134
|
+
{
|
|
135
|
+
"agents": {
|
|
136
|
+
"defaults": {
|
|
137
|
+
"memorySearch": {
|
|
138
|
+
"query": {
|
|
139
|
+
"hybrid": {
|
|
140
|
+
"enabled": false
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
**Best for:**
|
|
150
|
+
- Offline operation
|
|
151
|
+
- Exact term matching
|
|
152
|
+
- Proper nouns and IDs
|
|
153
|
+
|
|
154
|
+
## Embedding Providers
|
|
155
|
+
|
|
156
|
+
### OpenAI (Recommended)
|
|
157
|
+
|
|
158
|
+
```json
|
|
159
|
+
{
|
|
160
|
+
"agents": {
|
|
161
|
+
"defaults": {
|
|
162
|
+
"memorySearch": {
|
|
163
|
+
"provider": "openai",
|
|
164
|
+
"remote": {
|
|
165
|
+
"baseUrl": "https://api.openai.com/v1",
|
|
166
|
+
"apiKey": "${OPENAI_API_KEY}"
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
### Ollama (Local)
|
|
175
|
+
|
|
176
|
+
```json
|
|
177
|
+
{
|
|
178
|
+
"agents": {
|
|
179
|
+
"defaults": {
|
|
180
|
+
"memorySearch": {
|
|
181
|
+
"provider": "ollama",
|
|
182
|
+
"remote": {
|
|
183
|
+
"baseUrl": "http://localhost:11434"
|
|
184
|
+
},
|
|
185
|
+
"local": {
|
|
186
|
+
"modelPath": "nomic-embed-text"
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
### Gemini
|
|
195
|
+
|
|
196
|
+
```json
|
|
197
|
+
{
|
|
198
|
+
"agents": {
|
|
199
|
+
"defaults": {
|
|
200
|
+
"memorySearch": {
|
|
201
|
+
"provider": "gemini",
|
|
202
|
+
"remote": {
|
|
203
|
+
"apiKey": "${GEMINI_API_KEY}"
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
## MMR (Maximal Marginal Relevance)
|
|
212
|
+
|
|
213
|
+
MMR ensures diverse results, avoiding redundancy:
|
|
214
|
+
|
|
215
|
+
```json
|
|
216
|
+
{
|
|
217
|
+
"agents": {
|
|
218
|
+
"defaults": {
|
|
219
|
+
"memorySearch": {
|
|
220
|
+
"query": {
|
|
221
|
+
"hybrid": {
|
|
222
|
+
"mmr": {
|
|
223
|
+
"enabled": true,
|
|
224
|
+
"lambda": 0.5
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
| Parameter | Description | Range |
|
|
235
|
+
|-----------|-------------|-------|
|
|
236
|
+
| `lambda` | Balance relevance vs diversity | 0-1 (0.5 = balanced) |
|
|
237
|
+
|
|
238
|
+
**Example:**
|
|
239
|
+
|
|
240
|
+
Without MMR:
|
|
241
|
+
```
|
|
242
|
+
1. "JavaScript arrays methods"
|
|
243
|
+
2. "JavaScript arrays tutorial"
|
|
244
|
+
3. "JavaScript arrays guide"
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
With MMR (λ=0.5):
|
|
248
|
+
```
|
|
249
|
+
1. "JavaScript arrays methods"
|
|
250
|
+
2. "Python list comprehensions"
|
|
251
|
+
3. "Rust vectors overview"
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
## Temporal Decay
|
|
255
|
+
|
|
256
|
+
Prioritize recent memories:
|
|
257
|
+
|
|
258
|
+
```json
|
|
259
|
+
{
|
|
260
|
+
"agents": {
|
|
261
|
+
"defaults": {
|
|
262
|
+
"memorySearch": {
|
|
263
|
+
"query": {
|
|
264
|
+
"hybrid": {
|
|
265
|
+
"temporalDecay": {
|
|
266
|
+
"enabled": true,
|
|
267
|
+
"halfLifeDays": 30
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
| Parameter | Description | Default |
|
|
278
|
+
|-----------|-------------|---------|
|
|
279
|
+
| `halfLifeDays` | Days for relevance to decay by 50% | 30 |
|
|
280
|
+
|
|
281
|
+
**Decay Formula:**
|
|
282
|
+
```
|
|
283
|
+
score = baseScore * (0.5 ^ (daysAgo / halfLifeDays))
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
## Memory Sources
|
|
287
|
+
|
|
288
|
+
### Default Memory
|
|
289
|
+
|
|
290
|
+
Files in the `memory/` directory are automatically indexed:
|
|
291
|
+
|
|
292
|
+
```
|
|
293
|
+
memory/
|
|
294
|
+
├── snippets/
|
|
295
|
+
│ └── javascript/
|
|
296
|
+
│ └── array-methods.md
|
|
297
|
+
├── docs/
|
|
298
|
+
│ └── architecture.md
|
|
299
|
+
└── decisions/
|
|
300
|
+
└── adr-001.md
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
### Extra Paths
|
|
304
|
+
|
|
305
|
+
Add additional paths to index:
|
|
306
|
+
|
|
307
|
+
```json
|
|
308
|
+
{
|
|
309
|
+
"agents": {
|
|
310
|
+
"defaults": {
|
|
311
|
+
"memorySearch": {
|
|
312
|
+
"extraPaths": [
|
|
313
|
+
"~/notes/**/*.md",
|
|
314
|
+
"docs/**/*.md"
|
|
315
|
+
]
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
### Session Memory
|
|
323
|
+
|
|
324
|
+
Recent conversation history can be included:
|
|
325
|
+
|
|
326
|
+
```json
|
|
327
|
+
{
|
|
328
|
+
"agents": {
|
|
329
|
+
"defaults": {
|
|
330
|
+
"memorySearch": {
|
|
331
|
+
"experimental": {
|
|
332
|
+
"sessionMemory": true
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
```
|
|
339
|
+
|
|
340
|
+
## Indexing
|
|
341
|
+
|
|
342
|
+
### Automatic Indexing
|
|
343
|
+
|
|
344
|
+
Memories are indexed automatically on:
|
|
345
|
+
- Gateway startup (if `sync.onSessionStart` is enabled)
|
|
346
|
+
- File changes in memory directories (if `sync.watch` is enabled)
|
|
347
|
+
- Before search (if `sync.onSearch` is enabled - lazy mode)
|
|
348
|
+
|
|
349
|
+
### Sync Configuration
|
|
350
|
+
|
|
351
|
+
```json
|
|
352
|
+
{
|
|
353
|
+
"agents": {
|
|
354
|
+
"defaults": {
|
|
355
|
+
"memorySearch": {
|
|
356
|
+
"sync": {
|
|
357
|
+
"onSessionStart": true,
|
|
358
|
+
"onSearch": false,
|
|
359
|
+
"watch": true,
|
|
360
|
+
"watchDebounceMs": 5000
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
```
|
|
367
|
+
|
|
368
|
+
### Session Sync
|
|
369
|
+
|
|
370
|
+
Control how session history is indexed:
|
|
371
|
+
|
|
372
|
+
```json
|
|
373
|
+
{
|
|
374
|
+
"agents": {
|
|
375
|
+
"defaults": {
|
|
376
|
+
"memorySearch": {
|
|
377
|
+
"sync": {
|
|
378
|
+
"sessions": {
|
|
379
|
+
"deltaBytes": 100000,
|
|
380
|
+
"deltaMessages": 10
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
}
|
|
387
|
+
```
|
|
388
|
+
|
|
389
|
+
## Storage
|
|
390
|
+
|
|
391
|
+
### Vector Index
|
|
392
|
+
|
|
393
|
+
SQLite with vector extension for embeddings:
|
|
394
|
+
|
|
395
|
+
```json
|
|
396
|
+
{
|
|
397
|
+
"agents": {
|
|
398
|
+
"defaults": {
|
|
399
|
+
"memorySearch": {
|
|
400
|
+
"store": {
|
|
401
|
+
"path": "~/.poolbot/memory.db",
|
|
402
|
+
"vector": {
|
|
403
|
+
"enabled": true,
|
|
404
|
+
"extensionPath": "~/.poolbot/vector.dylib"
|
|
405
|
+
}
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
```
|
|
412
|
+
|
|
413
|
+
### Caching
|
|
414
|
+
|
|
415
|
+
Cache embedding results to reduce API calls:
|
|
416
|
+
|
|
417
|
+
```json
|
|
418
|
+
{
|
|
419
|
+
"agents": {
|
|
420
|
+
"defaults": {
|
|
421
|
+
"memorySearch": {
|
|
422
|
+
"cache": {
|
|
423
|
+
"enabled": true,
|
|
424
|
+
"maxEntries": 10000
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
```
|
|
431
|
+
|
|
432
|
+
## Chunking
|
|
433
|
+
|
|
434
|
+
Control how documents are split for indexing:
|
|
435
|
+
|
|
436
|
+
```json
|
|
437
|
+
{
|
|
438
|
+
"agents": {
|
|
439
|
+
"defaults": {
|
|
440
|
+
"memorySearch": {
|
|
441
|
+
"chunking": {
|
|
442
|
+
"tokens": 512,
|
|
443
|
+
"overlap": 50
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
}
|
|
448
|
+
}
|
|
449
|
+
```
|
|
450
|
+
|
|
451
|
+
| Parameter | Description | Default |
|
|
452
|
+
|-----------|-------------|---------|
|
|
453
|
+
| `tokens` | Target chunk size in tokens | 512 |
|
|
454
|
+
| `overlap` | Overlap between chunks in tokens | 50 |
|
|
455
|
+
|
|
456
|
+
## QMD Integration
|
|
457
|
+
|
|
458
|
+
PoolBot can use QMD (Query My Documents) as an alternative backend:
|
|
459
|
+
|
|
460
|
+
```json
|
|
461
|
+
{
|
|
462
|
+
"memory": {
|
|
463
|
+
"backend": "qmd",
|
|
464
|
+
"qmd": {
|
|
465
|
+
"command": "qmd",
|
|
466
|
+
"includeDefaultMemory": true,
|
|
467
|
+
"paths": [
|
|
468
|
+
{ "path": "~/docs", "pattern": "**/*.md" }
|
|
469
|
+
],
|
|
470
|
+
"limits": {
|
|
471
|
+
"maxResults": 10,
|
|
472
|
+
"maxSnippetChars": 500,
|
|
473
|
+
"maxInjectedChars": 4000
|
|
474
|
+
}
|
|
475
|
+
}
|
|
476
|
+
}
|
|
477
|
+
}
|
|
478
|
+
```
|
|
479
|
+
|
|
480
|
+
## Best Practices
|
|
481
|
+
|
|
482
|
+
### Developer Knowledge Base
|
|
483
|
+
|
|
484
|
+
```json
|
|
485
|
+
{
|
|
486
|
+
"agents": {
|
|
487
|
+
"defaults": {
|
|
488
|
+
"memorySearch": {
|
|
489
|
+
"enabled": true,
|
|
490
|
+
"sources": ["memory"],
|
|
491
|
+
"extraPaths": [
|
|
492
|
+
"snippets/**/*.md",
|
|
493
|
+
"docs/**/*.md",
|
|
494
|
+
"decisions/**/*.md"
|
|
495
|
+
],
|
|
496
|
+
"query": {
|
|
497
|
+
"hybrid": {
|
|
498
|
+
"mmr": {
|
|
499
|
+
"enabled": true,
|
|
500
|
+
"lambda": 0.6
|
|
501
|
+
}
|
|
502
|
+
}
|
|
503
|
+
}
|
|
504
|
+
}
|
|
505
|
+
}
|
|
506
|
+
}
|
|
507
|
+
}
|
|
508
|
+
```
|
|
509
|
+
|
|
510
|
+
### Project-Specific Memory
|
|
511
|
+
|
|
512
|
+
```json
|
|
513
|
+
{
|
|
514
|
+
"agents": {
|
|
515
|
+
"list": [
|
|
516
|
+
{
|
|
517
|
+
"id": "project-alpha",
|
|
518
|
+
"memorySearch": {
|
|
519
|
+
"extraPaths": [
|
|
520
|
+
"agents/project-alpha/memory/**/*.md",
|
|
521
|
+
"projects/alpha/docs/**/*.md"
|
|
522
|
+
]
|
|
523
|
+
}
|
|
524
|
+
}
|
|
525
|
+
]
|
|
526
|
+
}
|
|
527
|
+
}
|
|
528
|
+
```
|
|
529
|
+
|
|
530
|
+
### Cost Optimization
|
|
531
|
+
|
|
532
|
+
Use local embeddings to reduce API costs:
|
|
533
|
+
|
|
534
|
+
```json
|
|
535
|
+
{
|
|
536
|
+
"agents": {
|
|
537
|
+
"defaults": {
|
|
538
|
+
"memorySearch": {
|
|
539
|
+
"provider": "ollama",
|
|
540
|
+
"fallback": "openai",
|
|
541
|
+
"cache": {
|
|
542
|
+
"enabled": true,
|
|
543
|
+
"maxEntries": 50000
|
|
544
|
+
}
|
|
545
|
+
}
|
|
546
|
+
}
|
|
547
|
+
}
|
|
548
|
+
}
|
|
549
|
+
```
|
|
550
|
+
|
|
551
|
+
## Troubleshooting
|
|
552
|
+
|
|
553
|
+
### Search Returns No Results
|
|
554
|
+
|
|
555
|
+
1. Verify memories exist in indexed paths
|
|
556
|
+
2. Check index is up to date (restart gateway or trigger sync)
|
|
557
|
+
3. Lower `minScore` threshold
|
|
558
|
+
4. Verify embedding provider is working
|
|
559
|
+
|
|
560
|
+
### Slow Search Performance
|
|
561
|
+
|
|
562
|
+
1. Enable embedding cache
|
|
563
|
+
2. Use keyword-only mode for simple queries
|
|
564
|
+
3. Reduce `candidateMultiplier`
|
|
565
|
+
4. Check vector extension is loaded
|
|
566
|
+
|
|
567
|
+
### High API Costs
|
|
568
|
+
|
|
569
|
+
1. Use local Ollama embeddings
|
|
570
|
+
2. Increase cache size
|
|
571
|
+
3. Enable batch processing
|
|
572
|
+
4. Use keyword-only mode for some queries
|
|
573
|
+
|
|
574
|
+
### Index Not Updating
|
|
575
|
+
|
|
576
|
+
1. Check `sync.watch` is enabled
|
|
577
|
+
2. Verify file permissions on memory paths
|
|
578
|
+
3. Check `watchDebounceMs` is not too high
|
|
579
|
+
4. Manually trigger reindex by restarting gateway
|
|
580
|
+
|
|
581
|
+
## See Also
|
|
582
|
+
|
|
583
|
+
- [Memory Configuration](../concepts/memory.md)
|
|
584
|
+
- [QMD Integration](../integrations/qmd.md)
|
|
585
|
+
- [Agent Configuration](../agents/configuration.md)
|