claude-self-reflect 1.2.0 → 1.3.3
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/config/claude-desktop-config.json +1 -1
- package/dist/index.js +140 -8
- package/dist/index.js.map +1 -1
- package/package.json +6 -5
- package/scripts/setup-wizard.js +78 -9
- package/src/index.ts +155 -8
- package/agents/reflection.md +0 -104
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"mcpServers": {
|
|
3
3
|
"self-reflection": {
|
|
4
4
|
"command": "node",
|
|
5
|
-
"args": ["/Users/ramakrishnanannaswamy/
|
|
5
|
+
"args": ["/Users/ramakrishnanannaswamy/claude-self-reflect/qdrant-mcp-stack/claude-self-reflection/dist/index.js"],
|
|
6
6
|
"env": {
|
|
7
7
|
"QDRANT_URL": "http://localhost:6333",
|
|
8
8
|
"VOYAGE_KEY": "pa-wdTYGObaxhs-XFKX2r7WCczRwEVNb9eYMTSO3yrQhZI"
|
package/dist/index.js
CHANGED
|
@@ -5,6 +5,14 @@ import { CallToolRequestSchema, ErrorCode, ListToolsRequestSchema, McpError, } f
|
|
|
5
5
|
import { QdrantClient } from '@qdrant/js-client-rest';
|
|
6
6
|
import { createEmbeddingService } from './embeddings.js';
|
|
7
7
|
import { ProjectIsolationManager } from './project-isolation.js';
|
|
8
|
+
import * as dotenv from 'dotenv';
|
|
9
|
+
import * as path from 'path';
|
|
10
|
+
import { fileURLToPath } from 'url';
|
|
11
|
+
// Get __dirname equivalent for ES modules
|
|
12
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
13
|
+
const __dirname = path.dirname(__filename);
|
|
14
|
+
// Load environment variables from parent directory
|
|
15
|
+
dotenv.config({ path: path.join(__dirname, '../../.env') });
|
|
8
16
|
const QDRANT_URL = process.env.QDRANT_URL || 'http://localhost:6333';
|
|
9
17
|
const COLLECTION_NAME = process.env.COLLECTION_NAME || 'conversations';
|
|
10
18
|
const OPENAI_API_KEY = process.env.OPENAI_API_KEY;
|
|
@@ -12,6 +20,14 @@ const VOYAGE_API_KEY = process.env.VOYAGE_KEY || process.env['VOYAGE_KEY-2'];
|
|
|
12
20
|
const PREFER_LOCAL_EMBEDDINGS = process.env.PREFER_LOCAL_EMBEDDINGS === 'true';
|
|
13
21
|
const ISOLATION_MODE = process.env.ISOLATION_MODE || 'hybrid';
|
|
14
22
|
const ALLOW_CROSS_PROJECT = process.env.ALLOW_CROSS_PROJECT === 'true';
|
|
23
|
+
const ENABLE_MEMORY_DECAY = process.env.ENABLE_MEMORY_DECAY === 'true';
|
|
24
|
+
const DECAY_WEIGHT = parseFloat(process.env.DECAY_WEIGHT || '0.3');
|
|
25
|
+
const DECAY_SCALE_DAYS = parseFloat(process.env.DECAY_SCALE_DAYS || '90');
|
|
26
|
+
// Debug: Log environment variables on startup
|
|
27
|
+
console.error('🚀 MCP Server starting with environment:');
|
|
28
|
+
console.error(` - ENABLE_MEMORY_DECAY: ${ENABLE_MEMORY_DECAY} (from env: ${process.env.ENABLE_MEMORY_DECAY})`);
|
|
29
|
+
console.error(` - DECAY_WEIGHT: ${DECAY_WEIGHT} (from env: ${process.env.DECAY_WEIGHT})`);
|
|
30
|
+
console.error(` - DECAY_SCALE_DAYS: ${DECAY_SCALE_DAYS} (from env: ${process.env.DECAY_SCALE_DAYS})`);
|
|
15
31
|
class SelfReflectionServer {
|
|
16
32
|
server;
|
|
17
33
|
qdrantClient;
|
|
@@ -89,6 +105,10 @@ class SelfReflectionServer {
|
|
|
89
105
|
description: 'Minimum similarity score (0-1, default: 0.7)',
|
|
90
106
|
default: 0.7,
|
|
91
107
|
},
|
|
108
|
+
useDecay: {
|
|
109
|
+
type: 'boolean',
|
|
110
|
+
description: 'Apply time-based decay to prioritize recent memories (default: uses environment setting)',
|
|
111
|
+
},
|
|
92
112
|
},
|
|
93
113
|
required: ['query'],
|
|
94
114
|
},
|
|
@@ -137,7 +157,24 @@ class SelfReflectionServer {
|
|
|
137
157
|
}
|
|
138
158
|
}
|
|
139
159
|
async handleReflectOnPast(args) {
|
|
140
|
-
const { query, limit = 5, project, minScore = 0.7, crossProject = false } = args;
|
|
160
|
+
const { query, limit = 5, project, minScore = 0.7, crossProject = false, useDecay } = args;
|
|
161
|
+
const shouldUseDecay = useDecay !== undefined ? useDecay : ENABLE_MEMORY_DECAY;
|
|
162
|
+
// Log debug info but don't return early
|
|
163
|
+
console.error(`🔍 DEBUG: MCP handleReflectOnPast called!
|
|
164
|
+
- query: "${query}"
|
|
165
|
+
- useDecay: ${useDecay} (type: ${typeof useDecay})
|
|
166
|
+
- shouldUseDecay: ${shouldUseDecay}
|
|
167
|
+
- ENABLE_MEMORY_DECAY: ${ENABLE_MEMORY_DECAY}
|
|
168
|
+
- DECAY_WEIGHT: ${DECAY_WEIGHT}
|
|
169
|
+
- DECAY_SCALE_DAYS: ${DECAY_SCALE_DAYS}
|
|
170
|
+
- minScore: ${minScore}`);
|
|
171
|
+
// Extra debug for decay path
|
|
172
|
+
if (shouldUseDecay) {
|
|
173
|
+
console.error(`🔄 DECAY PATH SHOULD BE TAKEN - shouldUseDecay is true`);
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
console.error(`❌ DECAY PATH NOT TAKEN - shouldUseDecay is false`);
|
|
177
|
+
}
|
|
141
178
|
try {
|
|
142
179
|
// Initialize if not already done
|
|
143
180
|
if (!this.embeddingService) {
|
|
@@ -162,15 +199,97 @@ class SelfReflectionServer {
|
|
|
162
199
|
};
|
|
163
200
|
}
|
|
164
201
|
console.error(`Searching across ${voyageCollections.length} Voyage collections: ${voyageCollections.slice(0, 3).join(', ')}...`);
|
|
202
|
+
if (voyageCollections.length === 0) {
|
|
203
|
+
console.error(`⚠️ WARNING: No Voyage collections found!`);
|
|
204
|
+
return {
|
|
205
|
+
content: [{
|
|
206
|
+
type: 'text',
|
|
207
|
+
text: 'No conversation collections found. Please import conversations first.'
|
|
208
|
+
}]
|
|
209
|
+
};
|
|
210
|
+
}
|
|
165
211
|
// Search across multiple collections
|
|
166
212
|
const searchPromises = voyageCollections.map(async (collectionName) => {
|
|
167
213
|
try {
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
214
|
+
let searchResponse;
|
|
215
|
+
if (shouldUseDecay) {
|
|
216
|
+
console.error(`🔄 DECAY MODE ACTIVE for collection ${collectionName}`);
|
|
217
|
+
console.error(` - minScore parameter: ${minScore} (will be ignored for initial search)`);
|
|
218
|
+
console.error(` - DECAY_WEIGHT: ${DECAY_WEIGHT}`);
|
|
219
|
+
console.error(` - DECAY_SCALE_DAYS: ${DECAY_SCALE_DAYS}`);
|
|
220
|
+
// IMPORTANT: No score_threshold for decay mode - we need all results to apply decay
|
|
221
|
+
searchResponse = await this.qdrantClient.search(collectionName, {
|
|
222
|
+
vector: queryEmbedding,
|
|
223
|
+
limit: Math.ceil(limit * 3), // Get more candidates for decay filtering
|
|
224
|
+
// NO score_threshold - we'll filter after decay is applied
|
|
225
|
+
with_payload: true,
|
|
226
|
+
});
|
|
227
|
+
console.error(` - Initial results from ${collectionName}: ${searchResponse.length} items`);
|
|
228
|
+
if (searchResponse.length > 0) {
|
|
229
|
+
console.error(` - Score range: ${searchResponse[searchResponse.length - 1].score.toFixed(3)} to ${searchResponse[0].score.toFixed(3)}`);
|
|
230
|
+
}
|
|
231
|
+
// Apply decay scoring with proper formula
|
|
232
|
+
const now = Date.now();
|
|
233
|
+
const scaleMs = DECAY_SCALE_DAYS * 24 * 60 * 60 * 1000;
|
|
234
|
+
try {
|
|
235
|
+
searchResponse = searchResponse.map((point, index) => {
|
|
236
|
+
let ageMs = 0;
|
|
237
|
+
let originalScore = point.score;
|
|
238
|
+
try {
|
|
239
|
+
if (point.payload?.timestamp) {
|
|
240
|
+
const timestamp = new Date(point.payload.timestamp).getTime();
|
|
241
|
+
if (!isNaN(timestamp)) {
|
|
242
|
+
ageMs = now - timestamp;
|
|
243
|
+
}
|
|
244
|
+
else {
|
|
245
|
+
console.error(` - Invalid timestamp for point ${point.id}: ${point.payload.timestamp}`);
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
// Calculate exponential decay factor (newer = higher factor)
|
|
249
|
+
const decayFactor = Math.exp(-ageMs / scaleMs);
|
|
250
|
+
// Apply decay formula: base_score + decay_weight * decay_factor
|
|
251
|
+
const adjustedScore = originalScore + (DECAY_WEIGHT * decayFactor);
|
|
252
|
+
if (index < 3) { // Log first 3 items for debugging
|
|
253
|
+
console.error(` Decay calculation for item ${index + 1}:`);
|
|
254
|
+
console.error(` - timestamp: ${point.payload?.timestamp || 'missing'}`);
|
|
255
|
+
console.error(` - age: ${(ageMs / 86400000).toFixed(1)} days`);
|
|
256
|
+
console.error(` - originalScore: ${originalScore.toFixed(3)}`);
|
|
257
|
+
console.error(` - decayFactor: ${decayFactor.toFixed(4)}`);
|
|
258
|
+
console.error(` - adjustedScore: ${adjustedScore.toFixed(3)} (boost: +${(adjustedScore - originalScore).toFixed(3)})`);
|
|
259
|
+
}
|
|
260
|
+
return {
|
|
261
|
+
...point,
|
|
262
|
+
score: adjustedScore
|
|
263
|
+
};
|
|
264
|
+
}
|
|
265
|
+
catch (decayError) {
|
|
266
|
+
console.error(` Error calculating decay for point ${point.id}:`, decayError);
|
|
267
|
+
// Return original point with original score on error
|
|
268
|
+
return point;
|
|
269
|
+
}
|
|
270
|
+
});
|
|
271
|
+
}
|
|
272
|
+
catch (mapError) {
|
|
273
|
+
console.error(` Fatal error during decay calculation:`, mapError);
|
|
274
|
+
// Fall back to original search results if decay fails completely
|
|
275
|
+
searchResponse = searchResponse;
|
|
276
|
+
}
|
|
277
|
+
// Apply filtering and sorting
|
|
278
|
+
searchResponse = searchResponse
|
|
279
|
+
.filter(point => point.score >= minScore) // Apply minScore filter AFTER decay
|
|
280
|
+
.sort((a, b) => b.score - a.score)
|
|
281
|
+
.slice(0, limit);
|
|
282
|
+
console.error(` - After decay and filtering (>= ${minScore}): ${searchResponse.length} results`);
|
|
283
|
+
}
|
|
284
|
+
else {
|
|
285
|
+
// Standard search without decay
|
|
286
|
+
searchResponse = await this.qdrantClient.search(collectionName, {
|
|
287
|
+
vector: queryEmbedding,
|
|
288
|
+
limit: Math.ceil(limit * 1.5), // Get extra results per collection
|
|
289
|
+
score_threshold: minScore,
|
|
290
|
+
with_payload: true,
|
|
291
|
+
});
|
|
292
|
+
}
|
|
174
293
|
if (searchResponse.length > 0) {
|
|
175
294
|
console.error(`Collection ${collectionName}: Found ${searchResponse.length} results`);
|
|
176
295
|
}
|
|
@@ -239,11 +358,24 @@ class SelfReflectionServer {
|
|
|
239
358
|
.slice(0, limit);
|
|
240
359
|
}
|
|
241
360
|
if (results.length === 0) {
|
|
361
|
+
// For debugging, let's check what collections we have and what the search is actually doing
|
|
362
|
+
const voyageCollections = await this.getVoyageCollections();
|
|
242
363
|
return {
|
|
243
364
|
content: [
|
|
244
365
|
{
|
|
245
366
|
type: 'text',
|
|
246
|
-
text:
|
|
367
|
+
text: `🔍 DECAY DEBUG: No results for "${query}"
|
|
368
|
+
|
|
369
|
+
[DEBUG INFO FROM CLAUDE SELF REFLECT MCP]
|
|
370
|
+
- useDecay param: ${useDecay} (type: ${typeof useDecay})
|
|
371
|
+
- shouldUseDecay: ${shouldUseDecay}
|
|
372
|
+
- minScore: ${minScore}
|
|
373
|
+
- embeddingService exists: ${!!this.embeddingService}
|
|
374
|
+
- ENABLE_MEMORY_DECAY env: ${ENABLE_MEMORY_DECAY}
|
|
375
|
+
- DECAY_WEIGHT env: ${DECAY_WEIGHT}
|
|
376
|
+
- collections found: ${voyageCollections.length}
|
|
377
|
+
- first 3: ${voyageCollections.slice(0, 3).join(', ')}
|
|
378
|
+
- MODE: ${shouldUseDecay ? '🔄 DECAY ACTIVE' : '📊 STANDARD SEARCH'}`,
|
|
247
379
|
},
|
|
248
380
|
],
|
|
249
381
|
};
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "claude-self-reflect",
|
|
3
|
-
"version": "1.
|
|
4
|
-
"description": "Give Claude perfect memory of all your conversations - Semantic search across your entire Claude
|
|
3
|
+
"version": "1.3.3",
|
|
4
|
+
"description": "Give Claude perfect memory of all your conversations - Semantic search across your entire Claude Code history",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"claude",
|
|
7
7
|
"mcp",
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"qdrant",
|
|
12
12
|
"vector-search",
|
|
13
13
|
"ai-memory",
|
|
14
|
-
"claude-
|
|
14
|
+
"claude-code"
|
|
15
15
|
],
|
|
16
16
|
"homepage": "https://github.com/ramakay/claude-self-reflect#readme",
|
|
17
17
|
"bugs": {
|
|
@@ -43,19 +43,20 @@
|
|
|
43
43
|
"build": "tsc",
|
|
44
44
|
"start": "node dist/index.js",
|
|
45
45
|
"dev": "tsx src/index.ts",
|
|
46
|
-
"test": "npm run test:
|
|
46
|
+
"test": "npm run test:integration",
|
|
47
47
|
"test:ci": "echo 'Integration tests require Qdrant - skipping in CI'",
|
|
48
48
|
"test:unit": "echo 'No unit tests yet'",
|
|
49
49
|
"test:integration": "tsx test/search-quality.test.ts",
|
|
50
50
|
"lint": "tsc --noEmit",
|
|
51
51
|
"postinstall": "node scripts/install-agent.js",
|
|
52
|
-
"prepublishOnly": "npm run build && npm run test",
|
|
52
|
+
"prepublishOnly": "npm run build && npm run test:ci",
|
|
53
53
|
"version": "git add -A src",
|
|
54
54
|
"postversion": "git push && git push --tags"
|
|
55
55
|
},
|
|
56
56
|
"dependencies": {
|
|
57
57
|
"@modelcontextprotocol/sdk": "^0.5.0",
|
|
58
58
|
"@qdrant/js-client-rest": "^1.7.0",
|
|
59
|
+
"dotenv": "^17.2.1",
|
|
59
60
|
"node-fetch": "^3.3.2"
|
|
60
61
|
},
|
|
61
62
|
"devDependencies": {
|
package/scripts/setup-wizard.js
CHANGED
|
@@ -322,6 +322,55 @@ async function setupPython() {
|
|
|
322
322
|
}
|
|
323
323
|
}
|
|
324
324
|
|
|
325
|
+
async function configureMemoryDecay() {
|
|
326
|
+
header('Configure Memory Decay (Optional)');
|
|
327
|
+
|
|
328
|
+
console.log('Memory Decay helps prioritize recent conversations over older ones.\n');
|
|
329
|
+
console.log('When enabled, search results will favor more recent memories while');
|
|
330
|
+
console.log('still including relevant older content.\n');
|
|
331
|
+
|
|
332
|
+
const enable = await question('Enable memory decay? (y/n) [default: n]: ');
|
|
333
|
+
|
|
334
|
+
if (enable.toLowerCase() === 'y') {
|
|
335
|
+
console.log('\nDecay Configuration:');
|
|
336
|
+
console.log('1. Light decay (30 days) - Minimal recency bias');
|
|
337
|
+
console.log('2. Medium decay (90 days) - Balanced approach (Recommended)');
|
|
338
|
+
console.log('3. Strong decay (180 days) - Strong recency preference');
|
|
339
|
+
console.log('4. Custom configuration\n');
|
|
340
|
+
|
|
341
|
+
const choice = await question('Choose decay configuration (1-4) [default: 2]: ') || '2';
|
|
342
|
+
|
|
343
|
+
let weight = 0.3;
|
|
344
|
+
let scaleDays = 90;
|
|
345
|
+
|
|
346
|
+
switch (choice) {
|
|
347
|
+
case '1':
|
|
348
|
+
weight = 0.1;
|
|
349
|
+
scaleDays = 30;
|
|
350
|
+
break;
|
|
351
|
+
case '2':
|
|
352
|
+
weight = 0.3;
|
|
353
|
+
scaleDays = 90;
|
|
354
|
+
break;
|
|
355
|
+
case '3':
|
|
356
|
+
weight = 0.5;
|
|
357
|
+
scaleDays = 180;
|
|
358
|
+
break;
|
|
359
|
+
case '4':
|
|
360
|
+
const customWeight = await question('Decay weight (0.1-1.0) [default: 0.3]: ');
|
|
361
|
+
const customScale = await question('Decay scale in days [default: 90]: ');
|
|
362
|
+
weight = parseFloat(customWeight) || 0.3;
|
|
363
|
+
scaleDays = parseInt(customScale) || 90;
|
|
364
|
+
break;
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
success(`Memory decay configured: weight=${weight}, scale=${scaleDays} days`);
|
|
368
|
+
return { enabled: true, weight, scaleDays };
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
return { enabled: false };
|
|
372
|
+
}
|
|
373
|
+
|
|
325
374
|
async function saveConfiguration(config) {
|
|
326
375
|
const envPath = join(homedir(), '.claude-self-reflect', '.env');
|
|
327
376
|
const envDir = dirname(envPath);
|
|
@@ -345,6 +394,14 @@ async function saveConfiguration(config) {
|
|
|
345
394
|
|
|
346
395
|
envContent += 'QDRANT_URL=http://localhost:6333\n';
|
|
347
396
|
|
|
397
|
+
// Memory decay configuration
|
|
398
|
+
envContent += '\n# Memory Decay Configuration\n';
|
|
399
|
+
envContent += `ENABLE_MEMORY_DECAY=${config.memoryDecay?.enabled ? 'true' : 'false'}\n`;
|
|
400
|
+
if (config.memoryDecay?.enabled) {
|
|
401
|
+
envContent += `DECAY_WEIGHT=${config.memoryDecay.weight}\n`;
|
|
402
|
+
envContent += `DECAY_SCALE_DAYS=${config.memoryDecay.scaleDays}\n`;
|
|
403
|
+
}
|
|
404
|
+
|
|
348
405
|
writeFileSync(envPath, envContent);
|
|
349
406
|
success(`Configuration saved to ${envPath}`);
|
|
350
407
|
}
|
|
@@ -394,19 +451,28 @@ async function runImport(pythonConfig, provider, apiKey) {
|
|
|
394
451
|
});
|
|
395
452
|
}
|
|
396
453
|
|
|
397
|
-
async function setupClaudeDesktop() {
|
|
454
|
+
async function setupClaudeDesktop(memoryDecayConfig) {
|
|
398
455
|
header('Configure Claude Desktop (Optional)');
|
|
399
456
|
|
|
400
457
|
console.log('To use this with Claude Desktop, add the following to your config:\n');
|
|
401
458
|
|
|
459
|
+
const env = {
|
|
460
|
+
QDRANT_URL: 'http://localhost:6333'
|
|
461
|
+
};
|
|
462
|
+
|
|
463
|
+
// Add memory decay configuration if enabled
|
|
464
|
+
if (memoryDecayConfig?.enabled) {
|
|
465
|
+
env.ENABLE_MEMORY_DECAY = 'true';
|
|
466
|
+
env.DECAY_WEIGHT = memoryDecayConfig.weight.toString();
|
|
467
|
+
env.DECAY_SCALE_DAYS = memoryDecayConfig.scaleDays.toString();
|
|
468
|
+
}
|
|
469
|
+
|
|
402
470
|
const config = {
|
|
403
471
|
mcpServers: {
|
|
404
472
|
'claude-self-reflect': {
|
|
405
473
|
command: 'npx',
|
|
406
474
|
args: ['claude-self-reflect'],
|
|
407
|
-
env
|
|
408
|
-
QDRANT_URL: 'http://localhost:6333'
|
|
409
|
-
}
|
|
475
|
+
env
|
|
410
476
|
}
|
|
411
477
|
}
|
|
412
478
|
};
|
|
@@ -485,10 +551,13 @@ async function main() {
|
|
|
485
551
|
process.exit(1);
|
|
486
552
|
}
|
|
487
553
|
|
|
488
|
-
// Step 5:
|
|
489
|
-
|
|
554
|
+
// Step 5: Configure memory decay
|
|
555
|
+
const memoryDecay = await configureMemoryDecay();
|
|
556
|
+
|
|
557
|
+
// Step 6: Save configuration
|
|
558
|
+
await saveConfiguration({ provider, apiKey, memoryDecay });
|
|
490
559
|
|
|
491
|
-
// Step
|
|
560
|
+
// Step 7: Run import
|
|
492
561
|
if (apiKey || provider === 'local') {
|
|
493
562
|
const runImportNow = await question('\nWould you like to import your conversation history now? (y/n): ');
|
|
494
563
|
if (runImportNow.toLowerCase() === 'y') {
|
|
@@ -496,8 +565,8 @@ async function main() {
|
|
|
496
565
|
}
|
|
497
566
|
}
|
|
498
567
|
|
|
499
|
-
// Step
|
|
500
|
-
await setupClaudeDesktop();
|
|
568
|
+
// Step 8: Configure Claude Desktop
|
|
569
|
+
await setupClaudeDesktop(memoryDecay);
|
|
501
570
|
|
|
502
571
|
// Done!
|
|
503
572
|
header('✨ Setup Complete!');
|
package/src/index.ts
CHANGED
|
@@ -10,6 +10,16 @@ import {
|
|
|
10
10
|
import { QdrantClient } from '@qdrant/js-client-rest';
|
|
11
11
|
import { createEmbeddingService, detectEmbeddingModel, EmbeddingService } from './embeddings.js';
|
|
12
12
|
import { ProjectIsolationManager, ProjectIsolationConfig, DEFAULT_ISOLATION_CONFIG } from './project-isolation.js';
|
|
13
|
+
import * as dotenv from 'dotenv';
|
|
14
|
+
import * as path from 'path';
|
|
15
|
+
import { fileURLToPath } from 'url';
|
|
16
|
+
|
|
17
|
+
// Get __dirname equivalent for ES modules
|
|
18
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
19
|
+
const __dirname = path.dirname(__filename);
|
|
20
|
+
|
|
21
|
+
// Load environment variables from parent directory
|
|
22
|
+
dotenv.config({ path: path.join(__dirname, '../../.env') });
|
|
13
23
|
|
|
14
24
|
const QDRANT_URL = process.env.QDRANT_URL || 'http://localhost:6333';
|
|
15
25
|
const COLLECTION_NAME = process.env.COLLECTION_NAME || 'conversations';
|
|
@@ -18,6 +28,15 @@ const VOYAGE_API_KEY = process.env.VOYAGE_KEY || process.env['VOYAGE_KEY-2'];
|
|
|
18
28
|
const PREFER_LOCAL_EMBEDDINGS = process.env.PREFER_LOCAL_EMBEDDINGS === 'true';
|
|
19
29
|
const ISOLATION_MODE = process.env.ISOLATION_MODE || 'hybrid';
|
|
20
30
|
const ALLOW_CROSS_PROJECT = process.env.ALLOW_CROSS_PROJECT === 'true';
|
|
31
|
+
const ENABLE_MEMORY_DECAY = process.env.ENABLE_MEMORY_DECAY === 'true';
|
|
32
|
+
const DECAY_WEIGHT = parseFloat(process.env.DECAY_WEIGHT || '0.3');
|
|
33
|
+
const DECAY_SCALE_DAYS = parseFloat(process.env.DECAY_SCALE_DAYS || '90');
|
|
34
|
+
|
|
35
|
+
// Debug: Log environment variables on startup
|
|
36
|
+
console.error('🚀 MCP Server starting with environment:');
|
|
37
|
+
console.error(` - ENABLE_MEMORY_DECAY: ${ENABLE_MEMORY_DECAY} (from env: ${process.env.ENABLE_MEMORY_DECAY})`);
|
|
38
|
+
console.error(` - DECAY_WEIGHT: ${DECAY_WEIGHT} (from env: ${process.env.DECAY_WEIGHT})`);
|
|
39
|
+
console.error(` - DECAY_SCALE_DAYS: ${DECAY_SCALE_DAYS} (from env: ${process.env.DECAY_SCALE_DAYS})`);
|
|
21
40
|
|
|
22
41
|
interface SearchResult {
|
|
23
42
|
id: string;
|
|
@@ -115,6 +134,10 @@ class SelfReflectionServer {
|
|
|
115
134
|
description: 'Minimum similarity score (0-1, default: 0.7)',
|
|
116
135
|
default: 0.7,
|
|
117
136
|
},
|
|
137
|
+
useDecay: {
|
|
138
|
+
type: 'boolean',
|
|
139
|
+
description: 'Apply time-based decay to prioritize recent memories (default: uses environment setting)',
|
|
140
|
+
},
|
|
118
141
|
},
|
|
119
142
|
required: ['query'],
|
|
120
143
|
},
|
|
@@ -168,7 +191,25 @@ class SelfReflectionServer {
|
|
|
168
191
|
}
|
|
169
192
|
|
|
170
193
|
private async handleReflectOnPast(args: any) {
|
|
171
|
-
const { query, limit = 5, project, minScore = 0.7, crossProject = false } = args;
|
|
194
|
+
const { query, limit = 5, project, minScore = 0.7, crossProject = false, useDecay } = args;
|
|
195
|
+
const shouldUseDecay = useDecay !== undefined ? useDecay : ENABLE_MEMORY_DECAY;
|
|
196
|
+
|
|
197
|
+
// Log debug info but don't return early
|
|
198
|
+
console.error(`🔍 DEBUG: MCP handleReflectOnPast called!
|
|
199
|
+
- query: "${query}"
|
|
200
|
+
- useDecay: ${useDecay} (type: ${typeof useDecay})
|
|
201
|
+
- shouldUseDecay: ${shouldUseDecay}
|
|
202
|
+
- ENABLE_MEMORY_DECAY: ${ENABLE_MEMORY_DECAY}
|
|
203
|
+
- DECAY_WEIGHT: ${DECAY_WEIGHT}
|
|
204
|
+
- DECAY_SCALE_DAYS: ${DECAY_SCALE_DAYS}
|
|
205
|
+
- minScore: ${minScore}`);
|
|
206
|
+
|
|
207
|
+
// Extra debug for decay path
|
|
208
|
+
if (shouldUseDecay) {
|
|
209
|
+
console.error(`🔄 DECAY PATH SHOULD BE TAKEN - shouldUseDecay is true`);
|
|
210
|
+
} else {
|
|
211
|
+
console.error(`❌ DECAY PATH NOT TAKEN - shouldUseDecay is false`);
|
|
212
|
+
}
|
|
172
213
|
|
|
173
214
|
try {
|
|
174
215
|
// Initialize if not already done
|
|
@@ -199,16 +240,109 @@ class SelfReflectionServer {
|
|
|
199
240
|
}
|
|
200
241
|
|
|
201
242
|
console.error(`Searching across ${voyageCollections.length} Voyage collections: ${voyageCollections.slice(0, 3).join(', ')}...`);
|
|
243
|
+
|
|
244
|
+
if (voyageCollections.length === 0) {
|
|
245
|
+
console.error(`⚠️ WARNING: No Voyage collections found!`);
|
|
246
|
+
return {
|
|
247
|
+
content: [{
|
|
248
|
+
type: 'text',
|
|
249
|
+
text: 'No conversation collections found. Please import conversations first.'
|
|
250
|
+
}]
|
|
251
|
+
};
|
|
252
|
+
}
|
|
253
|
+
|
|
202
254
|
|
|
203
255
|
// Search across multiple collections
|
|
204
256
|
const searchPromises = voyageCollections.map(async (collectionName) => {
|
|
205
257
|
try {
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
258
|
+
let searchResponse;
|
|
259
|
+
|
|
260
|
+
if (shouldUseDecay) {
|
|
261
|
+
console.error(`🔄 DECAY MODE ACTIVE for collection ${collectionName}`);
|
|
262
|
+
console.error(` - minScore parameter: ${minScore} (will be ignored for initial search)`);
|
|
263
|
+
console.error(` - DECAY_WEIGHT: ${DECAY_WEIGHT}`);
|
|
264
|
+
console.error(` - DECAY_SCALE_DAYS: ${DECAY_SCALE_DAYS}`);
|
|
265
|
+
|
|
266
|
+
// IMPORTANT: No score_threshold for decay mode - we need all results to apply decay
|
|
267
|
+
searchResponse = await this.qdrantClient.search(collectionName, {
|
|
268
|
+
vector: queryEmbedding,
|
|
269
|
+
limit: Math.ceil(limit * 3), // Get more candidates for decay filtering
|
|
270
|
+
// NO score_threshold - we'll filter after decay is applied
|
|
271
|
+
with_payload: true,
|
|
272
|
+
});
|
|
273
|
+
|
|
274
|
+
console.error(` - Initial results from ${collectionName}: ${searchResponse.length} items`);
|
|
275
|
+
if (searchResponse.length > 0) {
|
|
276
|
+
console.error(` - Score range: ${searchResponse[searchResponse.length - 1].score.toFixed(3)} to ${searchResponse[0].score.toFixed(3)}`);
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
// Apply decay scoring with proper formula
|
|
280
|
+
const now = Date.now();
|
|
281
|
+
const scaleMs = DECAY_SCALE_DAYS * 24 * 60 * 60 * 1000;
|
|
282
|
+
|
|
283
|
+
try {
|
|
284
|
+
searchResponse = searchResponse.map((point: any, index: number) => {
|
|
285
|
+
let ageMs = 0;
|
|
286
|
+
let originalScore = point.score;
|
|
287
|
+
|
|
288
|
+
try {
|
|
289
|
+
if (point.payload?.timestamp) {
|
|
290
|
+
const timestamp = new Date(point.payload.timestamp as string).getTime();
|
|
291
|
+
if (!isNaN(timestamp)) {
|
|
292
|
+
ageMs = now - timestamp;
|
|
293
|
+
} else {
|
|
294
|
+
console.error(` - Invalid timestamp for point ${point.id}: ${point.payload.timestamp}`);
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
// Calculate exponential decay factor (newer = higher factor)
|
|
299
|
+
const decayFactor = Math.exp(-ageMs / scaleMs);
|
|
300
|
+
|
|
301
|
+
// Apply decay formula: base_score + decay_weight * decay_factor
|
|
302
|
+
const adjustedScore = originalScore + (DECAY_WEIGHT * decayFactor);
|
|
303
|
+
|
|
304
|
+
if (index < 3) { // Log first 3 items for debugging
|
|
305
|
+
console.error(` Decay calculation for item ${index + 1}:`);
|
|
306
|
+
console.error(` - timestamp: ${point.payload?.timestamp || 'missing'}`);
|
|
307
|
+
console.error(` - age: ${(ageMs / 86400000).toFixed(1)} days`);
|
|
308
|
+
console.error(` - originalScore: ${originalScore.toFixed(3)}`);
|
|
309
|
+
console.error(` - decayFactor: ${decayFactor.toFixed(4)}`);
|
|
310
|
+
console.error(` - adjustedScore: ${adjustedScore.toFixed(3)} (boost: +${(adjustedScore - originalScore).toFixed(3)})`);
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
return {
|
|
314
|
+
...point,
|
|
315
|
+
score: adjustedScore
|
|
316
|
+
};
|
|
317
|
+
} catch (decayError) {
|
|
318
|
+
console.error(` Error calculating decay for point ${point.id}:`, decayError);
|
|
319
|
+
// Return original point with original score on error
|
|
320
|
+
return point;
|
|
321
|
+
}
|
|
322
|
+
});
|
|
323
|
+
} catch (mapError) {
|
|
324
|
+
console.error(` Fatal error during decay calculation:`, mapError);
|
|
325
|
+
// Fall back to original search results if decay fails completely
|
|
326
|
+
searchResponse = searchResponse;
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
// Apply filtering and sorting
|
|
330
|
+
searchResponse = searchResponse
|
|
331
|
+
.filter(point => point.score >= minScore) // Apply minScore filter AFTER decay
|
|
332
|
+
.sort((a: any, b: any) => b.score - a.score)
|
|
333
|
+
.slice(0, limit);
|
|
334
|
+
|
|
335
|
+
console.error(` - After decay and filtering (>= ${minScore}): ${searchResponse.length} results`);
|
|
336
|
+
|
|
337
|
+
} else {
|
|
338
|
+
// Standard search without decay
|
|
339
|
+
searchResponse = await this.qdrantClient.search(collectionName, {
|
|
340
|
+
vector: queryEmbedding,
|
|
341
|
+
limit: Math.ceil(limit * 1.5), // Get extra results per collection
|
|
342
|
+
score_threshold: minScore,
|
|
343
|
+
with_payload: true,
|
|
344
|
+
});
|
|
345
|
+
}
|
|
212
346
|
|
|
213
347
|
if (searchResponse.length > 0) {
|
|
214
348
|
console.error(`Collection ${collectionName}: Found ${searchResponse.length} results`);
|
|
@@ -285,11 +419,24 @@ class SelfReflectionServer {
|
|
|
285
419
|
}
|
|
286
420
|
|
|
287
421
|
if (results.length === 0) {
|
|
422
|
+
// For debugging, let's check what collections we have and what the search is actually doing
|
|
423
|
+
const voyageCollections = await this.getVoyageCollections();
|
|
288
424
|
return {
|
|
289
425
|
content: [
|
|
290
426
|
{
|
|
291
427
|
type: 'text',
|
|
292
|
-
text:
|
|
428
|
+
text: `🔍 DECAY DEBUG: No results for "${query}"
|
|
429
|
+
|
|
430
|
+
[DEBUG INFO FROM CLAUDE SELF REFLECT MCP]
|
|
431
|
+
- useDecay param: ${useDecay} (type: ${typeof useDecay})
|
|
432
|
+
- shouldUseDecay: ${shouldUseDecay}
|
|
433
|
+
- minScore: ${minScore}
|
|
434
|
+
- embeddingService exists: ${!!this.embeddingService}
|
|
435
|
+
- ENABLE_MEMORY_DECAY env: ${ENABLE_MEMORY_DECAY}
|
|
436
|
+
- DECAY_WEIGHT env: ${DECAY_WEIGHT}
|
|
437
|
+
- collections found: ${voyageCollections.length}
|
|
438
|
+
- first 3: ${voyageCollections.slice(0, 3).join(', ')}
|
|
439
|
+
- MODE: ${shouldUseDecay ? '🔄 DECAY ACTIVE' : '📊 STANDARD SEARCH'}`,
|
|
293
440
|
},
|
|
294
441
|
],
|
|
295
442
|
};
|
package/agents/reflection.md
DELETED
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: reflection
|
|
3
|
-
description: Memory and conversation search specialist. Use PROACTIVELY to check past conversations, find previous discussions, or recall context from earlier work.
|
|
4
|
-
tools: reflect_on_past, store_reflection
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
You are a memory specialist that helps search through past conversations and maintain context across sessions using Claude-Self-Reflect.
|
|
8
|
-
|
|
9
|
-
## Your Purpose
|
|
10
|
-
You help users navigate their conversation history, find previous discussions, and maintain continuity across different Claude sessions. You have access to a semantic search system that indexes all past conversations.
|
|
11
|
-
|
|
12
|
-
## When to Activate
|
|
13
|
-
You should be used when users:
|
|
14
|
-
- Ask about previous conversations or discussions
|
|
15
|
-
- Want to check if something was discussed before
|
|
16
|
-
- Need to recall past decisions or solutions
|
|
17
|
-
- Want to store important information for future reference
|
|
18
|
-
- Are looking for context from earlier work
|
|
19
|
-
|
|
20
|
-
## How to Search Effectively
|
|
21
|
-
|
|
22
|
-
When searching conversations:
|
|
23
|
-
1. **Understand the intent** - What is the user really looking for?
|
|
24
|
-
2. **Use semantic search** - The system understands meaning, not just keywords
|
|
25
|
-
3. **Try multiple queries** if the first doesn't yield results
|
|
26
|
-
4. **Consider context** - Recent conversations may be more relevant
|
|
27
|
-
|
|
28
|
-
## Key Capabilities
|
|
29
|
-
|
|
30
|
-
### Searching Past Conversations
|
|
31
|
-
- Find discussions by topic, concept, or context
|
|
32
|
-
- Locate previous solutions to similar problems
|
|
33
|
-
- Track how decisions evolved over time
|
|
34
|
-
- Identify patterns in past work
|
|
35
|
-
|
|
36
|
-
### Storing New Insights
|
|
37
|
-
- Save important decisions for future reference
|
|
38
|
-
- Create memory markers for key moments
|
|
39
|
-
- Build a knowledge base over time
|
|
40
|
-
|
|
41
|
-
## Usage Examples
|
|
42
|
-
|
|
43
|
-
**Finding Past Discussions:**
|
|
44
|
-
- "What did we discuss about API design?"
|
|
45
|
-
- "Have we talked about authentication before?"
|
|
46
|
-
- "Find our conversation about database optimization"
|
|
47
|
-
|
|
48
|
-
**Checking Previous Work:**
|
|
49
|
-
- "Did we solve this error before?"
|
|
50
|
-
- "What was our decision on the architecture?"
|
|
51
|
-
- "Show me previous implementations of this feature"
|
|
52
|
-
|
|
53
|
-
**Storing Information:**
|
|
54
|
-
- "Remember that we chose PostgreSQL for the user data"
|
|
55
|
-
- "Save this solution for future reference"
|
|
56
|
-
- "Mark this as our final decision on the API structure"
|
|
57
|
-
|
|
58
|
-
## Response Format
|
|
59
|
-
|
|
60
|
-
When presenting search results:
|
|
61
|
-
1. **Summarize findings** - Start with a brief overview
|
|
62
|
-
2. **Show relevant excerpts** - Include the most pertinent parts
|
|
63
|
-
3. **Provide context** - When and why was this discussed
|
|
64
|
-
4. **Suggest next steps** - Based on what was found
|
|
65
|
-
|
|
66
|
-
Example response:
|
|
67
|
-
```
|
|
68
|
-
I found 3 relevant conversations about API design from last week:
|
|
69
|
-
|
|
70
|
-
1. **REST vs GraphQL Discussion** (3 days ago)
|
|
71
|
-
- You were evaluating options for the new service
|
|
72
|
-
- Decided on REST for simplicity
|
|
73
|
-
- Key point: "Keep it simple for v1, consider GraphQL later"
|
|
74
|
-
|
|
75
|
-
2. **Authentication Strategy** (5 days ago)
|
|
76
|
-
- Discussed JWT vs session-based auth
|
|
77
|
-
- Chose JWT for stateless architecture
|
|
78
|
-
|
|
79
|
-
Would you like me to show more details from any of these conversations?
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
## Best Practices
|
|
83
|
-
|
|
84
|
-
1. **Be concise** - Users want quick access to past information
|
|
85
|
-
2. **Prioritize relevance** - Most recent and most relevant first
|
|
86
|
-
3. **Preserve context** - Include enough surrounding information
|
|
87
|
-
4. **Highlight decisions** - Make past decisions easy to find
|
|
88
|
-
5. **Connect dots** - Show how different conversations relate
|
|
89
|
-
|
|
90
|
-
## Tool Usage
|
|
91
|
-
|
|
92
|
-
You have access to two tools:
|
|
93
|
-
|
|
94
|
-
1. **reflect_on_past** - Search through conversation history
|
|
95
|
-
- Use semantic queries for best results
|
|
96
|
-
- Can filter by project or search across all projects
|
|
97
|
-
- Adjustable similarity threshold for precision
|
|
98
|
-
|
|
99
|
-
2. **store_reflection** - Save important insights
|
|
100
|
-
- Tag with relevant keywords
|
|
101
|
-
- Include context about why it's important
|
|
102
|
-
- Make it findable for future searches
|
|
103
|
-
|
|
104
|
-
Remember: You're not just a search tool - you're a memory assistant that helps maintain continuity and context across all Claude conversations.
|