Skip to main content
Glama

MemOS-MCP

by qinshu1109
Apache 2.0
3
  • Linux
  • Apple
4行补丁实施错误日志详细分析.md6.68 kB
# 4行止血补丁实施错误日志详细分析 ## 🚨 错误概览 ### 核心错误信息 ``` ImportError: cannot import name 'OllamaLLM' from 'memos.llms.factory' (/home/qqinshu/视频/MemOS/src/memos/llms/factory.py) ``` ### 错误发生位置 ``` File: /src/memos/memories/textual/tree_text_memory/organize/manager.py:8 Code: from memos.llms.factory import OllamaLLM, OpenAILLM ``` ## 📋 完整错误堆栈跟踪 ### 错误1: test_simple_expert_patch.py执行失败 ``` Traceback (most recent call last): File "/home/qqinshu/视频/MemOS/test_simple_expert_patch.py", line 27, in test_simple_expert_patch from memos.memories.factory import MemoryFactory File "/home/qqinshu/视频/MemOS/src/memos/__init__.py", line 10, in <module> from memos.mem_scheduler.general_scheduler import GeneralScheduler File "/home/qqinshu/视频/MemOS/src/memos/mem_scheduler/general_scheduler.py", line 10, in <module> from memos.mem_scheduler.modules.monitor import SchedulerMonitor File "/home/qqinshu/视频/MemOS/src/memos/mem_scheduler/modules/monitor.py", line 9, in <module> from memos.memories.textual.tree import TreeTextMemory File "/home/qqinshu/视频/MemOS/src/memos/memories/textual/tree.py", line 17, in <module> from memos.memories.textual.tree_text_memory.organize.manager import MemoryManager File "/home/qqinshu/视频/MemOS/src/memos/memories/textual/tree_text_memory/organize/manager.py", line 8, in <module> from memos.llms.factory import OllamaLLM, OpenAILLM ImportError: cannot import name 'OllamaLLM' from 'memos.llms.factory' (/home/qqinshu/视频/MemOS/src/memos/llms/factory.py) ``` ### 导入链分析 ``` 1. test_simple_expert_patch.py 2. → memos.memories.factory 3. → memos.__init__.py 4. → memos.mem_scheduler.general_scheduler 5. → memos.mem_scheduler.modules.monitor 6. → memos.memories.textual.tree 7. → memos.memories.textual.tree_text_memory.organize.manager 8. → memos.llms.factory (直接导入OllamaLLM) ❌ ``` ## 🔍 已发现的问题文件清单 ### 1. tree_text_memory模块系统 #### manager.py ```python # 文件: src/memos/memories/textual/tree_text_memory/organize/manager.py:8 # 问题代码: from memos.llms.factory import OllamaLLM, OpenAILLM # 需要修复为: from memos.llms.factory import LLMFactory ``` #### 其他可能的tree_text_memory文件 - 需要系统性检查整个tree_text_memory目录 - 可能涉及多个子模块文件 ### 2. memories/textual模块 #### general.py ```python # 文件: src/memos/memories/textual/general.py:1 # 问题代码: from memos.llms.factory import LLMFactory, OllamaLLM, OpenAILLM # 已修复为: from memos.llms.factory import LLMFactory ``` **状态**: ✅ 已修复 #### tree.py ```python # 文件: src/memos/memories/textual/tree.py:13 # 问题代码: from memos.llms.factory import LLMFactory, OllamaLLM, OpenAILLM # 已修复为: from memos.llms.factory import LLMFactory ``` **状态**: ✅ 已修复 ### 3. mem_scheduler模块 #### monitor.py ```python # 文件: src/memos/mem_scheduler/modules/monitor.py:9 # 可能的问题代码: from memos.memories.textual.tree import TreeTextMemory # 这个导入触发了tree.py的导入链 ``` ## 📊 问题文件统计 ### ✅ 已修复的文件 (4个) 1. `src/memos/__init__.py` - 移除MOS导入 2. `src/memos/llms/factory.py` - 延迟导入机制 3. `src/memos/memories/textual/general.py` - 移除直接导入 4. `src/memos/memories/textual/tree.py` - 移除直接导入 ### ❌ 待修复的文件 (已发现) 1. `src/memos/memories/textual/tree_text_memory/organize/manager.py` 2. 可能还有更多tree_text_memory子模块文件 ### ⚠️ 需要排查的目录 1. `src/memos/memories/textual/tree_text_memory/` - 整个目录 2. `src/memos/mem_scheduler/modules/` - 相关模块 3. 其他可能的模块 ## 🔧 修复模式分析 ### 标准修复模式 #### 模式1: 简单导入替换 ```python # BEFORE from memos.llms.factory import OllamaLLM, OpenAILLM # AFTER from memos.llms.factory import LLMFactory ``` #### 模式2: 类型注解修复 ```python # BEFORE self.llm: OllamaLLM | OpenAILLM = LLMFactory.from_config(config) # AFTER self.llm = LLMFactory.from_config(config) # 或者 from memos.llms.base import BaseLLM self.llm: BaseLLM = LLMFactory.from_config(config) ``` #### 模式3: 实例化逻辑调整 ```python # BEFORE if isinstance(self.llm, OllamaLLM): # 特定逻辑 # AFTER if self.llm.backend == "ollama": # 特定逻辑 ``` ### 批量修复策略 #### 方案1: 手动逐个修复 - 优点: 精确控制,不会遗漏 - 缺点: 工作量大,容易出错 #### 方案2: 正则表达式批量替换 ```bash # 查找所有直接导入 grep -r "from memos.llms.factory import.*OllamaLLM" src/ # 批量替换(需要谨慎) sed -i 's/from memos.llms.factory import.*/from memos.llms.factory import LLMFactory/' src/**/*.py ``` #### 方案3: AST解析自动重构 - 使用Python AST库进行智能重构 - 可以处理复杂的类型注解和逻辑 ## 🎯 修复优先级建议 ### P0 - 立即修复 (阻塞测试) 1. `tree_text_memory/organize/manager.py` - 当前错误的直接原因 2. 其他tree_text_memory模块中的直接导入 ### P1 - 高优先级 (影响集成) 1. mem_scheduler相关模块 2. 其他memories子模块 ### P2 - 中优先级 (完善性) 1. 类型注解的统一修复 2. 测试文件的相应调整 ## 🚀 建议的修复流程 ### 阶段1: 快速止血 (2小时) 1. 修复manager.py的直接导入 2. 系统性检查tree_text_memory目录 3. 验证基础测试可以通过 ### 阶段2: 系统性修复 (1天) 1. 批量修复所有直接导入 2. 统一处理类型注解 3. 完善测试覆盖 ### 阶段3: 验证和优化 (半天) 1. 全面测试验证 2. 性能和稳定性检查 3. 文档更新 ## 📋 需要专家确认的问题 ### 1. 修复范围确认 - 是否需要修复所有发现的直接导入? - 类型注解的处理标准是什么? ### 2. 修复方法选择 - 手动修复 vs 自动化工具? - 是否有推荐的重构工具? ### 3. 测试策略 - 如何确保修复不破坏现有功能? - 是否需要增加回归测试? ### 4. 时间预算 - 1-2天的修复时间是否可接受? - 是否影响后续任务的时间安排? ## 💡 当前状态总结 **专家的4行补丁策略完全正确,但MemOS项目的实际耦合程度需要扩展为"系统性解耦补丁"。** - ✅ 核心策略有效 - 延迟导入机制工作正常 - ⚠️ 范围需要扩展 - 从4个文件扩展到15-20个文件 - 🎯 目标明确 - 彻底解决MemOS架构过度耦合问题 **等待专家指导具体的批量修复策略和项目管理决策。**

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/qinshu1109/memos-MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server