memos 写入记忆读取记忆的skill
【代码】memos 写入记忆读取记忆的skill。
·
---
name: memos-memory-assistant
description: >-
简单的记忆存储与检索助手,提供便捷的记忆功能。
适合需要存储和检索用户偏好的场景。
常见触发场景:记住用户喜好、检索用户信息
trigger_keywords:
- 记住
- 记忆
- 想起
- 搜索记忆
- 用户信息
- 偏好记忆
---
## 详细功能
- **记住信息**
- **工具**: remember
- **CLI调用**: `python -m skills.memos remember --content "我喜欢苹果"`
- **参数**:
- content (要记住的内容)
- **操作**: 将信息存储到记忆库中
- **检索记忆**
- **工具**: recall
- **CLI调用**: `python -m skills.memos recall --query "苹果"`
- **参数**:
- query (搜索关键词)
- **操作**: 根据关键词检索相关的记忆信息
"""Simple memory skill for storing and retrieving user memories."""
import os
from typing import List, Dict, Optional
# Try to import the real MemOS client, fall back to local memory if not available
try:
from memos.api.client import MemOSClient
MEMOS_AVAILABLE = True
except ImportError:
MEMOS_AVAILABLE = False
print("警告: MemOS客户端不可用,将使用本地记忆功能")
# Import local memory functions using absolute import
try:
from agent_chator.memory.local_memory import add_message as local_add_message, search_memory as local_search_memory
except ImportError:
# Fallback if the module is not available
def local_add_message(user_id, conversation_id, messages):
print("警告: 本地记忆功能不可用")
return {"error": "Local memory not available"}
def local_search_memory(query, user_id, conversation_id):
print("警告: 本地记忆功能不可用")
return {"error": "Local memory not available"}
class MemosSkill:
"""A skill for interacting with MemOS API to store and retrieve memories."""
def __init__(self):
self.api_key = os.getenv("MEMOS_API_KEY")
if not self.api_key or not MEMOS_AVAILABLE:
print("信息: 未设置 MEMOS_API_KEY 或 MemOS不可用,将使用本地记忆功能")
self.use_local = True
else:
self.use_local = False # Use remote if available and key is set
if not self.use_local:
try:
self.client = MemOSClient(api_key=self.api_key)
except Exception as e:
print(f"警告: 无法初始化MemOS客户端 ({e}),将使用本地记忆功能")
self.use_local = True
else:
self.client = None
def add_message(self, user_id: str, conversation_id: str, messages: List[Dict[str, str]]) -> Dict:
"""
Store a conversation in MemOS to create memories.
Args:
user_id: The ID of the user
conversation_id: The ID of the conversation
messages: List of messages in the format {"role": "user|assistant", "content": "message content"}
Returns:
Response from the MemOS API
"""
if self.use_local:
return local_add_message(user_id=user_id, conversation_id=conversation_id, messages=messages)
else:
return self.client.add_message(messages=messages, user_id=user_id, conversation_id=conversation_id)
def search_memory(self, query: str, user_id: str, conversation_id: str) -> Dict:
"""
Retrieve relevant memories from MemOS based on a query.
Args:
query: The search query to find relevant memories
user_id: The ID of the user
conversation_id: The ID of the current conversation
Returns:
Response from the MemOS API containing relevant memories
"""
if self.use_local:
return local_search_memory(query=query, user_id=user_id, conversation_id=conversation_id)
else:
return self.client.search_memory(query=query, user_id=user_id, conversation_id=conversation_id)
# Global variable to hold the skill instance
_memosskill = None
def _get_memosskill():
"""Lazy initialization of the MemosSkill instance."""
global _memosskill
if _memosskill is None:
_memosskill = MemosSkill()
return _memosskill
# Export the functions for direct use
def add_message(user_id: str, conversation_id: str, messages: List[Dict[str, str]]) -> Dict:
"""
Store a conversation in MemOS to create memories.
Args:
user_id: The ID of the user
conversation_id: The ID of the conversation
messages: List of messages in the format {"role": "user|assistant", "content": "message content"}
Returns:
Response from the MemOS API
"""
skill = _get_memosskill()
return skill.add_message(user_id, conversation_id, messages)
def search_memory(query: str, user_id: str, conversation_id: str) -> Dict:
"""
Retrieve relevant memories from MemOS based on a query.
Args:
query: The search query to find relevant memories
user_id: The ID of the user
conversation_id: The ID of the current conversation
Returns:
Response from the MemOS API containing relevant memories
"""
skill = _get_memosskill()
return skill.search_memory(query, user_id, conversation_id)
# Simple convenience functions for common use cases
DEFAULT_USER_ID = "default_user"
def remember(content: str, user_id: str = DEFAULT_USER_ID) -> Dict:
"""
Remember something for a user.
Args:
content: The content to remember
user_id: The ID of the user (optional, defaults to 'default_user')
Returns:
Result of the operation
"""
messages = [{"role": "user", "content": content}]
return add_message(user_id, "default_conversation", messages)
def recall(query: str, user_id: str = DEFAULT_USER_ID) -> Dict:
"""
Recall information for a user based on a query.
Args:
query: The query to search for
user_id: The ID of the user (optional, defaults to 'default_user')
Returns:
Search results
"""
return search_memory(query, user_id, "default_conversation")
更多推荐



所有评论(0)