Files
Partner/README.md
slhafzjw 68a38e9b51 进行第一阶段的调试修复
- 修复了记忆系统中的空指针问题,原因:更新对话缓存计数时使用的经过裁剪的主题路径。
- 修复了切片评估无法正常执行的问题,原因:切片不存在前后序引用时,也试图获取前后序切片的摘要,此时应当抛出空指针异常,但由于任务以Callable<Void>提交,且未处于try-catch代码块内部,导致异常被“吞掉”
- 更新激活切片时将根据id获取到切片对应的消息列表
- 调整了README文件中的不准确描述
2025-05-12 20:29:43 +08:00

2.8 KiB
Raw Blame History

Partner

以多模型协作为基础, 具备结构化记忆能力、支持多用户同上下文窗口, 支持可推断任务交互与调度(规划中)的智能体系统

核心结构

结构化记忆系统

构建以主题树+记忆切片为基础的记忆图谱。

单个主题节点下存在多级子主题。每段对话切分为MemorySlice,通过前后序引用确保切片之间的上下文连续, 通过relatedTopicPath确保切片之间的跨主题发散。切片将聚合为MemoryNode(记忆节点)的形式挂载到主题节点。除此之外,每个记忆节点还将按照日期进行索引。

多用户会话管理

构建区分用户的单上下文窗口、多用户会话的管理机制

模块实现

  • 预处理模块: Preprocessor
  • 记忆模块
    • 记忆选择模块: MemorySelector
      • 主题提取模块: MemorySelectExtractor
      • 切片评估模块: SliceSelectEvaluator
    • 记忆更新模块: MemoryUpdater
      • 记忆总结模块: MemorySummarizer
      • 静态记忆提取模块: StaticMemoryExtractor
  • 主对话模块: CoreModel

当前问题

  • 角色设定机制会导致对于所有用户采用同一种语气回应。
  • 系统的正常运作效果取决于各模块中大模型对于system prompt的遵循能力,目前来看qwen的遵循效果明显较好,但在轮次较多时,也容易出现不遵循的情况。正在尝试通过临时的system prompt进行强化。
  • 记忆系统有时会出现空指针异常,但好像不影响整体运行...但肯定要修的,就是有点不好找。
  • 各模块(尤其是记忆更新模块)的身份感缺失进行主题路径生成、切片摘要时需确保以Partner的视角执行操作。
  • 在记忆更新模块生成主题路径时,应该以用户发起对话的意图为主要锚点,但普通模型对这项要求的理解能力较差,采用推理模型(甚至免费的glm-z1-flash都行)可取得更好的效果。

后续规划

短期规划

  • 调整内部各模块的提示词的“身份视角”,确保统一实现,以免造成记忆系统中的身份割裂。
  • 当前MemoryGraph承担职责较重,已远超原记忆图谱的职责,需要进行拆分重构。(或许可以叫MemoryCore吧)
  • 看看是否需要将主模型的对话职责进行分离用来减少LLM因不遵循system prompt带来的影响,但这应该会是规模较大的重构()。
  • 实现身份感知模块(用户识别、熟悉度判断、记忆片段检索、人物画像、对话口吻调整)。
  • 实现流式输出,同时在各模块执行时可向客户端返回回调信息,优化使用体验。(现在用的是websocket与客户端通信, 应该实现这点会简单些)
  • 踩坑。

长期规划

  • 实现角色演进机制
  • 实现任务调度模块(主动调度、意图推断、定时调度)