feat: 重构聊天系统的内存处理与格式化功能

- 更新了DefaultReplyer,采用新的内存格式化工具以提供更优质的内存描述。
- 已移除 Config 类中已弃用的内存配置。
- 在主系统中增强内存系统初始化检查,确保配置正确。
- 优化了MemoryManager,使其可直接使用全局配置进行内存设置。
- 新增了一个内存格式化工具,用于将内存对象转换为自然语言描述。
- 更新了内存工具,提供了更清晰的内存创建与管理指南。
- 精炼插件工具与使用提示,提升用户交互体验与记忆准确性。
- 根据内存系统结构的变化调整了机器人配置模板。
This commit is contained in:
Windpicker-owo
2025-11-06 08:47:18 +08:00
parent ae60eae6dc
commit faca0d3d1b
13 changed files with 691 additions and 118 deletions

View File

@@ -73,83 +73,92 @@ class MemoryTools:
"""
return {
"name": "create_memory",
"description": """创建一个新的记忆节点。
"description": """创建一个新的记忆节点,记录对话中有价值的信息
⚠️ 记忆创建原则(必须遵守):
1. **价值判断**:只创建具有长期价值的关键信息,避免记录日常闲聊、礼貌用语、重复信息
2. **细粒度原则**:每条记忆只包含一个明确的事实/事件/观点,避免泛化
3. **原子性**:如果一句话包含多个重要信息点,拆分成多条独立记忆
4. **具体性**:记录具体的人、事、物、时间、地点,避免模糊描述
🎯 **核心原则**:主动记录、积极构建、丰富细节
❌ 不应创建记忆的情况
- 普通问候、感谢、确认等礼貌性对话
- 已存在的重复信息
- 临时性、一次性的琐碎信息
- 纯粹的功能操作指令(如"帮我查一下"
- 缺乏上下文的碎片化信息
✅ **优先创建记忆的场景**(鼓励记录)
1. **个人信息**:姓名、昵称、年龄、职业、身份、所在地、联系方式等
2. **兴趣爱好**:喜欢/不喜欢的事物、娱乐偏好、运动爱好、饮食口味等
3. **生活状态**:工作学习状态、生活习惯、作息时间、日常安排等
4. **经历事件**:正在做的事、完成的任务、参与的活动、遇到的问题等
5. **观点态度**:对事物的看法、价值观、情绪表达、评价意见等
6. **计划目标**:未来打算、学习计划、工作目标、待办事项等
7. **人际关系**:提到的朋友、家人、同事、认识的人等
8. **技能知识**:掌握的技能、学习的知识、专业领域、使用的工具等
9. **物品资源**:拥有的物品、使用的设备、喜欢的品牌等
10. **时间地点**:重要时间节点、常去的地点、活动场所等
✅ 应该创建记忆的情况
- 用户的个人信息(姓名、职业、兴趣、联系方式等
- 重要事件(项目进展、重大决定、关键行动等
- 长期偏好/观点(喜好、价值观、习惯等
- 人际关系变化(新朋友、合作关系等)
- 具体计划/目标(明确的待办事项、长期目标等)
⚠️ **暂不创建的情况**(仅限以下)
- 纯粹的招呼语(单纯的"你好""再见"
- 完全无意义的语气词(单纯的""""
- 明确的系统指令(如"切换模式""重启"
📝 拆分示例
- "用户喜欢编程最近在学Python和机器学习" → 过于泛化
- ✅ 拆分为3条
1. "用户喜欢编程"(观点)
2. "用户正在学习Python"(事件)
3. "用户正在学习机器学习"(事件)
<EFBFBD> **记忆拆分建议**
- 一句话包含多个信息点 → 拆成多条记忆(更利于后续检索)
- 例如:"我最近在学Python和机器学习想找工作"
→ 拆成3条
1. "用户正在学习Python"(事件)
2. "用户正在学习机器学习"(事件)
3. "用户想找工作"(事件/目标)
记忆结构:主体 + 类型 + 主题 + 客体(可选)+ 属性""",
📌 **记忆质量建议**
- 记录时尽量补充时间("今天""最近""昨天"等)
- 包含具体细节(越具体越好)
- 主体明确(优先使用"用户"或具体人名,避免""
记忆结构:主体 + 类型 + 主题 + 客体(可选)+ 属性(越详细越好)""",
"parameters": {
"type": "object",
"properties": {
"subject": {
"type": "string",
"description": "记忆的主体,通常是'用户'或具体的人名(避免使用''",
"description": "记忆的主体(谁的信息):\n- 对话中的用户统一使用'用户'\n- 提到的具体人物使用其名字(如'小明''张三'\n- 避免使用''''等代词",
},
"memory_type": {
"type": "string",
"enum": ["事件", "事实", "关系", "观点"],
"description": "记忆类型:\n- 事件时间绑定的具体动作(如'完成项目''学习课程'\n- 事实:稳定的客观状态(如'职业是工程师''住在北京'\n- 关系:人际关系(如'识了朋友''同事关系'\n- 观点:主观评价/偏好(如'喜欢Python''认为AI很重要'",
"description": "选择最合适的记忆类型:\n\n事件时间相关的动作或发生的事(用'正在''完成''参加'等动词\n正在学习Python、完成了项目、参加会议、去旅行\n\n【事实】相对稳定的客观信息(用''''''等描述状态\n 例:职业是工程师、住在北京、有一只猫、会说英语\n\n【观点】主观看法、喜好、态度(用'喜欢''''觉得'\n喜欢Python、认为AI很重要、觉得累、讨厌加班\n\n【关系】人与人之间的关系\n 例:认识了朋友、是同事、家人关系",
},
"topic": {
"type": "string",
"description": "记忆的核心主题,必须具体明确('学习PyTorch框架'而非'学习编程'",
"description": "记忆的核心内容(做什么/是什么/关于什么):\n- 尽量具体明确('学习Python编程' 优于 '学习'\n- 包含关键动词或核心概念\n- 可以包含时间状态('正在学习''已完成''计划做'",
},
"object": {
"type": "string",
"description": "记忆的客体/对象,作为主题的补充说明(如主题是'学习',客体可以是'PyTorch框架'",
"description": "可选:记忆涉及的对象或目标:\n- 事件的对象(学习的是什么、购买的是什么)\n- 观点的对象(喜欢的是什么、讨厌的是什么)\n- 可以留空如果topic已经足够完整",
},
"attributes": {
"type": "object",
"description": "记忆的具体属性(尽量填写以增加记忆的信息密度)",
"description": "记忆的详细属性(建议尽量填写,越详细越好):",
"properties": {
"时间": {
"type": "string",
"description": "具体时间表达式,如'2025-11-05''今天下午''最近一周''3天前'",
"description": "时间信息(强烈建议填写):\n- 具体日期:'2025-11-05''2025年11月'\n- 相对时间:'今天''昨天''上周''最近''3天前'\n- 时间段:'今天下午''上个月''这学期'",
},
"地点": {
"type": "string",
"description": "具体地点(如果相关)"
"description": "地点信息(如涉及):\n- 具体地址、城市名、国家\n- 场所类型:'在家''公司''学校''咖啡店'"
},
"原因": {
"type": "string",
"description": "事件发生的原因或动机(如明确)"
"description": "为什么这样做/这样想(如明确提到"
},
"方式": {
"type": "string",
"description": "完成的方式或途径(如果相关"
"description": "怎么做的/通过什么方式(如明确提到"
},
"结果": {
"type": "string",
"description": "事件的结果或影响(如果已知"
"description": "结果如何/产生什么影响(如明确提到"
},
"状态": {
"type": "string",
"description": "当前状态(如'进行中''已完成''计划中'"
"description": "当前进展:'进行中''已完成''计划中''暂停'"
},
"程度": {
"type": "string",
"description": "程度描述(如'非常''比较''有点''不太'"
},
},
"additionalProperties": True,
@@ -158,7 +167,7 @@ class MemoryTools:
"type": "number",
"minimum": 0.0,
"maximum": 1.0,
"description": "记忆的重要性评分(0.0-1.0\n- 0.3-0.4: 次要信息\n- 0.5-0.6: 一般信息\n- 0.7-0.8: 重要信息(用户明确表达的偏好、重要事件\n- 0.9-1.0: 关键信息(核心个人信息、重大决定、强烈偏好\n默认0.5",
"description": "重要性评分(默认0.5日常对话建议0.5-0.7\n\n0.3-0.4: 次要细节(偶然提及的琐事)\n0.5-0.6: 日常信息(一般性的分享、普通爱好)← 推荐默认值\n0.7-0.8: 重要信息(明确的偏好、重要计划、核心爱好\n0.9-1.0: 关键信息(身份信息、重大决定、强烈情感\n\n💡 建议日常对话中大部分记忆使用0.5-0.6,除非用户特别强调",
},
},
"required": ["subject", "memory_type", "topic"],