第122章 自我检测
122.1 提出背景
前面的异常理论和诊断理论主要解决外部对象以及运行对象的异常问题。
第119章建立了异常理论,定义了正常与异常之间的差异关系。
第120章建立了异常检测,机器能够检测:
状态 → 行为 → 结果 → 数据 → 结构
第121章建立了诊断理论,机器能够根据异常对象进一步寻找:
异常 → 原因 → 原因匹配 → 诊断结果
但是,一个能够长期运行的机器认知系统还存在一个更加基础的问题:
如果检测系统自身出现问题,谁来检测检测系统?
例如:
- 记忆数据是否完整;
- 认知对象是否存在;
- 规则是否有效;
- 数据结构是否正确;
- 当前状态是否一致;
- 模块是否正常运行;
- 任务是否持续执行;
- 检测记录是否正常保存;
- 某个核心能力是否失效。
如果机器只能检测外部对象,而不能检测自身,那么它的认知闭环仍然是不完整的。
因此需要建立**自我检测(Self-Detection)**理论。
自我检测是机器对自身结构、数据、状态、行为、能力和运行过程进行主动或周期性检查的机制。
其基本过程为:
Self→Observe→Check→Compare→Result→RecordSelf \rightarrow Observe \rightarrow Check \rightarrow Compare \rightarrow Result \rightarrow Record
进一步形成:
自我检测→自我异常发现→自我诊断→自我调整\boxed{ 自我检测 \rightarrow 自我异常发现 \rightarrow 自我诊断 \rightarrow 自我调整 }
122.2 自我检测定义
自我检测(Self-Detection)是指机器以自身作为检测对象,根据预先建立的自身正常基准、运行规则和状态约束,对自身的数据、结构、状态、行为、能力和运行结果进行检查,并形成检测结果和检测记录的认知过程。
定义自我检测函数:
SD=Detect(Self,O,R,C)SD=Detect(Self,O,R,C)
其中:
- SelfSelf:机器自身;
- OO:Self Object,自我检测对象;
- RR:Detection Rule,检测规则;
- CC:Detection Condition,检测条件;
- SDSD:Self-Detection,自我检测结果。
普通异常检测主要是:
Object→DetectionObject \rightarrow Detection
自我检测则是:
Self→Self DetectionSelf \rightarrow Self\ Detection
二者的区别在于检测对象不同。
普通检测:
ExternalObject→DetectionExternalObject \rightarrow Detection
自我检测:
SelfObject→DetectionSelfObject \rightarrow Detection
因此,自我检测并不是一种与异常检测完全不同的检测算法,而是将检测能力应用于机器自身。
122.3 自我检测对象
机器自身不是一个简单对象,而是一个由多个认知和工程组成部分构成的复杂对象。
可以定义:
SO={D,St,S,B,C,M,W,E,R}SO=\{D,St,S,B,C,M,W,E,R\}
其中:
- DD:Data,数据;
- StSt:Structure,结构;
- SS:State,状态;
- BB:Behavior,行为;
- CC:Capability,能力;
- MM:Memory,记忆;
- WW:Workflow,工作流;
- EE:Execution,执行过程;
- RR:Record,记录。
因此,自我检测至少可以检测以下对象:
数据 → 结构 → 状态 → 行为 → 能力 → 记忆 → 工作流 → 执行 → 记录
122.4 自我数据检测
自我数据检测是检查机器内部数据是否完整、合法、一致和可用。
例如:
认知对象数据
记忆数据
经验数据
规则数据
状态数据
任务数据
检测记录
可以定义:
DataValid=f(Exist,Type,Format,Range,Consistency)DataValid=f(Exist,Type,Format,Range,Consistency)
其中:
Exist:是否存在;Type:类型是否正确;Format:格式是否正确;Range:数值是否在允许范围;Consistency:相关数据是否一致。
例如:
MemoryCount≥0MemoryCount \geq 0
如果出现:
MemoryCount<0MemoryCount<0
则形成数据异常。
因此:
SelfData→DataCheck→DataNormal/DataAnomalySelfData \rightarrow DataCheck \rightarrow DataNormal/DataAnomaly
122.5 自我结构检测
自我结构检测是检查机器自身的数据结构、对象结构、模块结构以及对象之间的关系是否完整。
例如一个认知对象应该具有:
Object={Element,Attribute,Relation,State}Object=\{Element,Attribute,Relation,State\}
如果缺少必要元素:
Elementrequired∉ObjectElement_{required}\notin Object
则形成结构异常。
同样,系统模块之间也存在结构关系:
Learning
↓
Memory
↓
Cognition
↓
Decision
↓
Execution
↓
Feedback
如果一个必要模块无法连接到其规定的关系节点,则可能形成系统结构异常。
因此:
SelfStructure→StructureCheck→StructureNormal/StructureAnomalySelfStructure \rightarrow StructureCheck \rightarrow StructureNormal/StructureAnomaly
122.6 自我状态检测
自我状态检测是判断机器当前运行状态是否符合自身状态模型的过程。
定义机器状态:
StS_t
正常状态集合:
NSN_S
如果:
St∈NSS_t\in N_S
则状态正常。
如果:
St∉NSS_t\notin N_S
则:
SelfStateAnomaly=TRUESelfStateAnomaly=TRUE
例如机器可能具有:
IDLE
LEARNING
COGNIZING
DECIDING
EXECUTING
FEEDBACK
ERROR
RECOVERY
如果系统处于:
EXECUTING
但执行对象已经不存在,则:
State≠ExpectedStateState \neq ExpectedState
形成自我状态异常。
122.7 自我行为检测
自我行为检测是判断机器自身实际执行行为是否符合预定义行为规则、当前状态和任务条件。
定义:
Ba=ActualBehaviorB_a=ActualBehavior Be=ExpectedBehaviorB_e=ExpectedBehavior
如果:
Ba≠BeB_a\neq B_e
则需要进一步检查是否超过允许偏差。
例如:
当前任务:
执行数据保存
实际行为:
重复执行数据删除
如果当前状态和规则不允许删除行为,则:
BehaviorAnomaly=TRUEBehaviorAnomaly=TRUE
因此:
SelfBehavior→BehaviorRule→Compare→ResultSelfBehavior \rightarrow BehaviorRule \rightarrow Compare \rightarrow Result
122.8 自我能力检测
机器不仅需要知道“自己当前是什么状态”,还需要知道:
自己是否具有执行某项任务的能力。
能力检测(Capability Detection)是检查机器自身能力是否存在、是否可用以及是否满足任务要求的过程。
定义能力集合:
Cself={C1,C2,…,Cn}C_{self}=\{C_1,C_2,\ldots,C_n\}
任务要求:
CrequiredC_{required}
如果:
Crequired⊆CselfC_{required}\subseteq C_{self}
并且相关能力处于可用状态,则机器具备执行任务的能力。
如果:
Crequired⊈CselfC_{required}\nsubseteq C_{self}
则形成能力不足。
例如:
任务:
保存认知记忆
要求:
MemoryWrite
Storage
DatabaseConnection
如果:
DatabaseConnection = OFF
则机器虽然具有“记忆保存”能力定义,但当前实际能力不可用。
因此必须区分:
CapabilityExistsCapabilityExists
和:
CapabilityAvailableCapabilityAvailable
能力存在不等于能力当前可用。
122.9 自我记忆检测
自我记忆是机器持续认知的重要组成部分,因此也需要进行检测。
记忆检测主要检查:
- 记忆是否存在;
- 记忆是否完整;
- 记忆是否可以读取;
- 记忆是否可以写入;
- 记忆之间是否存在冲突;
- 记忆状态是否正确;
- 记忆关联是否有效。
可以定义:
MemoryValid=f(Exist,Read,Write,Integrity,Relation)MemoryValid= f(Exist,Read,Write,Integrity,Relation)
例如:
Read(Memory)=FALSERead(Memory)=FALSE
则说明机器虽然保存了记忆对象,但当前无法正常使用。
因此:
MemoryExists≠MemoryAvailableMemoryExists\neq MemoryAvailable
这与能力检测具有直接关系。
122.10 自我工作流检测
工作流检测是检查机器当前任务流程是否按照规定的步骤和状态顺序执行。
例如:
Learning→Store→Recall→CognitionLearning \rightarrow Store \rightarrow Recall \rightarrow Cognition
如果系统从:
LearningLearning
直接进入:
CognitionCognition
而规定流程要求首先完成:
StoreStore
则:
WorkflowTransition=INVALIDWorkflowTransition=INVALID
形成工作流异常。
因此工作流检测本质上是:
实际流程 → 预期流程 → 流程比较 → 异常判断
122.11 自我执行检测
执行检测是判断机器实际执行过程是否与计划、任务和规则一致。
定义:
Ea=ActualExecutionE_a=ActualExecution Ee=ExpectedExecutionE_e=ExpectedExecution
如果:
Ea=EeE_a=E_e
则执行符合预期。
如果:
Ea≠EeE_a\neq E_e
则形成执行偏差。
执行检测可以检查:
- 是否开始;
- 是否持续;
- 是否完成;
- 是否超时;
- 是否重复;
- 是否中断;
- 是否失败。
因此:
Execution→ExpectedExecution→Compare→ExecutionResultExecution \rightarrow ExpectedExecution \rightarrow Compare \rightarrow ExecutionResult
122.12 检测规则
自我检测必须建立明确的检测规则。
检测规则(Detection Rule)是规定“检测什么、如何比较以及什么情况下判定异常”的结构化规则。
可以定义:
R={O,C,E,T,A}R=\{O,C,E,T,A\}
其中:
- OO:检测对象;
- CC:检测条件;
- EE:期望状态;
- TT:阈值;
- AA:异常动作或结果。
例如:
IF MemoryExists = FALSE
THEN SelfMemoryAnomaly = TRUE
又如:
IF CurrentState NOT IN NormalStates
THEN SelfStateAnomaly = TRUE
再如:
IF RequiredCapability NOT AVAILABLE
THEN CapabilityAnomaly = TRUE
122.13 自我检测规则分类
检测规则可以分为:
1. 存在规则
判断对象是否存在:
Exist(O)=TRUEExist(O)=TRUE
2. 状态规则
判断当前状态是否合法:
S∈NSS\in N_S
3. 类型规则
判断对象类型是否正确:
Type(A)=ExpectedTypeType(A)=ExpectedType
4. 范围规则
判断数值是否处于允许范围:
L≤V≤HL\leq V\leq H
5. 关系规则
判断对象之间关系是否正确:
Relation(A,B)=ExpectedRelationRelation(A,B)=ExpectedRelation
6. 转换规则
判断状态或流程转换是否合法:
Transition(Si,Sj)∈AllowedTransitionsTransition(S_i,S_j)\in AllowedTransitions
7. 能力规则
判断执行任务所需能力是否可用:
RequiredCapability⊆AvailableCapabilityRequiredCapability\subseteq AvailableCapability
8. 周期规则
判断某项任务是否按照规定周期执行:
Tactual≈TexpectedT_{actual}\approx T_{expected}
122.14 检测结果
检测结果(Detection Result)是机器根据检测规则对自身对象进行检查后形成的结构化判断。
最简单的结果:
Result∈{Normal,Abnormal}Result\in\{Normal,Abnormal\}
但是完整的检测结果应该包括:
DR={O,R,E,A,D,L,T}DR=\{O,R,E,A,D,L,T\}
其中:
- OO:检测对象;
- RR:检测规则;
- EE:期望值;
- AA:实际值;
- DD:偏差;
- LL:检测等级;
- TT:检测时间。
因此,一个完整检测结果可以表示为:
检测对象:
Memory
检测规则:
Memory必须可读取
期望:
Readable = TRUE
实际:
Readable = FALSE
结果:
ABNORMAL
等级:
HIGH
这样检测结果就可以直接进入异常对象系统。
122.15 检测结果与异常对象
自我检测结果可以转换成异常对象:
DetectionResult→AnomalyObjectDetectionResult \rightarrow AnomalyObject
例如:
SelfDetection=ABNORMALSelfDetection=ABNORMAL
则:
AnomalyObject={Target,Type,Expected,Actual,Deviation,Severity}AnomalyObject= \{ Target, Type, Expected, Actual, Deviation, Severity \}
因此:
检测负责发现,异常对象负责结构化表示。
进一步:
AnomalyObject→DiagnosisAnomalyObject \rightarrow Diagnosis
机器可以继续寻找自身异常的原因。
由此形成:
SelfDetection→SelfAnomaly→SelfDiagnosisSelfDetection \rightarrow SelfAnomaly \rightarrow SelfDiagnosis
122.16 检测周期
自我检测不是只能执行一次。
由于机器是持续运行的系统,因此必须建立检测周期(Detection Cycle)。
检测周期是机器按照规定时间间隔、事件条件或运行阶段重复执行自我检测的机制。
定义检测周期:
TdT_d
相邻两次检测时间:
tn+1−tn=Tdt_{n+1}-t_n=T_d
例如:
Td=60sT_d=60s
表示每60秒执行一次检测。
但是不同检测对象可以具有不同周期。
例如:
系统状态检测:10秒
数据完整性检测:60秒
记忆检测:300秒
结构检测:3600秒
能力检测:任务触发
因此:
Td=f(Object,Priority,Risk,Cost)T_d=f(Object,Priority,Risk,Cost)
检测周期不是固定不变的,而可以根据检测对象的重要程度和运行风险进行调整。
122.17 事件驱动检测
除了周期检测,还可以采用事件触发检测。
例如:
Event→DetectionEvent\rightarrow Detection
当发生:
- 模块启动;
- 状态变化;
- 任务失败;
- 数据写入;
- 任务完成;
- 异常发生;
系统可以立即触发自我检测。
因此,自我检测可以分为:
DetectionMode={Periodic,EventDriven,OnDemand}DetectionMode= \{Periodic,EventDriven,OnDemand\}
其中:
Periodic:周期检测;EventDriven:事件驱动检测;OnDemand:主动请求检测。
122.18 检测周期的动态调整
如果某个对象风险较高,则可以缩短检测周期。
设风险等级为:
LrL_r
检测周期为:
TdT_d
可以建立:
Td=f(Lr)T_d=f(L_r)
一般情况下:
Lr↑⇒Td↓L_r\uparrow \Rightarrow T_d\downarrow
即:
风险越高 → 检测越频繁。
例如:
正常:
每60秒检测
出现轻微异常:
每30秒检测
高风险:
每10秒检测
关键异常:
事件触发 + 高频检测
这使自我检测具有一定的动态能力。
122.19 检测记录
检测记录(Detection Record)是机器保存每次自我检测过程及其结果的结构化历史数据。
定义:
Record={ID,O,R,E,A,D,S,T,V}Record=\{ID,O,R,E,A,D,S,T,V\}
其中:
- IDID:检测记录编号;
- OO:检测对象;
- RR:检测规则;
- EE:期望值;
- AA:实际值;
- DD:偏差;
- SS:检测结果或等级;
- TT:检测时间;
- VV:版本或检测环境信息。
检测记录的作用不是简单保存日志,而是形成机器自身运行的历史数据。
例如:
检测时间:
2026-09-06 10:00:00
检测对象:
Memory
检测结果:
NORMAL
检测时间:
2026-09-06 10:05:00
检测对象:
Memory
检测结果:
ABNORMAL
机器因此可以观察自身状态变化:
Normal→Normal→AbnormalNormal \rightarrow Normal \rightarrow Abnormal
122.20 检测记录的连续性
如果检测记录按照时间保存:
R1,R2,R3,…,RnR_1,R_2,R_3,\ldots,R_n
则可以形成自我检测历史:
History={R1,R2,…,Rn}History=\{R_1,R_2,\ldots,R_n\}
机器可以进一步计算:
AbnormalRate=AbnormalCountTotalDetectionCountAbnormalRate= \frac{AbnormalCount}{TotalDetectionCount}
也可以计算:
FailureCountFailureCount RecoveryCountRecoveryCount DetectionIntervalDetectionInterval
这些数据能够帮助机器发现自身长期运行趋势。
例如:
AbnormalRate↑AbnormalRate\uparrow
表示机器自身异常发生频率正在增加。
这可能成为后续自我诊断和自我保护的输入。
122.21 自我检测记录对象
PHP OOP中可以建立:
class SelfDetectionRecord
{
public $recordId;
public $targetObject;
public $detectionType;
public $rule;
public $expectedValue;
public $actualValue;
public $deviation;
public $result;
public $severity;
public $cycle;
public $createdAt;
}
检测器:
class SelfDetector
{
public function detect($object, $rule)
{
$actual = $this->readActualValue($object);
$expected = $rule->getExpectedValue();
$result = $rule->compare($actual, $expected);
return array(
'object' => $object,
'expected' => $expected,
'actual' => $actual,
'result' => $result
);
}
}
检测周期管理器:
class DetectionScheduler
{
public function shouldDetect($lastTime, $cycle, $currentTime)
{
return ($currentTime - $lastTime) >= $cycle;
}
}
这样可以把自我检测直接转换为WSaiOS运行对象。
122.22 自我检测工程模块
在WSaiOS工程中,可以建立独立的Self Detection System:
Self Detection System
│
├── SelfDetector
├── SelfObjectManager
├── DetectionRule
├── StateChecker
├── BehaviorChecker
├── DataChecker
├── StructureChecker
├── CapabilityChecker
├── MemoryChecker
├── WorkflowChecker
├── ExecutionChecker
├── DetectionScheduler
├── DetectionResult
└── DetectionRecordStore
运行关系:
SelfObject→Detector→Rule→Compare→Result→RecordSelfObject \rightarrow Detector \rightarrow Rule \rightarrow Compare \rightarrow Result \rightarrow Record
如果发现异常:
Result→Anomaly→DiagnosisResult \rightarrow Anomaly \rightarrow Diagnosis
进一步:
Diagnosis→Decision→SelfAdjustmentDiagnosis \rightarrow Decision \rightarrow SelfAdjustment
122.23 自我检测状态机
自我检测过程可以建立状态机:
Idle→Scheduled→Inspecting→Comparing→Evaluating→RecordingIdle \rightarrow Scheduled \rightarrow Inspecting \rightarrow Comparing \rightarrow Evaluating \rightarrow Recording
如果正常:
Evaluating→NormalEvaluating \rightarrow Normal
如果异常:
Evaluating→SelfAnomalyEvaluating \rightarrow SelfAnomaly
如果检测过程本身失败:
Evaluating→DetectionFailureEvaluating \rightarrow DetectionFailure
因此必须区分:
SelfAnomalySelfAnomaly
和:
DetectionFailureDetectionFailure
前者表示:
被检测对象出现异常。
后者表示:
检测机制本身没有完成检测。
这一区分非常重要。
122.24 自我检测的递归边界
如果机器检测自身,就会出现一个问题:
是否还需要检测“检测器检测器”?
如果无限递归:
Detector→Detector→Detector→⋯Detector \rightarrow Detector \rightarrow Detector \rightarrow\cdots
系统将无法结束。
因此必须建立自我检测边界。
可以定义:
SelfDetectionScope={Core,Module,Object,Data,State,Behavior,Capability}SelfDetectionScope=\{Core,Module,Object,Data,State,Behavior,Capability\}
核心原则是:
检测对象必须属于预先定义的系统自我检测边界。
检测器本身可以被检查,但不能无限递归。
例如:
SelfDetector→DetectorHealthSelfDetector \rightarrow DetectorHealth
检查的是:
- 检测器是否存在;
- 检测器是否可以执行;
- 检测器规则是否完整;
- 检测结果是否可以保存。
到此即可结束该检测链。
122.25 自我检测与自我保护
自我检测发现异常后,可以进入自我保护系统。
其关系为:
SelfDetection→SelfAnomaly→SelfDiagnosis→SelfProtectionSelfDetection \rightarrow SelfAnomaly \rightarrow SelfDiagnosis \rightarrow SelfProtection
例如:
检测到核心数据异常 → 判断异常原因 → 限制危险操作 → 保存状态 → 恢复数据。
因此,第122章建立的是:
发现自身问题\boxed{发现自身问题}
而第116章自我保护解决的是:
保护自身\boxed{保护自身}
二者形成:
Detection→ProtectionDetection \rightarrow Protection
122.26 自我检测与自我学习
检测记录还可以进入学习系统。
例如长期检测得到:
R1,R2,…,RnR_1,R_2,\ldots,R_n
如果机器发现:
Abnormality→Cause→RepeatedAbnormality \rightarrow Cause \rightarrow Repeated
则可以形成经验:
Experience={Condition,Anomaly,Cause,Result}Experience= \{ Condition, Anomaly, Cause, Result \}
进一步:
DetectionHistory→Experience→LearningDetectionHistory \rightarrow Experience \rightarrow Learning
因此,自我检测不仅可以发现当前问题,还可以为机器建立自身运行经验提供基础数据。
122.27 自我检测完整模型
综合本章,可以建立:
Self={Data,Structure,State,Behavior,Capability,Memory,Workflow,Execution}Self = \{ Data, Structure, State, Behavior, Capability, Memory, Workflow, Execution \}
检测规则:
Rule={Object,Condition,Expected,Threshold}Rule=\{Object,Condition,Expected,Threshold\}
检测过程:
SelfObject→Rule→Observe→Compare→Deviation→ResultSelfObject \rightarrow Rule \rightarrow Observe \rightarrow Compare \rightarrow Deviation \rightarrow Result
检测结果:
Result∈{Normal,Abnormal,Unknown,Failed}Result\in\{Normal,Abnormal,Unknown,Failed\}
检测记录:
Record={Object,Rule,Expected,Actual,Deviation,Result,Time}Record= \{ Object, Rule, Expected, Actual, Deviation, Result, Time \}
最终闭环:
Self→Detection→Result→Record→Anomaly→Diagnosis→Protection/Adjustment\boxed{ Self \rightarrow Detection \rightarrow Result \rightarrow Record \rightarrow Anomaly \rightarrow Diagnosis \rightarrow Protection/Adjustment }
122.28 本章总结
自我检测是机器从“检测外部对象”进一步发展到“检测自身”的基础理论。
本章首先定义了自我检测:
Self→Observe→Check→Compare→Result\boxed{ Self \rightarrow Observe \rightarrow Check \rightarrow Compare \rightarrow Result }
然后建立了检测对象,包括:
数据、结构、状态、行为、能力、记忆、工作流和执行过程。
其次建立了检测规则:
Rule={Object,Condition,Expected,Threshold}Rule=\{Object,Condition,Expected,Threshold\}
使机器能够根据明确的结构化规则判断自身是否正常。
再次建立检测结果:
Result∈{Normal,Abnormal,Unknown,Failed}Result\in\{Normal,Abnormal,Unknown,Failed\}
并特别区分:
自身对象异常与检测机制失败。
随后建立检测周期:
tn+1−tn=Tdt_{n+1}-t_n=T_d
并支持:
周期检测 → 事件检测 → 主动检测
三种机制。
最后建立检测记录:
Record={Object,Rule,Expected,Actual,Deviation,Result,Time}Record= \{ Object, Rule, Expected, Actual, Deviation, Result, Time \}
使机器能够保存自身运行历史,并进一步形成:
DetectionHistory→Experience→LearningDetectionHistory \rightarrow Experience \rightarrow Learning
因此,自我检测形成了WSaiOS的重要自我认知基础:
自我观察→自我比较→自我判断→自我记录\boxed{ 自我观察 \rightarrow 自我比较 \rightarrow 自我判断 \rightarrow 自我记录 }
进一步连接:
自我检测→自我异常→自我诊断→自我保护→自我调整\boxed{ 自我检测 \rightarrow 自我异常 \rightarrow 自我诊断 \rightarrow 自我保护 \rightarrow 自我调整 }
由此,WSaiOS不再只是一个能够观察外部对象的机器认知系统,而开始具备观察自身、判断自身状态、发现自身异常并保存自身运行历史的基础能力。