Commit Graph

473 Commits

Author SHA1 Message Date
15d6b98eac 进行第一阶段的调试修复
- 添加 DebugMonitor 加了一个较为无用的线程,打上断点用于获取即时模块信息
- 调整 MemoryGraph 中临时切片前后序生成容器与日期索引分离,日期索引将存储 localDate 和 memoryId
- 修复了几个 MemoryGraph 用到的类对于序列化的实现
- 将 MemoryManager 中维护的 activatedMemorySlice 同样作为主题提取的依据,并调整了提示词
- 因 主题提取LLM 效果不稳定,故添加了必要的异常处理机制
- MemorySlice 中前后序机制存在循环引用问题,排除 toString 的调用
- 移除了提示词中过多的示例,仅保留一份
- 记忆自动更新线程调整:在 SessionManager 中维护 lastUpdatedTime ,用于标识最近聊天时间; 计数当前对话数量,如果只有系统提示词则不进行记忆更新
- MemoryGraph 获取主题树时将标识记忆节点数量,供主题提取模型识别,减少空主题节点作为目标节点的情况
- 在 PreprocessExecutor 执行时将先判断是否存在memoryId, 除此之外,memoryId也将在记忆自动更新线程执行后刷新
- 将 SessionManager 添加了序列化机制,添加了程序停止时自动序列化保存的钩子
- 当主题提取模型指定了不包含记忆节点的主题节点时,MemoryResult 的空属性将会使其跳过无效的切片评估

待解决问题:
- MemoryGraph 在进行记忆更新时有时会出现错误,出现条件不明
- MemorySelector 拿到的List<EvaluatedSlice> 总是为空,原因不明
- 切片评估线程似乎没有运行,原因不明
2025-05-10 21:51:45 +08:00
550a5ee2b0 - 修复了 MemoryUpdater 中正则表达式提取问题,应先调用matcher.find()进行匹配
- 在 MemorySelector 和 CoreModel 中添加lod.debug()输出模块响应内容
- 修复了某些细节问题
- 调整了 CoreModel 对应的提示词,添加了输入输出示例
- MemoryGraph 中 dialogMap 和 dateIndex 的更新机制存在问题,需要修复
2025-05-10 00:21:12 +08:00
4f6a0a8b2a - 将 userInput 的身份标志交给 PreprocessExecutor 生成
- 调整 CoreModel 对应的提示词
- 在 MemoryUpdater 中添加了自动更新线程,同时修复/调整了 memorySlice 对应的 userId 获取
2025-05-09 10:20:22 +08:00
2dd58a71c3 记忆模块、主模块完成, 进行了一些小测试
- 完成了totalSummarizer、staticMemoryExtractor的提示词设计
- 更新了 coreModel 的提示词设计,使其聚焦于最新用户,同时做到不同用户的上下文语义隔离、知识共享
- 更新了 MemoryUpdater 中针对多人场景的记忆切片设置 involvedUserId 功能
- 在程序结束时将主动触发 MemoryGraph 的持久化
- 在Config中添加了对于StaticMemoryExtractor的适配
- PersistableObject 移动位置至common包
2025-05-08 22:26:24 +08:00
9e0af5e5aa 推进记忆模块
- 在 InteractionThreadPoolExecutor 中引入虚拟线程池 (newVirtualThreadPerTaskExecutor)
- 更新相关测试文件以适应新的线程池
- 优化 MemorySummarizer 中的单条目摘要逻辑
- 为 SingleSummarizer 、 MultiSummarizer 设计了提示词
- 还差两份提示词没有设计...
2025-05-07 21:38:41 +08:00
3dd21f840e 推进记忆模块
- 暂时移除 currentCompressedSessionContext 字段,其功能目前来看与userDialogMap与dialogMap重复,且与当前设想逻辑结合存在困难
- 添加了 dialogMap 更新逻辑
- 添加静态记忆提取功能,在更新单聊、多聊记忆时同步提取(实际运行存在先后,但放到一起了)
- 新增 Model 子类所需的 prompt 待添加
- 主模型相关 prompt 待调整
2025-05-06 23:09:24 +08:00
b8b5661d79 推进记忆更新模块以及单智能体多用户相关设计
- 更新 PreprocessExecutor 以设置用户 ID
- 新增 MetaMessage 类用于封装用户和助手的消息对
- 新增 SessionManager 用于记录独立用户在共享上下文中的聊天记录
- 发现`单智能体多用户`的相关设计问题,已有思路,待解决
2025-04-29 21:57:07 +08:00
40ac6bef03 进行记忆更新相关功能:
- 实现了长对话中单回复的批量摘要、对话的整体摘要
- 调整了多LLM配置逻辑,初次运行时可选用统一的api,也可以逐个进行配置
- 调整了Memory模块的目录结构,selector与updater明确区分
2025-04-28 22:58:12 +08:00
a83cf26f40 - 更新了WebSocket服务器的启动逻辑
- 发现了agent, websocket, interactionHub之间的循环引用导致IDEA调试出错问题,通过exclude解决
- 实现了CoreModel的execute执行逻辑,并且系统提示词将动态拼接以适应不同模块
- 移动EvaluatedSlice至shared/memory包下,避免层级混淆
- 提取清洗json方法至独立的工具类
- 将agent通过InputReceiver接口暴露至socketServer,而非直接交给其完整实例
- 调整模块加载时机->InteractionHub加载时进行加载
- 调整MemoryGraph中userDialogMap的结构,换用以用户id为主键
- 初步进行测试,记忆更新逻辑暂未实现
2025-04-25 23:08:01 +08:00
4e28adbc52 记忆模块初步完成
- 为 MemorySlice 添加字段 embedding, embedded 为后续向量匹配提供基础
- 在 PreprocessExecutor 中添加了针对上下文的预填充,现经过记忆模块后,可直接交由主模型进行处理
- 实现了 MemorySelectExtractor, SliceEvaluator, MemorySelector 为主的记忆模块, 并新增了必要的实体类
- 为 MemorySelectExtractor, SliceEvaluator 设计了提示词
2025-04-23 19:27:11 +08:00
f31176336d 调整extractor提示词,适用与批量记忆切片查询 2025-04-22 23:35:27 +08:00
cb85192c50 - MemoryGraph 新增输出主题树功能
- 将 TopicExtractor 重命名为 MemorySelectExtractor ,并添加了提示词
- 记忆模块开发工作进行中
- 新增 SliceSummary 类,服务于记忆模块
2025-04-20 23:07:22 +08:00
7594a1c43b - 在InteractionHub中新增了执行模块列表功能,将输出内容交给agent进行输出封装
- 移动 InteractionContext 和 InteractionModule 至本体项目
- 调整 InteractionContext 字段内容,目前已较为完善
- 新增了 PreprocessExecutor 和 MemoryUpdater
- 优化了代码结构,提高了模块化和可扩展性,模块化前遗留问题应该已解决完毕,主流程待实现
- 添加了线程池的单例实现
- 添加了模块加载器的外部模块加载功能
- 在 Model 中新增 singleChat 方法,用于流程模块的不保留上下文对话
- 将 MemoryManager 移动至 core 包下,因为 MemoryManager 将参与多个模块内部
- 将调取记忆、更新记忆功能抽取为独立模块,便于流程控制
- 添加了 TaskData 类,用于存储任务信息,后续需考虑TaskData的序列化机制
2025-04-18 22:19:04 +08:00
34c6b861c8 refactor(agent): 明确模块化设计流程,具体逻辑待实现
- 调整配置文件路径
- 新增 InteractionModulesLoader 用于动态加载交互模块,加载扩展模块待实现
- 修复 MemoryGraph 和 MemoryNode 的部分逻辑
- 改进 ModelConfig 类,支持单独配置文件, 用于动态加载模块
- 新增 PreprocessExecutor 和 TaskEvaluator模块, 待后续实现
2025-04-17 23:12:13 +08:00
27719b7c11 - 添加以Agent为入口的注册链
- 调整项目结构
- 定义标准输入类
- 明确层级职责,Agent将负责处理所有原始输入并中转给真正的协调层InteractionHub
- 添加针对Agent层级的websocket能力扩展
2025-04-15 23:05:44 +08:00
527781cdae - 调整了项目结构,将 chat 相关的类移动到 agent/core/chat 包中
- 添加了配置管理功能,支持从文件加载配置
- 添加CoreModel、SliceEvaluator、TaskTrigger、TopicExtractor几个必要模型,具体交互逻辑等待完善
- 优化了记忆图谱的初始化和序列化逻辑,并添加了新的modelPrompt、chatMessages字段
2025-04-14 23:09:09 +08:00
4ccfdf2622 refactor(memory): 调整记忆模块
- 创建 agent 包,将所有类移动到该包下
- 新增了后续模块相应的必须类,待实现
- 新增 MemoryResult 和 MemorySliceResult 类封装查询结果
- 查询结果中终点记忆切片将与前后序切片关联,切片判断逻辑将交给MemoryManager
2025-04-14 20:04:50 +08:00
6f643b525f feat(memory): 增加记忆缓存功能并优化数据结构- 新增 memorySliceCache 和 memoryNodeCacheCounter 用于缓存记忆切片
- 优化数据结构,使用 ConcurrentHashMap 和 CopyOnWriteArrayList 替代 HashMap 和 ArrayList
- 为 MemoryNode 添加唯一标识 memoryNodeId,可作为记忆节点文件名
- 更新 selectMemoryByPath 方法,增加缓存逻辑
- 修改 updateDialogMap 方法,优化用户对话缓存更新逻辑
2025-04-12 15:26:13 +08:00
ae4859004f - 新增 PersistableObject 抽象类以统一持久化对象
- 修改 MemoryGraph、MemoryNode、MemorySlice 和 TopicNode 继承 PersistableObject
- 添加 serialVersionUID 以保证序列化兼容性
2025-04-11 22:02:07 +08:00
c28979b495 feat(memory): 实现记忆切片持久化并优化记忆存储结构- 新增 ChatClient 类实现与大模型的交互
- 添加了chat包,用于后续大模型对接
- 更新 MemoryGraph 类,增加用户对话缓存和当前对话压缩上下文
- 修改 MemoryNode 类,实现记忆切片的序列化和反序列化
- 更新 MemorySlice 类,增加多用户相关字段和方法,将切片内容从SliceData移动至MemorySlice
- 删除未使用的 SliceData 类
- 添加日志依赖和异常处理,新的异常类NullSliceListException
2025-04-11 21:50:11 +08:00
24d4510270 添加dateIndex(记忆切片的日期索引)、dialogMap(近期对话缓存)、staticMemory(确定性记忆)等字段,并实现相关更新操作;
调整了MemorySlice中的部分结构;
添加了必要的注释;
2025-04-10 17:51:01 +08:00
d75f83b1a2 实现了MemoryGraph的查找功能,包含目标记忆节点、邻近记忆节点的查找,并编通过AI写了测试用例 2025-04-09 23:20:47 +08:00
cad3af346f 实现了MemoryGraph的序列化/反序列化;
实现了MemoryGraph的插入功能;
2025-04-08 22:31:48 +08:00