# Agent Memory - 记忆系统 ## 职责 记忆系统管理 Agent 的长期记忆和技能: 1. **数据模型** (`models.py`) - `Experience` - 经验记录(从执行中提取的知识) - `Skill` - 技能定义(领域知识和最佳实践) 2. **存储接口** (`protocols.py`, `stores.py`) - `MemoryStore` - 经验和技能存储接口 - `StateStore` - 状态存储接口 - `MemoryMemoryStore` - 内存实现 - `MemoryStateStore` - 内存实现 3. **技能加载** (`skill_loader.py`) - 从 Markdown 文件加载技能 - 支持 YAML frontmatter 和行内元数据 ## 模块边界 - **只依赖**:无(纯数据模型和接口) - **被依赖**:core.runner(加载和注入记忆) - **独立开发**:记忆检索、经验提取算法可独立迭代 ## 使用示例 ```python from agent.memory import ( MemoryMemoryStore, Experience, Skill, load_skills_from_dir ) # 创建存储 memory_store = MemoryMemoryStore() # 添加经验 exp = Experience.create( scope="coding", context="Python type hints", pattern="Use Optional[T] for nullable types", outcome="success" ) await memory_store.add_experience(exp) # 加载技能 skills = load_skills_from_dir("./config/skills") for skill in skills: await memory_store.add_skill(skill) # 检索记忆 experiences = await memory_store.search_experiences( scope="coding", context="type hints", limit=5 ) ``` ## 技能文件格式 技能文件使用 Markdown + YAML frontmatter: ```markdown --- name: browser-automation description: Browser automation best practices category: web-automation scope: agent:* --- ## When to use - Scraping dynamic web pages - Testing web applications ## Guidelines - Always check if element exists before clicking - Use explicit waits instead of sleep() ``` ## 文件说明 - `models.py` - Experience 和 Skill 数据模型 - `protocols.py` - MemoryStore 和 StateStore 接口 - `stores.py` - 内存存储实现 - `skill_loader.py` - 技能加载器 - `__init__.py` - 模块导出