#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ 代码示例 03: WorkingMemory实现详解 展示工作记忆的混合检索策略和TTL机制 """ import time from datetime import datetime, timedelta from typing import List, Dict, Any from hello_agents.tools import MemoryTool from hello_agents.memory import MemoryItem class WorkingMemoryDemo: """工作记忆演示类""" def __init__(self): self.memory_tool = MemoryTool( user_id="working_memory_demo", memory_types=["working"] # 只启用工作记忆 ) def demonstrate_capacity_management(self): """演示容量管理和TTL机制""" print("🧠 工作记忆容量管理演示") print("=" * 50) print("工作记忆特点:") print("• 容量有限(默认50条)") print("• TTL机制(默认60分钟)") print("• 自动清理过期记忆") print("• 优先级管理(重要性排序)") # 添加多条记忆来演示容量管理 print(f"\n📝 添加测试记忆...") for i in range(10): importance = 0.3 + (i * 0.07) # 递增重要性 self.memory_tool.execute("add", content=f"工作记忆测试项目 {i+1} - 重要性 {importance:.2f}", memory_type="working", importance=importance, test_id=i+1, category="capacity_test" ) # 查看当前状态 stats = self.memory_tool.execute("stats") print(f"当前状态: {stats}") # 演示重要性排序 print(f"\n🔍 按重要性搜索:") result = self.memory_tool.execute("search", query="测试项目", memory_type="working", limit=5 ) print(result) def demonstrate_mixed_retrieval_strategy(self): """演示混合检索策略""" print("\n🔍 混合检索策略演示") print("-" * 40) print("混合检索策略包括:") print("• TF-IDF向量化语义检索") print("• 关键词匹配检索") print("• 时间衰减因子") print("• 重要性权重调整") # 添加不同类型的记忆用于检索测试 test_memories = [ { "content": "Python是一种高级编程语言,语法简洁清晰", "importance": 0.8, "topic": "programming", "language": "python" }, { "content": "机器学习是人工智能的重要分支,包括监督学习和无监督学习", "importance": 0.9, "topic": "ai", "domain": "machine_learning" }, { "content": "数据结构包括数组、链表、栈、队列等基本结构", "importance": 0.7, "topic": "computer_science", "category": "data_structures" }, { "content": "算法复杂度分析使用大O记号来描述时间和空间复杂度", "importance": 0.8, "topic": "algorithms", "analysis": "complexity" } ] print(f"\n📝 添加测试记忆...") for i, memory in enumerate(test_memories): content = memory.pop("content") importance = memory.pop("importance") self.memory_tool.execute("add", content=content, memory_type="working", importance=importance, **memory ) # 测试不同类型的检索 search_tests = [ ("Python编程", "测试语义匹配"), ("学习", "测试关键词匹配"), ("复杂度", "测试部分匹配"), ("人工智能机器学习", "测试多词匹配") ] print(f"\n🔍 混合检索测试:") for query, description in search_tests: print(f"\n查询: '{query}' ({description})") result = self.memory_tool.execute("search", query=query, memory_type="working", limit=2 ) print(f"结果: {result}") def demonstrate_time_decay_mechanism(self): """演示时间衰减机制""" print("\n⏰ 时间衰减机制演示") print("-" * 40) print("时间衰减机制:") print("• 新记忆权重更高") print("• 旧记忆权重衰减") print("• 模拟人类记忆特点") print("• 平衡新旧信息重要性") # 添加不同时间的记忆(模拟) time_test_memories = [ ("最新的重要信息 - 刚刚学习的概念", 0.7, "newest"), ("较新的信息 - 昨天学习的内容", 0.7, "recent"), ("较旧的信息 - 上周学习的内容", 0.7, "older"), ("最旧的信息 - 很久以前的内容", 0.7, "oldest") ] print(f"\n📝 添加不同时期的记忆...") for content, importance, age_category in time_test_memories: self.memory_tool.execute("add", content=content, memory_type="working", importance=importance, age_category=age_category, timestamp_category=age_category ) # 搜索测试时间衰减效果 print(f"\n🔍 时间衰减效果测试:") result = self.memory_tool.execute("search", query="学习的内容", memory_type="working", limit=4 ) print("搜索结果(注意时间因素对排序的影响):") print(result) def demonstrate_automatic_cleanup(self): """演示自动清理机制""" print("\n🧹 自动清理机制演示") print("-" * 40) print("自动清理机制:") print("• 过期记忆自动清理") print("• 容量超限时清理低优先级记忆") print("• 保持系统性能和响应速度") print("• 模拟工作记忆的有限容量") # 获取清理前的状态 stats_before = self.memory_tool.execute("stats") print(f"\n清理前状态: {stats_before}") # 添加一些低重要性的记忆 print(f"\n📝 添加低重要性记忆...") for i in range(5): self.memory_tool.execute("add", content=f"低重要性临时记忆 {i+1}", memory_type="working", importance=0.1 + i * 0.05, temporary=True, cleanup_test=True ) # 触发基于重要性的清理 print(f"\n🧹 执行基于重要性的清理...") cleanup_result = self.memory_tool.execute("forget", strategy="importance_based", threshold=0.3 ) print(f"清理结果: {cleanup_result}") # 获取清理后的状态 stats_after = self.memory_tool.execute("stats") print(f"\n清理后状态: {stats_after}") def demonstrate_performance_characteristics(self): """演示性能特征""" print("\n⚡ 性能特征演示") print("-" * 40) print("工作记忆性能特点:") print("• 纯内存存储,访问速度极快") print("• 无需磁盘I/O,响应时间短") print("• 适合频繁访问的临时数据") print("• 系统重启后数据丢失(符合设计)") # 性能测试 print(f"\n⏱️ 性能测试:") # 批量添加测试 start_time = time.time() for i in range(20): self.memory_tool.execute("add", content=f"性能测试记忆 {i+1}", memory_type="working", importance=0.5, performance_test=True ) add_time = time.time() - start_time print(f"批量添加20条记忆耗时: {add_time:.3f}秒") # 批量搜索测试 start_time = time.time() for i in range(10): self.memory_tool.execute("search", query=f"性能测试", memory_type="working", limit=3 ) search_time = time.time() - start_time print(f"批量搜索10次耗时: {search_time:.3f}秒") # 获取最终统计 final_stats = self.memory_tool.execute("stats") print(f"\n📊 最终统计: {final_stats}") def main(): """主函数""" print("🧠 WorkingMemory实现详解") print("展示工作记忆的核心特性和实现机制") print("=" * 60) try: demo = WorkingMemoryDemo() # 1. 容量管理演示 demo.demonstrate_capacity_management() # 2. 混合检索策略演示 demo.demonstrate_mixed_retrieval_strategy() # 3. 时间衰减机制演示 demo.demonstrate_time_decay_mechanism() # 4. 自动清理机制演示 demo.demonstrate_automatic_cleanup() # 5. 性能特征演示 demo.demonstrate_performance_characteristics() print("\n" + "=" * 60) print("🎉 WorkingMemory实现演示完成!") print("=" * 60) print("\n✨ 工作记忆核心特性:") print("1. 🧠 有限容量 - 模拟人类工作记忆限制") print("2. ⚡ 高速访问 - 纯内存存储,响应迅速") print("3. 🔍 混合检索 - 语义+关键词+时间+重要性") print("4. ⏰ 时间衰减 - 新信息优先,旧信息衰减") print("5. 🧹 自动清理 - TTL机制+优先级管理") print("\n🎯 设计理念:") print("• 临时性 - 存储当前会话的临时信息") print("• 高效性 - 快速访问和处理能力") print("• 智能性 - 自动管理和优化策略") print("• 仿生性 - 模拟人类工作记忆特点") except Exception as e: print(f"\n❌ 演示过程中发生错误: {e}") import traceback traceback.print_exc() if __name__ == "__main__": main()