feat: 重构聊天系统的内存处理与格式化功能
- 更新了DefaultReplyer,采用新的内存格式化工具以提供更优质的内存描述。 - 已移除 Config 类中已弃用的内存配置。 - 在主系统中增强内存系统初始化检查,确保配置正确。 - 优化了MemoryManager,使其可直接使用全局配置进行内存设置。 - 新增了一个内存格式化工具,用于将内存对象转换为自然语言描述。 - 更新了内存工具,提供了更清晰的内存创建与管理指南。 - 精炼插件工具与使用提示,提升用户交互体验与记忆准确性。 - 根据内存系统结构的变化调整了机器人配置模板。
This commit is contained in:
@@ -19,15 +19,47 @@ class CreateMemoryTool(BaseTool):
|
||||
"""创建记忆工具"""
|
||||
|
||||
name = "create_memory"
|
||||
description = "创建一个新的记忆。记忆由主体、类型、主题、客体(可选)和属性组成。用于记录重要的信息、事件、想法等。"
|
||||
description = """记录对话中有价值的信息,构建长期记忆。
|
||||
|
||||
## 应该记录的内容类型:
|
||||
|
||||
### 高优先级记录(importance 0.7-1.0)
|
||||
- 个人核心信息:姓名、年龄、职业、学历、联系方式
|
||||
- 重要关系:家人、亲密朋友、恋人关系
|
||||
- 核心目标:人生规划、职业目标、重要决定
|
||||
- 关键事件:毕业、入职、搬家、重要成就
|
||||
|
||||
### 中等优先级(importance 0.5-0.7)
|
||||
- 生活状态:工作内容、学习情况、日常习惯
|
||||
- 兴趣偏好:喜欢/不喜欢的事物、消费偏好
|
||||
- 观点态度:价值观、对事物的看法
|
||||
- 技能知识:掌握的技能、专业领域
|
||||
- 一般事件:日常活动、例行任务
|
||||
|
||||
### 低优先级(importance 0.3-0.5)
|
||||
- 临时状态:今天心情、当前活动
|
||||
- 一般评价:对产品/服务的简单评价
|
||||
- 琐碎事件:买东西、看电影等常规活动
|
||||
|
||||
### ❌ 不应记录
|
||||
- 单纯招呼语:"你好"、"再见"、"谢谢"
|
||||
- 无意义语气词:"哦"、"嗯"、"好的"
|
||||
- 纯粹回复确认:没有信息量的回应
|
||||
|
||||
## 记忆拆分原则
|
||||
一句话多个信息点 → 多次调用创建多条记忆
|
||||
|
||||
示例:"我最近在学Python,想找数据分析的工作"
|
||||
→ 调用1:{{subject:"[从历史提取真实名字]", memory_type:"事实", topic:"学习", object:"Python", attributes:{{时间:"最近", 状态:"进行中"}}, importance:0.7}}
|
||||
→ 调用2:{{subject:"[从历史提取真实名字]", memory_type:"目标", topic:"求职", object:"数据分析岗位", attributes:{{状态:"计划中"}}, importance:0.8}}"""
|
||||
|
||||
parameters: ClassVar[list[tuple[str, ToolParamType, str, bool, list[str] | None]]] = [
|
||||
("subject", ToolParamType.STRING, "记忆的主体,通常是'我'、'用户'或具体的人名", True, None),
|
||||
("memory_type", ToolParamType.STRING, "记忆类型", True, ["事件", "事实", "关系", "观点"]),
|
||||
("topic", ToolParamType.STRING, "记忆的主题,即发生的事情或状态", True, None),
|
||||
("object", ToolParamType.STRING, "记忆的客体,即主题作用的对象(可选)", False, None),
|
||||
("attributes", ToolParamType.STRING, "记忆的属性(JSON格式字符串),如 {\"时间\":\"今天\",\"地点\":\"家里\"}", False, None),
|
||||
("importance", ToolParamType.FLOAT, "记忆的重要性(0.0-1.0),默认0.5", False, None),
|
||||
("subject", ToolParamType.STRING, "记忆主体(重要!)。从对话历史中提取真实发送人名字。示例:如果看到'Prou(12345678): 我喜欢...',subject应填'Prou';如果看到'张三: 我在...',subject应填'张三'。❌禁止使用'用户'这种泛指,必须用具体名字!", True, None),
|
||||
("memory_type", ToolParamType.STRING, "记忆类型。【事件】=有明确时间点的动作(昨天吃饭、明天开会)【事实】=稳定状态(职业是程序员、住在北京)【观点】=主观看法(喜欢/讨厌/认为)【关系】=人际关系(朋友、同事)", True, ["事件", "事实", "关系", "观点"]),
|
||||
("topic", ToolParamType.STRING, "记忆的核心内容(做什么/是什么状态/什么关系)。必须明确、具体,包含关键动词或状态词", True, None),
|
||||
("object", ToolParamType.STRING, "记忆涉及的对象或目标。如果topic已经很完整可以不填,如果有明确对象建议填写", False, None),
|
||||
("attributes", ToolParamType.STRING, "详细属性,JSON格式字符串。强烈建议包含:时间(具体到日期)、地点、状态、原因等上下文信息。例:{\"时间\":\"2025-11-06\",\"地点\":\"公司\",\"状态\":\"进行中\",\"原因\":\"项目需要\"}", False, None),
|
||||
("importance", ToolParamType.FLOAT, "重要性评分 0.0-1.0。参考:日常琐事0.3-0.4,一般对话0.5-0.6,重要信息0.7-0.8,核心记忆0.9-1.0。不确定时用0.5", False, None),
|
||||
]
|
||||
|
||||
available_for_llm = True
|
||||
|
||||
Reference in New Issue
Block a user