consolidationExample demonstrates memory consolidation
(ctx context.Context)
| 317 | |
| 318 | // consolidationExample demonstrates memory consolidation |
| 319 | func consolidationExample(ctx context.Context) { |
| 320 | fmt.Println("--- Example 4: Memory Consolidation ---") |
| 321 | |
| 322 | store := logic.NewInMemoryStore() |
| 323 | |
| 324 | // Create some similar memories that should be consolidated |
| 325 | memories := []*logic.LogicMemory{ |
| 326 | { |
| 327 | ID: "1", |
| 328 | Namespace: "user:diana", |
| 329 | Type: "preference", |
| 330 | Key: "tone_casual_1", |
| 331 | Description: "User prefers casual tone", |
| 332 | Provenance: &memory.MemoryProvenance{Confidence: 0.7}, |
| 333 | }, |
| 334 | { |
| 335 | ID: "2", |
| 336 | Namespace: "user:diana", |
| 337 | Type: "preference", |
| 338 | Key: "tone_casual_2", |
| 339 | Description: "User likes informal language", |
| 340 | Provenance: &memory.MemoryProvenance{Confidence: 0.8}, |
| 341 | }, |
| 342 | { |
| 343 | ID: "3", |
| 344 | Namespace: "user:diana", |
| 345 | Type: "behavior", |
| 346 | Key: "format_preference", |
| 347 | Description: "User prefers lists", |
| 348 | Provenance: &memory.MemoryProvenance{Confidence: 0.9}, |
| 349 | }, |
| 350 | } |
| 351 | |
| 352 | // Save memories to store |
| 353 | for _, m := range memories { |
| 354 | _ = store.Save(ctx, m) |
| 355 | } |
| 356 | |
| 357 | fmt.Printf("Created %d memories\n", len(memories)) |
| 358 | |
| 359 | // Create consolidation engine |
| 360 | engine := logic.NewConsolidationEngine(store, &logic.ConsolidationConfig{ |
| 361 | SimilarityThreshold: 0.6, |
| 362 | MinGroupSize: 2, |
| 363 | MergeStrategy: logic.MergeStrategyKeepHighestConfidence, |
| 364 | }) |
| 365 | |
| 366 | // Run consolidation |
| 367 | result, err := engine.Consolidate(ctx, "user:diana") |
| 368 | if err != nil { |
| 369 | log.Fatalf("Failed to consolidate: %v", err) |
| 370 | } |
| 371 | |
| 372 | fmt.Printf("Consolidation result:\n") |
| 373 | fmt.Printf(" - Total memories: %d\n", result.TotalMemories) |
| 374 | fmt.Printf(" - Groups merged: %d\n", result.MergedGroups) |
| 375 | fmt.Printf(" - Memories deleted: %d\n", result.DeletedMemories) |
| 376 | fmt.Printf(" - Duration: %v\n", result.EndTime.Sub(result.StartTime)) |
no test coverage detected