[论文解读]OpenWGL: Open-World Graph Learning

本文提出了开放世界图学习(OpenWGL)的新范式,针对图节点分类任务,不仅识别可见类节点,还能检测不可见类节点。通过不确定节点表示学习,使用变分图自动编码器结合标签损失和类不确定性损失,以区分节点所属类别。实验展示了在真实网络上,该方法优于基线方法,能够有效地拒绝不属于可见类的节点。

原文链接:OpenWGL: Open-World Graph Learning | IEEE Conference Publication | IEEE Xplore 

摘要

在传统的图学习任务(如节点分类)中,学习是在一个封闭的环境中进行的,其中提供了类的数量及其训练样本来帮助训练模型,学习目标是将未标记的节点正确地分类到已知的类中。事实上,由于网络的标记能力有限和动态演化,网络中的一些节点可能不属于任何现有/可见类,因此无法通过封闭世界学习算法进行正确分类。本文提出了一种新的开放世界图学习范式,其学习目标不仅是将属于可见类的节点分类为正确的组,而且将不属于现有类的节点分类为不可见类。开放世界图学习的基本挑战是:(1)看不见的类没有带标签的样本,并且可能以不同于现有可见类的任意形式存在;(2)图特征学习和预测都应该区分节点可能属于现有/可见类还是不可见类。为了应对这些挑战,提出了一种不确定节点表示学习方法,使用约束变分图自动编码网络,其中标签损失和类不确定性损失约束用于确保节点表示学习对看不见的类敏感。因此,节点嵌入特征由分布表示,而不是确定性特征向量。通过使用采样过程生成多个版本的特征向量,能够测试属于可见类的节点的确定性,并自动确定一个阈值,将不属于可见类的节点拒绝为不可见类节点。在真实网络上的实验证明了该算法的性能,并与基线进行了比较。

1. INTRODUCTION

为了开发适用于不同类型节点分类任务的可靠高效的算法,人们进行了大量的研究工作。然而,现有的方法主要在“封闭世界”环境中进行学习,其中测试数据中的节点必须属于训练过程中已经见过的一个或多个类。因此,当测试集中出现新的/没见过的类别节点时,分类器无法检测到新的/没见过的类,并错误地将节点分类为训练数据中的可见/学习到的类。

事实上,新类不断出现,一个无法检测到这些新的/没有见过的类的模型很难在动态环境中正常工作。这个问题被称为开放世界分类或开集分类问题。新的“开放世界”学习(OWL)范式不仅可以识别属于以前已经见过/学习过的类的对象,还可以检测以前没有见过的新类样本。

有几种方法,如one-class SVM,可以通过将所有可见类视为正类来调整以解决开放世界学习问题,但它们无法区分可见类中的实例,并且通常在查找不可见类时表现不佳,因为没有使用负数据。迄今为止,开放世界学习在自然语言处理(NLP)和计算机视觉领域有了广泛的研究。在NLP领域,Shu等人提出了开放世界学习的解决方案,通过在sigmoid函数之前设置阈值来拒绝看不见的类。在计算机视觉中,Scheirer等人研究了通过减少具有正区域的二值SVM分类器的半空间来识别不在训练数据中的未见过图像的问题。

给定一个由可见类和不可见类节点组成的图,开放世界图学习的目标是构建一个分类器,将属于可见类的节点分类为正确的类别,并将不属于任何可见类的节点检测为不可见类。图1显示出了用于图节点分类的开放世界学习的示例。

目前,现有的开放世界学习解决方案主要集中在文档或图像上,无法直接应用于图结构数据和图学习任务,因为它们无法对节点分类的核心图结构信息进行建模。

图学习的挑战在于,图具有节点内容和结构信息。此外,现有的节点分类任务解决方案都是基于封闭世界假设,即测试数据中出现的类必须在训练中出现。例如,图卷积网络(GCN)的基本思想是开发一个卷积层来利用图的结构信息,并使用分类损失函数来指导分类任务。然而,它们直接使用softmax作为最终输出层,因为每个类的预测概率在所有训练/看到的类中都是标准化的,所以它对看不见的类节点没有拒绝能力。此外,在表示学习方面,现有的大多数图学习方法都采用特征工程或深度学习来提取特征向量。然而,这些模型只能生成确定性映射来捕获节点的潜在特征。它们的一个主要限制是无法表示由不完整或有限的可用数据引起的不确定性。 

在本文中,提出了研究图数据的开放世界学习。考虑到复杂的图数据结构和节点分类任务,总结了以下主要挑战:

  • 挑战1:如何在图中设计一个端到端的开放世界图学习框架,其中看不见的类没有带标签的样本,并且可能以不同于看到的类的任意形式存在。现有的图神经网络(GNN)是基于封闭世界假设构建的典型网络,无法检测出看不见的类。
  • 挑战2:如何对节点表示的不确定性进行建模,并提高图形的稳健性。许多现有的基于GNN的方法只生成确定性映射来捕获节点的潜在特征。

为了克服上述挑战,本文提出了一种新的用于节点分类任务的开放世界图学习范式(OpenWGL)。对于挑战1,采用了两个损失约束(标签损失和类不确定性损失),以确保节点表示学习对不可见类敏感,并帮助模型区分节点是属于现有/可见类还是不可见类。图2中的实验可视化了一个测试数据集,可以说明本文的方法的有效性。在图2(a)中,仅使用标签损失(交叉熵损失),它在现有/可见类节点上具有良好的性能,但看不见的类节点无法区分,将随机分类为可见类。在图2(b)中,引入了一个类不确定性损失约束,它可以降低不可见类节点被分类为可见类的概率,因此有助于检测不可见类节点,而不会影响可见类节点的分类。对于挑战2,本文不学习确定性节点特征向量,而是利用图变分自动编码器模块学习潜在分布来表示每个节点。在分类阶段,使用一种新的采样过程来生成多个版本的特征向量,以测试属于可见类的节点的确定性,并自动确定阈值,拒绝不属于可见类的节点。

本文的贡献可以总结如下:

  • 为图结构数据制定了一个新的开放世界学习问题,并提出了一个新的深度学习模型OpenWGL作为解决方案;
  • 提出了一种不确定节点表示学习方法,通过使用标签损失和类不确定损失来约束变分图自动编码器学习对不可见类敏感的节点表示
  • 提出使用抽样过程来测试属于可见类的节点的确定性,并自动确定一个阈值,将不属于可见类的节点拒绝为不可见类节点
  • 在基准图数据集上的实验表明,本文的方法优于基线方法。

2. RELATED WORK

2.1 Open-World Learning

开放世界学习旨在识别学习以前见过的类别,并发现从未见过的新类别。有一些开放世界学习的早期探索:Scholkopf等人采用one-class SVM作为分类器,由于没有使用负样本,因此表现出较差的性能。Fei和Liu提出了一种基于中心的相似度(CBS)空间学习方法,该方法首先为每个类计算一个中心,并将每个文档转换为中心的相似度向量。Fei等人然后通过增加增量或累积学习新类的能力来扩展他们的工作。

最近,开放世界学习在自然语言处理和计算机视觉(称为开放集识别)中得到了研究。在NLP中,Shu等人提出了开放世界学习的深度学习解决方案,通过在sigmoid函数之前设置阈值来拒绝看不见的类。Xu等人提出了一种新的基于元学习的开放世界学习模型,该模型允许添加或删除新的类别,而无需重新训练模型。在计算机视觉中,Scheirer等人研究了通过减少具有正区域的二值SVM分类器的半空间来识别不在训练数据中的未见过图像的问题。在[7]和[8]中,Scheirer等人利用概率阈值来检测新类,而他们的模型由于缺乏先验知识而很弱。

2.2 Emerging Class and Outlier Detection

本文的研究还涉及监督学习中的新类检测,如流数据挖掘和多实例学习,以及离群点检测。
在监督学习中,假设实例至少属于预定义类中的一个,并且训练分类器来学习以将样本分类到已知类中。当一个类在训练分类器时未知或不可用时,在测试阶段,理想的分类器预计能够检测到新出现的类。检测新类别样本的常见解决方案是使用决策阈值来给出置信度得分,包括多层神经网络来增加阈值,并且置信度低于阈值的样本被识别为新类别。不幸的是,仅仅增加阈值就会使现有的类样本被错误分类。
另一方面,异常值检测旨在检测异常偏离基础数据的数据实例。提出了一些基于距离的孤立点检测方法,如单类支持向量机,其中通过找到一个包含正常数据样本的超球体来获得正常数据域。最近的一种方法提出从数据流中检测异常值,但没有解决通过异常值检测新类的问题。

2.3 Graph Neural Networks

图神经网络(

PowerShell 7 环境已加载 (版本: 7.5.2) PS C:\Users\Administrator\Desktop> cd E:\AI_System PS E:\AI_System> python -m venv venv PS E:\AI_System> source venv/bin/activate # Linux/Mac source: The term 'source' is not recognized as a name of a cmdlet, function, script file, or executable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again. PS E:\AI_System> venv\Scripts\activate # Windows (venv) PS E:\AI_System> pip install -r requirements.txt Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple Requirement already satisfied: accelerate==0.27.2 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 1)) (0.27.2) Requirement already satisfied: aiofiles==23.2.1 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 2)) (23.2.1) Requirement already satisfied: aiohttp==3.9.3 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 3)) (3.9.3) Requirement already satisfied: aiosignal==1.4.0 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 4)) (1.4.0) Requirement already satisfied: altair==5.5.0 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 5)) (5.5.0) Requirement already satisfied: annotated-types==0.7.0 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 6)) (0.7.0) Requirement already satisfied: ansicon==1.89.0 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 7)) (1.89.0) Requirement already satisfied: anyio==4.10.0 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 8)) (4.10.0) Requirement already satisfied: async-timeout==4.0.3 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 9)) (4.0.3) Requirement already satisfied: attrs==25.3.0 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 10)) (25.3.0) Requirement already satisfied: bidict==0.23.1 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 11)) (0.23.1) Requirement already satisfied: blessed==1.21.0 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 12)) (1.21.0) Requirement already satisfied: blinker==1.9.0 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 13)) (1.9.0) Requirement already satisfied: certifi==2025.8.3 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 14)) (2025.8.3) Requirement already satisfied: cffi==1.17.1 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 15)) (1.17.1) Requirement already satisfied: charset-normalizer==3.4.3 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 16)) (3.4.3) Requirement already satisfied: click==8.2.1 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 17)) (8.2.1) Requirement already satisfied: colorama==0.4.6 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 18)) (0.4.6) Requirement already satisfied: coloredlogs==15.0.1 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 19)) (15.0.1) Requirement already satisfied: contourpy==1.3.2 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 20)) (1.3.2) Requirement already satisfied: cryptography==42.0.4 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 21)) (42.0.4) Requirement already satisfied: cycler==0.12.1 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 22)) (0.12.1) Requirement already satisfied: diffusers==0.26.3 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 23)) (0.26.3) Requirement already satisfied: distro==1.9.0 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 24)) (1.9.0) Requirement already satisfied: exceptiongroup==1.3.0 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 25)) (1.3.0) Requirement already satisfied: fastapi==0.116.1 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 26)) (0.116.1) Requirement already satisfied: ffmpy==0.6.1 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 27)) (0.6.1) Requirement already satisfied: filelock==3.19.1 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 28)) (3.19.1) Requirement already satisfied: Flask==3.0.2 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 29)) (3.0.2) Requirement already satisfied: Flask-SocketIO==5.3.6 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 30)) (5.3.6) Requirement already satisfied: flatbuffers==25.2.10 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 31)) (25.2.10) Requirement already satisfied: fonttools==4.59.1 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 32)) (4.59.1) Requirement already satisfied: frozenlist==1.7.0 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 33)) (1.7.0) Requirement already satisfied: fsspec==2025.7.0 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 34)) (2025.7.0) Requirement already satisfied: gpustat==1.1 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 35)) (1.1) Requirement already satisfied: gradio==4.19.2 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 36)) (4.19.2) Requirement already satisfied: gradio_client==0.10.1 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 37)) (0.10.1) Requirement already satisfied: h11==0.16.0 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 38)) (0.16.0) Requirement already satisfied: httpcore==1.0.9 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 39)) (1.0.9) Requirement already satisfied: httpx==0.28.1 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 40)) (0.28.1) Requirement already satisfied: huggingface-hub==0.21.3 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 41)) (0.21.3) Requirement already satisfied: humanfriendly==10.0 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 42)) (10.0) Requirement already satisfied: idna==3.10 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 43)) (3.10) Requirement already satisfied: importlib_metadata==8.7.0 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 44)) (8.7.0) Requirement already satisfied: importlib_resources==6.5.2 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 45)) (6.5.2) Requirement already satisfied: itsdangerous==2.2.0 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 46)) (2.2.0) Requirement already satisfied: Jinja2==3.1.6 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 47)) (3.1.6) Requirement already satisfied: jinxed==1.3.0 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 48)) (1.3.0) Requirement already satisfied: jsonschema==4.25.1 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 49)) (4.25.1) Requirement already satisfied: jsonschema-specifications==2025.4.1 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 50)) (2025.4.1) Requirement already satisfied: kiwisolver==1.4.9 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 51)) (1.4.9) Requirement already satisfied: loguru==0.7.2 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 52)) (0.7.2) Requirement already satisfied: markdown-it-py==4.0.0 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 53)) (4.0.0) Requirement already satisfied: MarkupSafe==2.1.5 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 54)) (2.1.5) Requirement already satisfied: matplotlib==3.10.5 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 55)) (3.10.5) Requirement already satisfied: mdurl==0.1.2 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 56)) (0.1.2) Requirement already satisfied: mpmath==1.3.0 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 57)) (1.3.0) Requirement already satisfied: multidict==6.6.4 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 58)) (6.6.4) Requirement already satisfied: narwhals==2.1.2 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 59)) (2.1.2) Requirement already satisfied: networkx==3.4.2 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 60)) (3.4.2) Requirement already satisfied: numpy==1.26.3 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 61)) (1.26.3) Requirement already satisfied: nvidia-ml-py==13.580.65 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 62)) (13.580.65) Requirement already satisfied: onnxruntime==1.17.1 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 63)) (1.17.1) Requirement already satisfied: openai==1.13.3 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 64)) (1.13.3) Requirement already satisfied: orjson==3.11.2 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 65)) (3.11.2) Requirement already satisfied: packaging==25.0 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 66)) (25.0) Requirement already satisfied: pandas==2.1.4 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 67)) (2.1.4) Requirement already satisfied: pillow==10.4.0 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 68)) (10.4.0) Requirement already satisfied: prettytable==3.16.0 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 69)) (3.16.0) Requirement already satisfied: propcache==0.3.2 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 70)) (0.3.2) Requirement already satisfied: protobuf==6.32.0 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 71)) (6.32.0) Requirement already satisfied: psutil==5.9.7 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 72)) (5.9.7) Requirement already satisfied: pycparser==2.22 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 73)) (2.22) Requirement already satisfied: pydantic==2.11.7 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 74)) (2.11.7) Requirement already satisfied: pydantic_core==2.33.2 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 75)) (2.33.2) Requirement already satisfied: pydub==0.25.1 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 76)) (0.25.1) Requirement already satisfied: Pygments==2.19.2 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 77)) (2.19.2) Requirement already satisfied: pyparsing==3.2.3 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 78)) (3.2.3) Requirement already satisfied: pyreadline3==3.5.4 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 79)) (3.5.4) Requirement already satisfied: python-dateutil==2.9.0.post0 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 80)) (2.9.0.post0) Requirement already satisfied: python-dotenv==1.0.1 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 81)) (1.0.1) Requirement already satisfied: python-engineio==4.12.2 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 82)) (4.12.2) Requirement already satisfied: python-multipart==0.0.20 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 83)) (0.0.20) Requirement already satisfied: python-socketio==5.13.0 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 84)) (5.13.0) Requirement already satisfied: pytz==2025.2 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 85)) (2025.2) Requirement already satisfied: pywin32==306 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 86)) (306) Requirement already satisfied: PyYAML==6.0.2 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 87)) (6.0.2) Requirement already satisfied: redis==5.0.3 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 88)) (5.0.3) Requirement already satisfied: referencing==0.36.2 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 89)) (0.36.2) Requirement already satisfied: regex==2025.7.34 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 90)) (2025.7.34) Requirement already satisfied: requests==2.31.0 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 91)) (2.31.0) Requirement already satisfied: rich==14.1.0 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 92)) (14.1.0) Requirement already satisfied: rpds-py==0.27.0 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 93)) (0.27.0) Requirement already satisfied: ruff==0.12.10 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 94)) (0.12.10) Requirement already satisfied: safetensors==0.4.2 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 95)) (0.4.2) Requirement already satisfied: semantic-version==2.10.0 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 96)) (2.10.0) Requirement already satisfied: shellingham==1.5.4 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 97)) (1.5.4) Requirement already satisfied: simple-websocket==1.1.0 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 98)) (1.1.0) Requirement already satisfied: six==1.17.0 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 99)) (1.17.0) Requirement already satisfied: sniffio==1.3.1 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 100)) (1.3.1) Requirement already satisfied: starlette==0.47.2 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 101)) (0.47.2) Requirement already satisfied: sympy==1.14.0 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 102)) (1.14.0) Requirement already satisfied: tokenizers==0.15.2 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 103)) (0.15.2) Requirement already satisfied: tomlkit==0.12.0 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 104)) (0.12.0) Requirement already satisfied: torch==2.1.2 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 105)) (2.1.2) Requirement already satisfied: tqdm==4.67.1 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 106)) (4.67.1) Requirement already satisfied: transformers==4.37.0 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 107)) (4.37.0) Requirement already satisfied: typer==0.16.1 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 108)) (0.16.1) Requirement already satisfied: typing-inspection==0.4.1 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 109)) (0.4.1) Requirement already satisfied: typing_extensions==4.14.1 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 110)) (4.14.1) Requirement already satisfied: tzdata==2025.2 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 111)) (2025.2) Requirement already satisfied: urllib3==2.5.0 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 112)) (2.5.0) Requirement already satisfied: uvicorn==0.35.0 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 113)) (0.35.0) Requirement already satisfied: waitress==2.1.2 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 114)) (2.1.2) Requirement already satisfied: wcwidth==0.2.13 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 115)) (0.2.13) Requirement already satisfied: websockets==11.0.3 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 116)) (11.0.3) Requirement already satisfied: Werkzeug==3.1.3 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 117)) (3.1.3) Requirement already satisfied: win32_setctime==1.2.0 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 118)) (1.2.0) Requirement already satisfied: wsproto==1.2.0 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 119)) (1.2.0) Requirement already satisfied: yarl==1.20.1 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 120)) (1.20.1) Requirement already satisfied: zipp==3.23.0 in e:\ai_system\venv\lib\site-packages (from -r requirements.txt (line 121)) (3.23.0) WARNING: typer 0.16.1 does not provide the extra 'all' [notice] A new release of pip available: 22.3.1 -> 25.2 [notice] To update, run: python.exe -m pip install --upgrade pip (venv) PS E:\AI_System> python diagnose_modules.py ============================================================ 模块文件诊断报告 ============================================================ 🔍 检查 CognitiveSystem 模块: 预期路径: E:\AI_System\agent\cognitive_architecture.py ✅ 文件存在 ✅ 找到类定义: class CognitiveSystem ✅ 类继承CognitiveModule ✅ 找到__init__方法 📋 初始化方法: def __init__(self, name: str, model_manager, config: dict = None): 🔍 检查 EnvironmentInterface 模块: 预期路径: E:\AI_System\agent\environment_interface.py ✅ 文件存在 ✅ 找到类定义: class EnvironmentInterface ✅ 类继承CognitiveModule ✅ 找到__init__方法 📋 初始化方法: def __init__( 🔍 检查 AffectiveSystem 模块: 预期路径: E:\AI_System\agent\affective_system.py ✅ 文件存在 ✅ 找到类定义: class AffectiveSystem ✅ 类继承CognitiveModule ✅ 找到__init__方法 📋 初始化方法: def __init__(self, coordinator=None, config=None): ============================================================ 建议解决方案: ============================================================ 1. 检查每个模块文件中的相对导入语句 2. 确保每个模块类都正确继承CognitiveModule 3. 检查初始化方法的参数是否正确 4. 确保模块内部的导入使用绝对路径或正确处理相对导入 5. 考虑使用try-catch包装模块内部的导入语句 (venv) PS E:\AI_System> python test_core_import.py E:\Python310\python.exe: can't open file 'E:\\AI_System\\test_core_import.py': [Errno 2] No such file or directory (venv) PS E:\AI_System> python diagnose_architecture.py ============================================================ AI系统架构诊断报告 ============================================================ 1. 模块文件检查: ---------------------------------------- ✅ CognitiveSystem: E:\AI_System\agent\cognitive_architecture.py ✅ EnvironmentInterface: E:\AI_System\agent\environment_interface.py ✅ AffectiveSystem: E:\AI_System\agent\affective_system.py 2. Agent目录结构 (E:\AI_System\agent): ---------------------------------------- 📄 action_executor.py 📁 affective_modules/ 📄 affective_system.py 📄 agent_core.log 📄 agent_core.py 📄 autonomous_agent.py 📄 auto_backup.bat 📄 base_module.py 📄 cognitive_architecture.py 📁 cognitive_system/ 📄 communication_system.py 📁 concrete_modules/ 📁 config/ 📄 conscious_framework.py 📁 conscious_system/ 📁 decision_system/ 📄 diagnostic_system.py 📄 enhanced_cognitive.py 📄 environment.py 📄 environment_interface.py 📄 env_loader.py 📁 generated_images/ 📄 health_monitor.py 📄 health_system.py 📄 knowledge graph.db 📁 knowledge_system/ 📄 main.py 📄 maintain_workspace.py 📄 memory_manager.py 📁 memory_system/ 📄 meta_cognition.py 📄 minimal_model.py 📁 models/ 📄 model_learning.py 📄 model_manager.py 📄 notepad 📄 performance_monitor.py 📄 pip 📄 security_manager.py 📄 self_growth.bat 📄 shortcut_resolver.py 📄 system_maintain.bat 📁 tests/ 📄 test_my_models.py 📁 text_results/ 📄 unified_learning.py 📁 utils/ 📁 web_scripts/ 📁 web_ui/ 📄 world_view.py 📄 __init__.py 📁 __pycache__/ 3. 建议下一步: ---------------------------------------- 📍 所有模块文件都存在,需要检查模块实现内容 诊断完成 (venv) PS E:\AI_System> python main.py 2025-08-30 22:33:19,696 - [INFO] - Main - 日志系统初始化完成 (级别: INFO) 2025-08-30 22:33:19,696 - [INFO] - Main - 日志文件位置: E:AI_Workspace\logs\system_20250830_223319.log 2025-08-30 22:33:19,696 - [INFO] - Main - ================================================== 2025-08-30 22:33:19,696 - [INFO] - Main - 🌟 启动AI系统 - 弹性星型架构 2025-08-30 22:33:19,697 - [INFO] - Main - 🚀 工作空间: E:AI_Workspace 2025-08-30 22:33:19,697 - [INFO] - Main - 📂 项目目录: E:\AI_System 2025-08-30 22:33:19,697 - [INFO] - Main - 🐍 Python版本: 3.10.10 (tags/v3.10.10:aad5f6a, Feb 7 2023, 17:20:36) [MSC v.1929 64 bit (AMD64)] 2025-08-30 22:33:19,697 - [INFO] - Main - 🖥️ 操作系统: win32 2025-08-30 22:33:19,697 - [INFO] - Main - ================================================== 2025-08-30 22:33:19 - ModelManager - INFO - 🚀 初始化模型管理器... 2025-08-30 22:33:19,697 - [INFO] - ModelManager - 🚀 初始化模型管理器... 2025-08-30 22:33:19,702 - [INFO] - PathUtils - 🔗 解析快捷方式: E:\AI_Workspace\01_模型存储\主模型.lnk -> E:\AI_Models 2025-08-30 22:33:19,702 - [ERROR] - PathUtils - ❌ 快捷方式解析失败: E:\AI_Workspace\01_模型存储\主模型.lnk - (-2147352567, '发生意外。', (0, 'WshShell.CreateShortcut', '快捷方式路径名称需以 .lnk 或 .url 结尾。', None, 0, -2147352567), None) 2025-08-30 22:33:19,703 - [INFO] - PathUtils - 🔗 解析快捷方式: E:\AI_Workspace\01_模型存储\模型.lnk -> 2025-08-30 22:33:19,703 - [ERROR] - PathUtils - ❌ 快捷方式解析失败: E:\AI_Workspace\01_模型存储\模型.lnk - (-2147352567, '发生意外。', (0, 'WshShell.CreateShortcut', '快捷方式路径名称需以 .lnk 或 .url 结尾。', None, 0, -2147352567), None) 2025-08-30 22:33:19,704 - [INFO] - PathUtils - 🔗 解析快捷方式: E:\AI_Workspace\模型存储\主模型.lnk -> 2025-08-30 22:33:19,704 - [ERROR] - PathUtils - ❌ 快捷方式解析失败: E:\AI_Workspace\模型存储\主模型.lnk - (-2147352567, '发生意外。', (0, 'WshShell.CreateShortcut', '快捷方式路径名称需以 .lnk 或 .url 结尾。', None, 0, -2147352567), None) 2025-08-30 22:33:19 - ModelManager - INFO - 📁 使用现有模型目录: E:\AI_Models 2025-08-30 22:33:19,704 - [INFO] - ModelManager - 📁 使用现有模型目录: E:\AI_Models 2025-08-30 22:33:19 - ModelManager - INFO - ✅ 模型根目录设置为: E:\AI_Models 2025-08-30 22:33:19,704 - [INFO] - ModelManager - ✅ 模型根目录设置为: E:\AI_Models 2025-08-30 22:33:19 - ModelManager - INFO - 📋 成功加载模型注册表: E:\AI_System\model_registry.json 2025-08-30 22:33:19,708 - [INFO] - ModelManager - 📋 成功加载模型注册表: E:\AI_System\model_registry.json 2025-08-30 22:33:19 - ModelManager - INFO - ✅ 模型注册表已保存 2025-08-30 22:33:19,708 - [INFO] - ModelManager - ✅ 模型注册表已保存 2025-08-30 22:33:19 - ModelManager - INFO - ✅ 模型管理器初始化完成 (GPU: 启用) 2025-08-30 22:33:19,708 - [INFO] - ModelManager - ✅ 模型管理器初始化完成 (GPU: 启用) 2025-08-30 22:33:19 - ModelManager - INFO - 已注册模型: ['TEXT_BASE', 'TEXT_CHAT', 'IMAGE_MODEL', 'MULTIMODAL', 'YI_VL'] 2025-08-30 22:33:19,708 - [INFO] - ModelManager - 已注册模型: ['TEXT_BASE', 'TEXT_CHAT', 'IMAGE_MODEL', 'MULTIMODAL', 'YI_VL'] 2025-08-30 22:33:19,708 - [INFO] - Main - ✅ 模型管理器初始化完成 2025-08-30 22:33:19 - ModelManager - INFO - ✅ 模型注册成功: TEXT_BASE (text) 2025-08-30 22:33:19,708 - [INFO] - ModelManager - ✅ 模型注册成功: TEXT_BASE (text) 2025-08-30 22:33:19 - ModelManager - INFO - ✅ 模型注册表已保存 2025-08-30 22:33:19,709 - [INFO] - ModelManager - ✅ 模型注册表已保存 2025-08-30 22:33:19,709 - [INFO] - Main - ✅ 注册成功: TEXT_BASE 2025-08-30 22:33:19 - ModelManager - INFO - ✅ 模型注册成功: TEXT_CHAT (text) 2025-08-30 22:33:19,709 - [INFO] - ModelManager - ✅ 模型注册成功: TEXT_CHAT (text) 2025-08-30 22:33:19 - ModelManager - INFO - ✅ 模型注册表已保存 2025-08-30 22:33:19,709 - [INFO] - ModelManager - ✅ 模型注册表已保存 2025-08-30 22:33:19,709 - [INFO] - Main - ✅ 注册成功: TEXT_CHAT 2025-08-30 22:33:19 - ModelManager - INFO - ✅ 模型注册成功: MULTIMODAL (multimodal) 2025-08-30 22:33:19,710 - [INFO] - ModelManager - ✅ 模型注册成功: MULTIMODAL (multimodal) 2025-08-30 22:33:19 - ModelManager - INFO - ✅ 模型注册表已保存 2025-08-30 22:33:19,710 - [INFO] - ModelManager - ✅ 模型注册表已保存 2025-08-30 22:33:19,710 - [INFO] - Main - ✅ 注册成功: MULTIMODAL 2025-08-30 22:33:21 - ModelManager - INFO - ✅ 模型注册成功: IMAGE_MODEL (image) 2025-08-30 22:33:21,967 - [INFO] - ModelManager - ✅ 模型注册成功: IMAGE_MODEL (image) 2025-08-30 22:33:21 - ModelManager - INFO - ✅ 模型注册表已保存 2025-08-30 22:33:21,967 - [INFO] - ModelManager - ✅ 模型注册表已保存 2025-08-30 22:33:21,969 - [INFO] - Main - ✅ 注册成功: IMAGE_MODEL 2025-08-30 22:33:24 - ModelManager - INFO - ✅ 模型注册成功: YI_VL (multimodal) 2025-08-30 22:33:24,164 - [INFO] - ModelManager - ✅ 模型注册成功: YI_VL (multimodal) 2025-08-30 22:33:24 - ModelManager - INFO - ✅ 模型注册表已保存 2025-08-30 22:33:24,165 - [INFO] - ModelManager - ✅ 模型注册表已保存 2025-08-30 22:33:24,165 - [INFO] - Main - ✅ 注册成功: YI_VL 2025-08-30 22:33:24,165 - [INFO] - Main - ✅ 已注册模型: ['TEXT_BASE', 'TEXT_CHAT', 'MULTIMODAL', 'IMAGE_MODEL', 'YI_VL'] 2025-08-30 22:33:24,166 - Module.EnvironmentInterface - INFO - ✅ 初始化认知模块: EnvironmentInterface 2025-08-30 22:33:24,166 - [INFO] - Module.EnvironmentInterface - ✅ 初始化认知模块: EnvironmentInterface 2025-08-30 22:33:24,167 - [INFO] - ShortcutUtils - 解析快捷方式: E:\AI_Workspace\01_模型存储/主模型.lnk -> E:\AI_Models 2025-08-30 22:33:24,168 - [INFO] - EnvironmentInterface - 映射工作区路径: MODELS_DIR -> E:\AI_Models 2025-08-30 22:33:24,169 - [INFO] - ShortcutUtils - 解析快捷方式: E:\AI_Workspace\01_模型存储/下载缓存.lnk -> E:\AI_Model_Downloads 2025-08-30 22:33:24,169 - [INFO] - EnvironmentInterface - 映射工作区路径: MODEL_DOWNLOADS -> E:\AI_Model_Downloads 2025-08-30 22:33:24,171 - [INFO] - ShortcutUtils - 解析快捷方式: E:\AI_Workspace\02_核心代码/Agent系统.lnk -> E:\AI_System\agent 2025-08-30 22:33:24,171 - [INFO] - EnvironmentInterface - 映射工作区路径: AGENT_SYSTEM -> E:\AI_System\agent 2025-08-30 22:33:24,172 - [INFO] - ShortcutUtils - 解析快捷方式: E:\AI_Workspace\02_核心代码/安全备份.lnk -> E:\AI_Agent_Safe 2025-08-30 22:33:24,172 - [INFO] - EnvironmentInterface - 映射工作区路径: BACKUP_CODE -> E:\AI_Agent_Safe 2025-08-30 22:33:24,173 - [INFO] - ShortcutUtils - 解析快捷方式: E:\AI_Workspace\03_前端交互/Python脚本.lnk -> E:\AI_System\agent\web_scripts 2025-08-30 22:33:24,175 - [INFO] - EnvironmentInterface - 映射工作区路径: PYTHON_SCRIPTS -> E:\AI_System\agent\web_scripts 2025-08-30 22:33:24,176 - [INFO] - ShortcutUtils - 解析快捷方式: E:\AI_Workspace\03_前端交互/前端代码.lnk -> E:\AI_System\agent\web_ui 2025-08-30 22:33:24,176 - [INFO] - EnvironmentInterface - 映射工作区路径: WEB_UI -> E:\AI_System\agent\web_ui 2025-08-30 22:33:24,177 - [INFO] - ShortcutUtils - 解析快捷方式: E:\AI_Workspace\03_前端交互/配置文件.lnk -> E:\AI_System\agent\config 2025-08-30 22:33:24,177 - [INFO] - EnvironmentInterface - 映射工作区路径: CONFIG_FILES -> E:\AI_System\agent\config 2025-08-30 22:33:24,179 - [INFO] - ShortcutUtils - 解析快捷方式: E:\AI_Workspace\04_环境工具/Python环境.lnk -> E:\Python310 2025-08-30 22:33:24,180 - [INFO] - EnvironmentInterface - 映射工作区路径: PYTHON_ENV -> E:\Python310 2025-08-30 22:33:24,180 - [INFO] - ShortcutUtils - 解析快捷方式: E:\AI_Workspace\04_环境工具/临时补丁.lnk -> E:\ai_temp 2025-08-30 22:33:24,180 - [INFO] - EnvironmentInterface - 映射工作区路径: TEMP_PATCHES -> E:\ai_temp 2025-08-30 22:33:24,182 - [INFO] - ShortcutUtils - 解析快捷方式: E:\AI_Workspace\05_数据记忆/记忆核心.lnk -> E:\AI记忆核心 2025-08-30 22:33:24,182 - [INFO] - EnvironmentInterface - 映射工作区路径: MEMORY_CORE -> E:\AI记忆核心 2025-08-30 22:33:24,183 - [INFO] - ShortcutUtils - 解析快捷方式: E:\AI_Workspace\06_历史备份/初始源码.lnk -> E:\AI_System\backup 2025-08-30 22:33:24,183 - [INFO] - EnvironmentInterface - 映射工作区路径: INITIAL_CODE -> E:\AI_System\backup 2025-08-30 22:33:24,184 - [INFO] - Orchestrator - ✅ 环境接口初始化成功 2025-08-30 22:33:24,184 - Module.DiagnosticSystem - INFO - ✅ 初始化认知模块: DiagnosticSystem 2025-08-30 22:33:24,184 - [INFO] - Module.DiagnosticSystem - ✅ 初始化认知模块: DiagnosticSystem 2025-08-30 22:33:24,184 - [INFO] - DiagnosticSystem - 🔗 初始化诊断系统: DiagnosticSystem 2025-08-30 22:33:24,184 - [INFO] - Orchestrator - ✅ 诊断系统初始化成功 2025-08-30 22:33:24,184 - [INFO] - Orchestrator - ✅ 星型协调器初始化完成 2025-08-30 22:33:24,184 - [INFO] - Main - ✅ 星型协调器初始化完成 2025-08-30 22:33:24,184 - Module.环境接口 - INFO - ✅ 初始化认知模块: 环境接口 2025-08-30 22:33:24,184 - [INFO] - Module.环境接口 - ✅ 初始化认知模块: 环境接口 2025-08-30 22:33:24,186 - [INFO] - ShortcutUtils - 解析快捷方式: E:\AI_Workspace\01_模型存储/主模型.lnk -> E:\AI_Models 2025-08-30 22:33:24,186 - [INFO] - EnvironmentInterface - 映射工作区路径: MODELS_DIR -> E:\AI_Models 2025-08-30 22:33:24,188 - [INFO] - ShortcutUtils - 解析快捷方式: E:\AI_Workspace\01_模型存储/下载缓存.lnk -> E:\AI_Model_Downloads 2025-08-30 22:33:24,188 - [INFO] - EnvironmentInterface - 映射工作区路径: MODEL_DOWNLOADS -> E:\AI_Model_Downloads 2025-08-30 22:33:24,190 - [INFO] - ShortcutUtils - 解析快捷方式: E:\AI_Workspace\02_核心代码/Agent系统.lnk -> E:\AI_System\agent 2025-08-30 22:33:24,190 - [INFO] - EnvironmentInterface - 映射工作区路径: AGENT_SYSTEM -> E:\AI_System\agent 2025-08-30 22:33:24,191 - [INFO] - ShortcutUtils - 解析快捷方式: E:\AI_Workspace\02_核心代码/安全备份.lnk -> E:\AI_Agent_Safe 2025-08-30 22:33:24,191 - [INFO] - EnvironmentInterface - 映射工作区路径: BACKUP_CODE -> E:\AI_Agent_Safe 2025-08-30 22:33:24,192 - [INFO] - ShortcutUtils - 解析快捷方式: E:\AI_Workspace\03_前端交互/Python脚本.lnk -> E:\AI_System\agent\web_scripts 2025-08-30 22:33:24,192 - [INFO] - EnvironmentInterface - 映射工作区路径: PYTHON_SCRIPTS -> E:\AI_System\agent\web_scripts 2025-08-30 22:33:24,194 - [INFO] - ShortcutUtils - 解析快捷方式: E:\AI_Workspace\03_前端交互/前端代码.lnk -> E:\AI_System\agent\web_ui 2025-08-30 22:33:24,194 - [INFO] - EnvironmentInterface - 映射工作区路径: WEB_UI -> E:\AI_System\agent\web_ui 2025-08-30 22:33:24,195 - [INFO] - ShortcutUtils - 解析快捷方式: E:\AI_Workspace\03_前端交互/配置文件.lnk -> E:\AI_System\agent\config 2025-08-30 22:33:24,196 - [INFO] - EnvironmentInterface - 映射工作区路径: CONFIG_FILES -> E:\AI_System\agent\config 2025-08-30 22:33:24,196 - [INFO] - ShortcutUtils - 解析快捷方式: E:\AI_Workspace\04_环境工具/Python环境.lnk -> E:\Python310 2025-08-30 22:33:24,196 - [INFO] - EnvironmentInterface - 映射工作区路径: PYTHON_ENV -> E:\Python310 2025-08-30 22:33:24,198 - [INFO] - ShortcutUtils - 解析快捷方式: E:\AI_Workspace\04_环境工具/临时补丁.lnk -> E:\ai_temp 2025-08-30 22:33:24,199 - [INFO] - EnvironmentInterface - 映射工作区路径: TEMP_PATCHES -> E:\ai_temp 2025-08-30 22:33:24,200 - [INFO] - ShortcutUtils - 解析快捷方式: E:\AI_Workspace\05_数据记忆/记忆核心.lnk -> E:\AI记忆核心 2025-08-30 22:33:24,200 - [INFO] - EnvironmentInterface - 映射工作区路径: MEMORY_CORE -> E:\AI记忆核心 2025-08-30 22:33:24,201 - [INFO] - ShortcutUtils - 解析快捷方式: E:\AI_Workspace\06_历史备份/初始源码.lnk -> E:\AI_System\backup 2025-08-30 22:33:24,201 - [INFO] - EnvironmentInterface - 映射工作区路径: INITIAL_CODE -> E:\AI_System\backup 2025-08-30 22:33:24,203 - Module.诊断系统 - INFO - ✅ 初始化认知模块: 诊断系统 2025-08-30 22:33:24,203 - [INFO] - Module.诊断系统 - ✅ 初始化认知模块: 诊断系统 2025-08-30 22:33:24,203 - [INFO] - DiagnosticSystem - 🔗 初始化诊断系统: 诊断系统 2025-08-30 22:33:24,203 - [INFO] - Main - ✅ 使用直接赋值方式注册模块 2025-08-30 22:33:24,203 - [INFO] - Main - ✅ 卫星模块初始化完成 2025-08-30 22:33:24,203 - [INFO] - Orchestrator - 🔗 模块连接成功: environment 2025-08-30 22:33:24,203 - [ERROR] - Orchestrator - ❌ 模块连接失败: diagnostic - 'CognitiveOrchestrator' object has no attribute 'name' Traceback (most recent call last): File "E:\AI_System\core\cognitive_orchestrator.py", line 75, in connect_modules module.set_orchestrator(self) File "E:\AI_System\agent\diagnostic_system.py", line 153, in set_orchestrator self.logger.info(f"🔗 连接到星型协调器: {orchestrator.name if orchestrator else None}") AttributeError: 'CognitiveOrchestrator' object has no attribute 'name' 2025-08-30 22:33:24,204 - [INFO] - Orchestrator - ✅ 星型架构模块连接完成 2025-08-30 22:33:24,204 - [INFO] - Main - ✅ 星型架构模块连接成功 2025-08-30 22:33:24,205 - [INFO] - Main - ✅ 找到模型路径: E:\AI_System\AI_Models\Qwen2-7B 2025-08-30 22:33:24 - ModelManager - INFO - 🔄 加载模型: TEXT_BASE (text) 2025-08-30 22:33:24,205 - [INFO] - ModelManager - 🔄 加载模型: TEXT_BASE (text) 2025-08-30 22:33:24 - ModelManager - INFO - 📝 加载文本模型: E:\AI_Models\Qwen2-7B 2025-08-30 22:33:24,205 - [INFO] - ModelManager - 📝 加载文本模型: E:\AI_Models\Qwen2-7B 2025-08-30 22:33:28 - ModelManager - INFO - 🔗 检测到分片模型,使用from_pretrained加载 2025-08-30 22:33:28,855 - [INFO] - ModelManager - 🔗 检测到分片模型,使用from_pretrained加载 Special tokens have been added in the vocabulary, make sure the associated word embeddings are fine-tuned or trained. Loading checkpoint shards: 100%|█████████████████████████████████████████████████████████| 4/4 [00:18<00:00, 4.56s/it] 2025-08-30 22:33:48 - ModelManager - INFO - ✅ 模型注册表已保存 2025-08-30 22:33:48,480 - [INFO] - ModelManager - ✅ 模型注册表已保存 2025-08-30 22:33:48 - ModelManager - INFO - ✅ 模型加载成功: TEXT_BASE 2025-08-30 22:33:48,481 - [INFO] - ModelManager - ✅ 模型加载成功: TEXT_BASE 2025-08-30 22:33:48,482 - [INFO] - Main - ✅ 基础模型加载成功: TEXT_BASE 2025-08-30 22:33:48,483 - [INFO] - CommandListener - 🔊 启动命令监听器 > 2025-08-30 22:33:48,501 - [INFO] - CommandListener - ✅ 命令监听器已就绪,输入 'help' 查看可用命令 > 2025-08-30 22:33:48,502 - [INFO] - Main - ✅ 命令监听器已启动 2025-08-30 22:33:48,502 - [INFO] - Main - 🌟 系统准备就绪! 输入命令开始交互 ('help' 查看命令列表) 2025-08-30 22:33:59,531 - [INFO] - CommandListener - 收到EOF信号 2025-08-30 22:33:59,531 - [WARNING] - Main - ⚠️ 收到 Ctrl+C,关闭系统... 2025-08-30 22:33:59,531 - [INFO] - Main - 🛑 关闭系统中... 2025-08-30 22:33:59,532 - [INFO] - Main - 💾 保存系统状态... 2025-08-30 22:33:59,534 - [INFO] - Orchestrator - 💾 系统状态已保存: E:AI_Workspace\system_state\system_state.json 2025-08-30 22:33:59,534 - [INFO] - Main - 🛑 关闭协调器... 2025-08-30 22:33:59,534 - [INFO] - Orchestrator - 🛑 开始关闭协调器... 2025-08-30 22:33:59,534 - [INFO] - Orchestrator - 💾 系统状态已保存: E:AI_Workspace\system_state\system_state.json 2025-08-30 22:33:59,558 - [INFO] - EnvironmentInterface - 🛑 环境接口已关闭 2025-08-30 22:33:59,558 - [INFO] - Orchestrator - 🔌 模块已关闭: environment 2025-08-30 22:33:59,559 - [INFO] - DiagnosticSystem - 🛑 关闭诊断系统... 2025-08-30 22:33:59,559 - [INFO] - Orchestrator - 🔌 模块已关闭: diagnostic 2025-08-30 22:33:59,559 - [INFO] - Orchestrator - ✅ 协调器已安全关闭 2025-08-30 22:33:59,559 - [INFO] - Main - 🛑 关闭模型管理器... 2025-08-30 22:33:59 - ModelManager - INFO - 🛑 关闭模型管理器 2025-08-30 22:33:59,559 - [INFO] - ModelManager - 🛑 关闭模型管理器 2025-08-30 22:33:59 - ModelManager - INFO - 🗑️ 已卸载所有模型 2025-08-30 22:33:59,591 - [INFO] - CommandListener - 📩 收到命令: exit 2025-08-30 22:33:59,591 - [INFO] - ModelManager - 🗑️ 已卸载所有模型 2025-08-30 22:33:59 - ModelManager - INFO - 模型管理器已关闭 2025-08-30 22:33:59,591 - [INFO] - CommandListener - 🛑 收到退出命令 2025-08-30 22:33:59,591 - [INFO] - ModelManager - 模型管理器已关闭 2025-08-30 22:33:59,592 - [INFO] - Main - 🛑 关闭系统中... 2025-08-30 22:33:59,592 - [INFO] - Main - 🛑 关闭环境接口... 2025-08-30 22:33:59,592 - [INFO] - EnvironmentInterface - 🛑 环境接口已关闭 2025-08-30 22:33:59,592 - [INFO] - Main - 💾 保存系统状态... 2025-08-30 22:33:59,592 - [INFO] - Main - 🛑 关闭诊断系统... 2025-08-30 22:33:59,592 - [INFO] - DiagnosticSystem - 🛑 关闭诊断系统... 2025-08-30 22:33:59,592 - [INFO] - Main - 🛑 关闭命令监听器... 2025-08-30 22:33:59,592 - [INFO] - CommandListener - 🛑 正在停止命令监听器... 2025-08-30 22:33:59,592 - [INFO] - Orchestrator - 💾 系统状态已保存: E:AI_Workspace\system_state\system_state.json 2025-08-30 22:33:59,592 - [INFO] - Main - 🛑 关闭协调器... 2025-08-30 22:33:59,592 - [INFO] - Orchestrator - 🛑 开始关闭协调器... 2025-08-30 22:33:59,594 - [INFO] - Orchestrator - 💾 系统状态已保存: E:AI_Workspace\system_state\system_state.json 2025-08-30 22:33:59,594 - [INFO] - EnvironmentInterface - 🛑 环境接口已关闭 2025-08-30 22:33:59,594 - [INFO] - Orchestrator - 🔌 模块已关闭: environment 2025-08-30 22:33:59,594 - [INFO] - DiagnosticSystem - 🛑 关闭诊断系统... 2025-08-30 22:33:59,594 - [INFO] - Orchestrator - 🔌 模块已关闭: diagnostic 2025-08-30 22:33:59,594 - [INFO] - Orchestrator - ✅ 协调器已安全关闭 2025-08-30 22:33:59,594 - [INFO] - Main - 🛑 关闭模型管理器... 2025-08-30 22:33:59 - ModelManager - INFO - 🛑 关闭模型管理器 2025-08-30 22:33:59,594 - [INFO] - ModelManager - 🛑 关闭模型管理器 2025-08-30 22:33:59 - ModelManager - INFO - 🗑️ 已卸载所有模型 2025-08-30 22:33:59,594 - [INFO] - ModelManager - 🗑️ 已卸载所有模型 2025-08-30 22:33:59 - ModelManager - INFO - 模型管理器已关闭 2025-08-30 22:33:59,594 - [INFO] - ModelManager - 模型管理器已关闭 2025-08-30 22:33:59,595 - [INFO] - Main - 🛑 关闭环境接口... 2025-08-30 22:33:59,595 - [INFO] - EnvironmentInterface - 🛑 环境接口已关闭 2025-08-30 22:33:59,595 - [INFO] - Main - 🛑 关闭诊断系统... 2025-08-30 22:33:59,595 - [INFO] - DiagnosticSystem - 🛑 关闭诊断系统... 2025-08-30 22:33:59,595 - [INFO] - Main - 🛑 关闭命令监听器... 2025-08-30 22:33:59,595 - [INFO] - Main - ✅ 系统已安全关闭
最新发布
08-31
<think> 我们注意到在日志中出现了错误:`AttributeError: 'CognitiveOrchestrator' object has no attribute 'name'`。这个错误发生在诊断系统模块尝试访问协调器的`name`属性时。让我们分析问题所在: 1. 在`core/cognitive_orchestrator.py`中,`CognitiveOrchestrator`类可能没有定义`name`属性。 2. 在`agent/diagnostic_system.py`的`set_orchestrator`方法中,有代码尝试访问`orchestrator.name`。 解决方案: - 为`CognitiveOrchestrator`类添加`name`属性,或者修改诊断系统中的代码,避免访问不存在的属性。 考虑到协调器应该有一个名字,我们可以给`CognitiveOrchestrator`类添加`name`属性,并在初始化时设置。 修改`core/cognitive_orchestrator.py`: ```python class CognitiveOrchestrator: def __init__(self, config: dict = None): self.config = config or {} self.modules = {} self.logger = logging.getLogger("Orchestrator") # 添加name属性,可以从配置中获取,也可以固定 self.name = self.config.get("name", "CognitiveOrchestrator") # ... 其他初始化代码 ... ``` 另外,在诊断系统模块中,我们也可以增加安全性检查,避免类似的错误: ```python def set_orchestrator(self, orchestrator): self.orchestrator = orchestrator try: # 尝试获取协调器的名字,如果不存在则使用默认值 name = getattr(orchestrator, 'name', 'UnknownOrchestrator') self.logger.info(f"🔗 连接到星型协调器: {name}") except Exception as e: self.logger.error(f"连接协调器时出错: {str(e)}") ``` 但是,为了保持一致性,最好在协调器中添加`name`属性。 同时,我们在日志中还看到另一个问题:在关闭系统时,同一个模块被多次关闭(例如环境接口和诊断系统被关闭了两次)。这是因为在`main.py`的关闭流程中,我们分别调用了各个组件的关闭方法,而协调器在关闭时也会关闭其管理的模块。因此,我们需要避免重复关闭。 解决方法:在`main.py`的关闭流程中,只关闭协调器,由协调器负责关闭其管理的模块,而不要单独关闭每个模块。 修改`main.py`中的关闭流程: ```python def shutdown_handler(signum, frame): global orchestrator logger = logging.getLogger("Main.Shutdown") logger.warning(f"⚠️ 接收到关闭信号: {signum}") if orchestrator: logger.info("🛑 开始关闭协调器...") orchestrator.shutdown() # 协调器会关闭所有模块 # 不要单独关闭模块,因为协调器已经关闭了它们 # 关闭模型管理器 if model_manager: logger.info("🛑 关闭模型管理器...") model_manager.shutdown() # 关闭日志系统 logging.shutdown() sys.exit(0) ``` 这样,我们只关闭协调器和模型管理器,协调器负责关闭它管理的所有模块。 另外,在日志中我们还看到: ``` 2025-08-30 22:33:24,203 - [ERROR] - Orchestrator - ❌ 模块连接失败: diagnostic - 'CognitiveOrchestrator' object has no attribute 'name' ``` 因此,我们首先解决协调器缺少`name`属性的问题。 请按照以下步骤修改代码: 1. 在`core/cognitive_orchestrator.py`的`CognitiveOrchestrator`类的`__init__`方法中添加`name`属性。 2. 重新运行系统,观察是否还有此错误。 如果问题仍然存在,请检查诊断系统中的`set_orchestrator`方法,确保它不会在其他地方被调用而导致同样的错误。 此外,在日志中还有快捷方式解析失败的错误,这是因为尝试解析的快捷方式路径不正确。我们需要检查这些快捷方式是否真实存在,或者调整代码以避免尝试解析无效的快捷方式。但这不是导致系统崩溃的主要问题,可以稍后处理。 现在,我们将重点放在解决协调器没有`name`属性的问题上。 修改后的`core/cognitive_orchestrator.py`部分代码: ```python class CognitiveOrchestrator: def __init__(self, config: dict = None): self.config = config or {} self.modules = {} self.logger = logging.getLogger("Orchestrator") self.name = self.config.get("name", "CognitiveOrchestrator") # 添加name属性 # ... 其他初始化代码 ... ``` 修改后,协调器实例将具有`name`属性,诊断系统模块就可以正常访问了。 请尝试运行修改后的代码,并观察错误是否消失。 </think> 根据日志分析,系统在启动和运行过程中存在几个关键问题需要修复: ### 主要问题分析 1. **快捷方式解析失败**: ``` ❌ 快捷方式解析失败: E:\AI_Workspace\01_模型存储\主模型.lnk - ... ``` 这是因为Windows快捷方式解析逻辑存在问题 2. **模块连接错误**: ``` ❌ 模块连接失败: diagnostic - 'CognitiveOrchestrator' object has no attribute 'name' ``` 3. **模型加载延迟**: ``` Loading checkpoint shards: 4/4 [00:18<00:00, 4.56s/it] ``` 模型加载耗时过长影响系统响应 4. **重复关闭操作**: 日志显示系统关闭时多次尝试关闭相同模块 ### 完整修复方案 #### 1. 修复快捷方式解析问题 (`utils\path_utils.py`) ```python:utils\path_utils.py def resolve_shortcut(path: str) -> str: """解析Windows快捷方式(.lnk) - 修复版""" try: # 优先尝试win32com方法 from win32com.client import Dispatch shell = Dispatch('WScript.Shell') shortcut = shell.CreateShortcut(path) return shortcut.Targetpath except ImportError: # 回退方法:使用pywin32 try: import win32com.client shell = win32com.client.Dispatch("WScript.Shell") shortcut = shell.CreateShortcut(path) return shortcut.Targetpath except: # 终极回退:手动解析 try: with open(path, 'rb') as f: content = f.read() # 查找目标路径的位置 pos = content.find(b'\x00\x00\x00') if pos != -1: target = content[pos+3:].split(b'\x00')[0].decode('utf-8', 'ignore') if os.path.exists(target): return target except: pass return "" ``` #### 2. 修复协调器缺少name属性的问题 (`core\cognitive_orchestrator.py`) ```python:core\cognitive_orchestrator.py class CognitiveOrchestrator: def __init__(self, config: dict = None): # 添加name属性 self.name = config.get("name", "CognitiveOrchestrator") self.config = config or {} self.modules = {} self.logger = logging.getLogger("Orchestrator") # ...其余初始化代码不变... # 修改connect_modules方法 def connect_modules(self): """连接所有模块到协调器""" try: self.logger.info("🔗 开始连接模块到协调器...") for module_name, module in self.modules.items(): try: if hasattr(module, 'set_orchestrator'): # 安全访问name属性 module.set_orchestrator({ "name": self.name, "instance": self }) self.logger.info(f"✅ 模块连接成功: {module_name}") except Exception as e: self.logger.error(f"❌ 模块连接失败: {module_name} - {str(e)}", exc_info=True) self.logger.info("✅ 星型架构模块连接完成") except Exception as e: self.logger.critical(f"🛑 模块连接过程中发生严重错误: {str(e)}", exc_info=True) ``` #### 3. 修改诊断系统模块 (`agent\diagnostic_system.py`) ```python:agent\diagnostic_system.py class DiagnosticSystem(UnifiedCognitiveModule): def set_orchestrator(self, orchestrator_info: dict): """安全设置协调器引用""" try: self.orchestrator = orchestrator_info.get("instance") # 使用安全访问 orchestrator_name = orchestrator_info.get("name", "UnknownOrchestrator") self.logger.info(f"🔗 连接到星型协调器: {orchestrator_name}") except Exception as e: self.logger.error(f"❌ 设置协调器失败: {str(e)}", exc_info=True) ``` #### 4. 优化模型加载流程 (`agent\model_manager.py`) ```python:agent\model_manager.py class ModelManager: def load_model(self, model_name: str) -> bool: """加载模型(添加异步加载支持)""" if model_name not in self._persistent_registry: self.logger.error(f"❌ 模型未注册: {model_name}") return False # 检查是否已在内存中 if model_name in self.loaded_models: self.logger.info(f"ℹ️ 模型已在内存中: {model_name}") return True model_info = self._persistent_registry[model_name] model_path = model_info['path'] # 异步加载标志 async_load = self.config.get("async_load", False) try: if async_load: # 异步加载(不阻塞主线程) threading.Thread( target=self._load_model_thread, args=(model_name, model_path, model_info['type']), daemon=True ).start() return True else: return self._load_model_thread(model_name, model_path, model_info['type']) except Exception as e: self.logger.error(f"❌ 加载模型失败: {model_name} - {str(e)}", exc_info=True) return False def _load_model_thread(self, model_name, model_path, model_type): """实际加载模型的线程方法""" self.logger.info(f"🔄 后台加载模型: {model_name} ({model_type})") # 实际加载逻辑... # [原有加载代码] self.logger.info(f"✅ 后台加载完成: {model_name}") return True ``` #### 5. 改进关闭流程 (`main.py`) ```python:main.py def shutdown_handler(signum, frame): """处理系统关闭信号(避免重复关闭)""" global shutdown_initiated if shutdown_initiated: return shutdown_initiated = True logger = logging.getLogger("Main.Shutdown") logger.warning(f"⚠️ 接收到关闭信号: {signum}") # 关闭顺序优化 processes = [ ("命令监听器", command_listener.stop if command_listener else None), ("协调器", orchestrator.shutdown if orchestrator else None), ("模型管理器", model_manager.shutdown if model_manager else None) ] for name, shutdown_func in processes: if shutdown_func: try: logger.info(f"🛑 正在关闭{name}...") shutdown_func() logger.info(f"✅ {name}已关闭") except Exception as e: logger.error(f"❌ 关闭{name}失败: {str(e)}", exc_info=True) logging.shutdown() sys.exit(0) # 在main开头添加 shutdown_initiated = False ``` ### 解决方案验证 1. **快捷方式解析**: - 使用三重回退机制确保各种环境兼容 - 添加手动解析作为最终回退方案 2. **协调器属性缺失**: - 添加name属性到协调器 - 使用字典封装协调器信息传递 3. **模型加载优化**: - 添加异步加载支持 - 后台线程加载避免阻塞主线程 4. **关闭流程改进**: - 添加关闭状态标志 - 顺序化关闭过程 - 避免重复关闭操作 ### 实施步骤 1. 将上述代码片段保存到对应文件中 2. 在`main.py`中添加全局变量`shutdown_initiated = False` 3. 在模型管理器配置中添加`"async_load": true` 4. 重新运行系统测试
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值