# 工作记忆链机制说明 ## 概述 TrulyMEM 通过工作记忆链机制维持对话连贯性。由于系统没有传统的消息历史数组,图数据库是唯一的记忆载体,工作记忆链是维持对话上下文的关键机制。 ## 核心问题 传统 AI 对话系统在处理连续性任务时存在以下问题: 1. **没有工作记忆链**: AI 无法记住当前正在进行的任务状态 2. **任务上下文丢失**: 当话题被打断后,AI 无法恢复之前的任务 3. **缺乏任务状态管理**: 没有明确标注任务的完成状态 ### 问题示例 ``` 用户: 咱来玩成语接龙吧,我先开始,为所欲为 AI: 好的喵!我接:为虎作伥喵! 用户: 长门有希 (话题被打断) AI: (讨论长门有希的内容) 用户: 关于刚才的成语接龙,我并不知道应该怎么接你的成语,请帮我接一下 AI: [猜测] 看起来我们之前应该没有进行过成语接龙游戏... ``` **问题**: AI 完全忘记了之前的成语接龙游戏。 ## 解决方案 ### 专用工具 系统提供 4 个专用任务工具: | 工具 | 功能 | 使用场景 | |------|------|----------| | `task_create` | 创建任务节点 | 开始新任务 | | `task_set_state` | 设置任务状态 | 更新进行中/已完成/已暂停/已取消 | | `task_delete` | 删除任务 | 清理完成任务 | | `task_link_info` | 关联信息节点 | 连接任务与具体信息 | ### 任务状态 - **进行中**: 任务正在执行 - **已完成**: 任务成功完成 - **已暂停**: 任务被中断,可恢复 - **已取消**: 任务被取消 ## 使用流程 ### 每轮对话必须执行 1. **查询人设图** (最高优先级) ``` 调用 memory_recall 参数: {"query_intent": "AI,人设,角色,性格,语气,说话风格", "depth": 2} ``` 2. **查询工作记忆链** ``` 调用 memory_recall 参数: {"query_intent": "TaskNode,工作记忆,任务链", "depth": 2} ``` 3. **根据上下文生成回复** 4. **更新工作记忆链** (如有必要) ## 完整示例: 成语接龙游戏 ### 第一轮: 用户发起游戏 ``` 用户: 咱来玩成语接龙吧,我先开始,为所欲为 AI操作: 1. 查询人设图 → 获取当前人设(如:猫娘) 2. 查询工作记忆链 → 无进行中任务 3. 记录游戏状态: 调用 memory_commit 参数: { "triplets": [ {"subject": "成语接龙_当前成语", "relation": "内容", "object": "为所欲为"}, {"subject": "成语接龙_当前成语", "relation": "游戏", "object": "成语接龙"} ] } 4. 创建任务节点: 调用 task_create 参数: { "task_id": "Task_成语接龙", "description": "成语接龙游戏,当前成语:为所欲为", "info_nodes": ["成语接龙_当前成语"] } 5. 回复: "好的喵!我接:为虎作伥喵!" ``` ### 第二轮: 话题被打断 ``` 用户: 长门有希 AI操作: 1. 查询人设图 → 获取当前人设(猫娘) 2. 查询工作记忆链 → 发现 Task_成语接龙 状态为"进行中" 3. 暂停任务: 调用 task_set_state 参数: {"task_id": "Task_成语接龙", "state": "已暂停"} 4. 创建新任务: 调用 task_create 参数: {"task_id": "Task_长门有希", "description": "讨论长门有希"} 5. 回复关于长门有希的内容 ``` ### 第三轮: 用户要求继续游戏 ``` 用户: 关于刚才的成语接龙,我并不知道应该怎么接你的成语,请帮我接一下 AI操作: 1. 查询人设图 → 获取当前人设(猫娘) 2. 查询工作记忆链 → 发现 Task_成语接龙 状态为"已暂停" 3. 恢复任务: 调用 task_set_state 参数: {"task_id": "Task_成语接龙", "state": "进行中"} 4. 查询信息节点 → 获取当前成语"为虎作伥" 5. 回复: "好的喵!上一个成语是'为虎作伥',我帮你接:伥鬼害人喵!" ``` ## API 参考 ### task_create 创建任务节点,用于跟踪连续性任务。 ```json { "task_id": "Task_成语接龙", "description": "任务概述", "info_nodes": ["关联的信息节点名称"] } ``` ### task_set_state 设置任务状态。 ```json { "task_id": "Task_成语接龙", "state": "进行中" // 进行中/已完成/已暂停/已取消 } ``` ### task_delete 删除任务节点。 ```json { "task_id": "Task_成语接龙", "delete_info_nodes": true // 是否删除关联的信息节点 } ``` ### task_link_info 关联信息节点到任务。 ```json { "task_id": "Task_成语接龙", "info_node_names": ["成语接龙_当前成语", "成语接龙_上一个成语"] } ``` ## 注意事项 1. **人设图优先级最高**: 每轮必须首先查询人设图 2. **工作记忆链是唯一上下文载体**: 没有传统消息历史 3. **任务状态必须及时更新**: 确保状态转换正确 4. **使用专用工具**: 优先使用 task_* 工具而非 memory_commit 处理任务相关操作