首页 理论 架构 工程 文档 白皮书 著作 研究 案例 下载 博客 关于 开始使用 →

第183章 DiagnosisRepairService

第183章 DiagnosisRepairService

在 ICAI(Individual Cognitive AI,个体认知人工智能)系统中,风险与冲突处理解决的是“问题可能发生”以及“结构之间存在矛盾”的问题。

但是,当异常已经实际发生之后,系统还必须继续回答四个问题:

发生了什么?

为什么发生?

应该如何恢复?

恢复是否真的成功?

因此,在 RiskConflictService 之后,需要建立 DiagnosisRepairService。

第165章已经定义了:

Failure ≠ Risk

Diagnosis ≠ Result

Repair ≠ Protection

Repair Execution ≠ Repair Success

而第180章建立了:

Execution → Result → Feedback

第182章建立了:

Risk / Conflict → Protection / Processing → Verification

第183章则进一步建立:

Abnormality → Diagnosis → Repair → Verification

即:

异常 → 诊断 → 修复 → 验证

DiagnosisRepairService 的核心职责,就是把已经发生的异常从“事实记录”转化为“原因判断”,再从“原因判断”转化为“修复行为”,最后通过实际执行结果确认系统是否恢复。


一、DiagnosisRepairService定义

DiagnosisRepairService 是 ICAI Service 层中负责接收异常事实、组织诊断、确定修复方案、协调修复执行以及验证修复结果的应用服务。

它不是 Diagnosis 对象,也不是 Repair 对象。

其中:

Diagnosis = 诊断对象

负责描述问题及其原因判断。

Repair = 修复对象

负责描述恢复正常状态的方法和动作。

DiagnosisRepairService = 诊断与修复流程协调服务

因此可以定义:

DRS = (A,D,R,V)

其中:

  • A(Abnormality):异常
  • D(Diagnosis):诊断
  • R(Repair):修复
  • V(Verification):验证

完整流程:

Detect → Diagnose → Select Repair → Execute Repair → Verify → Recover / Re-diagnose

即:

发现异常 → 诊断 → 选择修复 → 执行修复 → 验证 → 恢复 / 重新诊断


二、异常

2.1 Abnormality定义

异常是系统当前实际状态、执行结果、行为结果或环境状态与预期条件、正常规则或允许范围发生偏离的事实。

异常可以来自:

  • Execution
  • Result
  • Feedback
  • State
  • Behavior
  • Method
  • Capability
  • Object
  • Relation
  • Environment
  • Resource

异常的核心是:

Actual ≠ Expected

或者:

Actual State 不满足 Normal Condition

例如:

Expected:
ObjectFound

Actual:
ObjectNotFound

则形成异常。

又例如:

Expected State:
Running

Actual State:
Failed

同样属于异常。


三、异常与Failure的关系

异常与 Failure 有关联,但不能完全等同。

Abnormality 是更大的概念。

例如:

Temperature = 55°C
Expected Range = 0~50°C

这是异常。

但是否构成 Failure,需要根据系统规则判断。

因此:

Abnormality → Evaluation → Failure / Warning / Deviation

例如:

Abnormality
↓
Evaluate
↓
Warning

或者:

Abnormality
↓
Evaluate
↓
Failure

所以 DiagnosisRepairService 不应该把所有异常都直接标记为 Failure。


四、异常结构

可以定义:

A = (O,E,X,C,S,T)

其中:

  • O(Object):异常所属对象
  • E(Expected):预期状态或结果
  • X(Actual):实际状态或结果
  • C(Condition):异常条件
  • S(State):异常状态
  • T(Time):异常发生时间

例如:

Object = Robot R1
Expected = Position A
Actual = Position C
Condition = MoveTo A
State = Failed
Time = T1

这构成一个完整异常事实。


五、异常接收

DiagnosisRepairService 首先接收来自执行和反馈系统的异常。

典型来源:

Execution → Result → Feedback → Abnormality

例如:

Action
↓
Execution
↓
Result = Failed
↓
Feedback
↓
Abnormality

也可能来自:

StateService
↓
Invalid State
↓
DiagnosisRepairService

或者:

RiskConflictService
↓
Unresolved Conflict
↓
DiagnosisRepairService

因此异常不是 DiagnosisRepairService 自己假定出来的。

必须有事实来源。


六、异常确认

接收到异常之后,首先需要确认异常是否真实存在。

可以定义:

ValidAbnormality = Evidence ∧ Actual ∧ Expected ∧ Comparison

其中:

  • Evidence:存在证据
  • Actual:存在实际状态或结果
  • Expected:存在可比较的预期
  • Comparison:已经完成比较

例如:

Expected = A
Actual = B

则:

Comparison = Different

可以确认异常。

如果只有:

Expected = A

但没有实际结果,则不能直接形成实际异常。

因此:

Expected ≠ Actual

并且:

Expected alone ≠ Failure


七、诊断

7.1 Diagnosis定义

Diagnosis 是根据异常事实、执行结果、反馈、状态、历史、记忆、经验、知识、风险和冲突信息,对异常原因进行识别、定位和判断的认知过程与对象。

第165章定义:

D = (P,E,C,R,S)

其中:

  • P(Problem):问题
  • E(Evidence):证据
  • C(Cause):原因
  • R(Recommendation):处理建议
  • S(State):诊断状态

Diagnosis 回答:

“为什么出现这个异常?”

而 Result 回答:

“发生了什么?”

因此:

Result = What happened

Diagnosis = Why happened


八、诊断证据

诊断不能只依据一个错误代码。

它需要综合多类证据:

Result
Feedback
State
History
Memory
Experience
Knowledge
Risk
Conflict

形成:

Diagnosis Evidence = Result + Feedback + State + History + Memory + Experience + Knowledge + Risk + Conflict

例如:

Result:
Move Failed

Feedback:
Position unchanged

State:
Running → Failed

History:
Previously successful

Experience:
Obstacle causes similar failure

Environment:
Obstacle detected

最终可以形成:

Cause = ObstacleBlockedPath

这才是结构化诊断。


九、诊断层级

Diagnosis 不应该只有一个简单的 Error Code。

可以按层级进行诊断:

Result Level

结果是否异常。

State Level

当前状态是否异常。

Action Level

具体操作是否出现问题。

Behavior Level

行为组织是否出现问题。

Method Level

采用的方法是否不适合当前条件。

Capability Level

当前能力是否不足。

Environment Level

外部环境是否发生变化。

例如:

Move Failed
↓
Action正常?
↓
Action正常
↓
Method是否适用?
↓
Method正常
↓
Capability是否足够?
↓
Capability正常
↓
Environment发生变化
↓
Obstacle

最终找到:

Environment Cause

这比直接把问题归因于 Action 更准确。


十、诊断状态

Diagnosis 本身也应该具有状态。

例如:

Unknown
↓
Detected
↓
Analyzing
↓
CauseFound
↓
Confirmed
↓
Resolved

如果无法确定原因:

Analyzing
↓
UnknownCause

如果多个原因都可能:

Analyzing
↓
MultipleCandidates

因此系统不应该为了强行给出答案而制造虚假原因。

Unknown Cause 是合法诊断结果。


十一、诊断与Experience

第181章形成的 Experience 可以辅助 Diagnosis。

例如过去:

Condition X
Method A
Failure
Environment Y

形成经验:

Experience E1:
Environment Y + Method A
容易产生 Failure

当前再次出现:

Condition X
Method A
Failure
Environment Y

DiagnosisService 可以将 E1 作为诊断证据。

于是:

Current Evidence + Previous Experience → Diagnosis

但是经验只能作为证据来源之一。

不能因为过去发生过一次,就直接确定当前原因。

必须仍然进行当前事实验证。


十二、修复

12.1 Repair定义

Repair 是根据 Diagnosis 确定的异常原因,通过执行修复方法和修复动作,使系统从异常状态恢复到可运行或目标允许状态的过程。

第165章定义:

Rp = (D,M,A,R,S)

其中:

  • D(Diagnosis):诊断
  • M(Method):修复方法
  • A(Action):修复动作
  • R(Result):修复结果
  • S(State):修复状态

Repair 回答:

“找到原因之后,如何恢复?”


十三、Repair与Protection的区别

Protection 和 Repair 必须严格区分。

Protection

问题还没有发生,或者问题正在扩大,需要阻止。

Repair

问题已经发生,需要恢复。

因此:

Risk → Protection

而:

Failure → Diagnosis → Repair

例如:

Battery Low
↓
Risk
↓
Protection
↓
Stop Movement

这是保护。

如果已经:

Movement Failed
Battery Empty

则:

Diagnosis
↓
Battery Failure
↓
Repair
↓
Recharge / Replace

这是修复。


十四、修复方法

Repair 不一定只有一种方法。

可以定义修复方法候选:

Retry
Adjustment
MethodChange
ActionReplacement
StateRecovery
ResourceReplacement
ObjectReplacement
EnvironmentRecovery

例如:

Retry

重新执行原 Action。

Failure
↓
Retry

Adjustment

修改参数后重新执行。

Failure
↓
Adjust Parameter
↓
Retry

MethodChange

原 Method 不适用,选择其他 Method。

Method A Failed
↓
Diagnosis
↓
Method B

ActionReplacement

替换具体 Action。


StateRecovery

恢复对象状态。

例如:

Running
↓
Failed
↓
Recover
↓
Ready

ResourceReplacement

当前资源不可用,切换其他资源。


十五、修复执行

Repair 对象描述的是修复方案和修复动作。

真正的修复仍然需要经过 Execution。

因此:

Repair ≠ Execution

完整流程:

Diagnosis → Repair Method → Repair Action → Execution → Result

例如:

Diagnosis:
ObjectNotFound

Repair Method:
SearchAgain

Repair Action:
ScanArea

Execution:
ScanArea

Result:
ObjectFound

RepairService 不能直接认为:

ObjectFound

必须等待实际 Execution 返回 Result。


十六、修复结果

修复结果必须来自实际执行。

可以定义:

RepairResult = ActualExecutionResult

而不能定义:

RepairResult = ExpectedRepairResult

例如:

Expected:
State = Ready

并不意味着:

Actual:
State = Ready

只有实际执行完成后:

Result:
State = Ready

才能形成成功修复。

因此:

Repair Execution ≠ Repair Success


十七、验证

17.1 Verification定义

Verification 是通过实际事实、状态、结果和规则确认诊断或修复是否达到预期条件的过程。

在本章中,Verification 是修复闭环的最终环节。

基本结构:

Repair → Execution → Result → Verification

例如:

Diagnosis
↓
Repair
↓
Execution
↓
Result
↓
Verification

如果验证成功:

Verified
↓
Recovered

如果验证失败:

Not Verified
↓
Re-diagnosis

十八、验证条件

修复验证可以定义:

V = Result ∧ State ∧ Condition ∧ Evidence

其中:

  • Result:实际结果
  • State:当前状态
  • Condition:恢复条件
  • Evidence:验证证据

例如:

Repair:
Recover Robot

Expected State:
Ready

Actual State:
Ready

Result:
Success

如果状态、结果和条件全部满足:

Verification = Passed

否则:

Verification = Failed

十九、修复失败

修复失败不是系统错误,而是合法认知结果。

例如:

Failure
↓
Diagnosis
↓
Repair A
↓
Execution
↓
Result = Failed
↓
Verification = Failed

此时不能无限重复 Repair A。

应该:

Verification Failed → Diagnosis Update → New Repair Candidate

即:

Repair A
↓
Failed
↓
Re-diagnosis
↓
Repair B

如果所有候选修复都失败:

No Valid Repair

系统可以进入:

Blocked
Unrecoverable
ManualRequired

等状态。


二十、Diagnosis与Repair的关系

Diagnosis 和 Repair 不是一对一固定关系。

一个 Diagnosis 可以对应多个 Repair Candidate:

Diagnosis D1
↓
Repair A
Repair B
Repair C

例如:

Cause = ResourceUnavailable

可以有:

Repair A = Wait
Repair B = ReplaceResource
Repair C = ChangeMethod

此时可以交给 DecisionService 选择。

因此:

Diagnosis → Repair Candidates → Decision → Selected Repair

这与普通 Method 选择逻辑是一致的。


二十一、DiagnosisRepairService与DecisionService

DiagnosisRepairService 不应该自己承担所有修复方案选择。

例如:

Diagnosis:
Resource X unavailable

Candidates:
Repair A = Wait
Repair B = Resource Y
Repair C = Method Change

此时:

DecisionService

可以根据:

  • Goal Priority
  • Resource State
  • Risk
  • Capability
  • Experience
  • Repair Cost
  • Expected Result

进行选择。

形成:

Diagnosis → Repair Candidates → Decision → Selected Repair

然后:

Selected Repair → Behavior / Action → Execution

因此 DiagnosisRepairService 负责提供诊断和修复候选,DecisionService 负责在多个可行修复方案之间进行选择。


二十二、DiagnosisRepairService与StateService

诊断和修复通常伴随状态变化。

例如:

Running
↓
Failed

进入:

Diagnosis

修复:

Repair
↓
Recovery

最终:

Ready

但这些状态变化必须经过 StateService。

因此:

DiagnosisRepairService → StateService → StateEngine

例如:

$this->stateService->transition(
    $object,
    'failed',
    'execution_failure'
);

修复完成后:

$this->stateService->transition(
    $object,
    'ready',
    'repair_verified'
);

具体转换是否合法,由 StateEngine 决定。


二十三、异常闭环

DiagnosisRepairService 的核心闭环:

Abnormality → Diagnosis → Repair → Execution → Result → Verification

如果成功:

Abnormality
↓
Diagnosis
↓
Repair
↓
Execution
↓
Result
↓
Verification Passed
↓
Recovered State

如果失败:

Abnormality
↓
Diagnosis
↓
Repair
↓
Execution
↓
Result
↓
Verification Failed
↓
Re-diagnosis

如果无法恢复:

Re-diagnosis
↓
No Valid Repair
↓
Blocked / Unrecoverable

这构成真正的故障恢复闭环。


二十四、异常、风险、冲突三者关系

经过第182章和本章,可以进一步区分:

Risk

表示:

问题可能发生。

Conflict

表示:

当前结构存在不能同时满足的关系。

Abnormality

表示:

实际状态已经偏离正常条件。

因此:

Risk
→ Protection
Conflict
→ Resolution
Abnormality / Failure
→ Diagnosis
→ Repair

三者不能统一成一个 Error 对象。

它们具有不同的认知意义。


二十五、诊断历史

每次诊断都应该形成历史。

例如:

diagnosis_history

可以保存:

id
diagnosis_id
problem
evidence
candidate_cause
selected_cause
reason
state
created_at

这样系统未来可以回答:

过去遇到过什么问题?

当时判断的原因是什么?

采取了什么修复?

最后是否成功?

这可以进一步进入:

History → Memory → Experience


二十六、修复历史

Repair 也应该保存实际历史:

repair_history

包括:

id
repair_id
diagnosis_id
method
action
execution_id
result_id
verification_id
state
created_at

因此未来可以形成:

Diagnosis
↓
Repair History
↓
Memory
↓
Experience

例如:

同类异常
→
Repair A
→
连续成功

最终形成经验:

Condition X
+
Diagnosis Y
→
Repair A
具有较高成功经验

这可以反过来影响下一次修复选择。


二十七、PHP工程结构

DiagnosisRepairService 可以定义:

class DiagnosisRepairService
{
    protected $abnormalityRepository;
    protected $diagnosisRepository;
    protected $repairRepository;
    protected $verificationService;
    protected $stateService;

    public function __construct(
        $abnormalityRepository,
        $diagnosisRepository,
        $repairRepository,
        $verificationService,
        $stateService
    ) {
        $this->abnormalityRepository = $abnormalityRepository;
        $this->diagnosisRepository = $diagnosisRepository;
        $this->repairRepository = $repairRepository;
        $this->verificationService = $verificationService;
        $this->stateService = $stateService;
    }

    public function receiveAbnormality($data)
    {
        // 接收异常
    }

    public function diagnose($abnormality)
    {
        // 组织诊断
    }

    public function createRepair($diagnosis)
    {
        // 建立修复方案
    }

    public function executeRepair($repair)
    {
        // 协调实际修复执行
    }

    public function verifyRepair($repair, $result)
    {
        // 验证修复结果
    }
}

这里需要特别注意:

executeRepair() 不应该自己重新实现完整的 ExecutionEngine。

它应该协调:

Repair → Action → ExecutionService → Execution → Result

因此:

DiagnosisRepairService = 流程协调

而不是:

DiagnosisRepairService = 所有功能集中类


二十八、工程层分工

可以进一步形成:

DiagnosisRepairService
        ↓
AbnormalityEngine
        ↓
DiagnosisEngine
        ↓
RepairEngine
        ↓
VerificationService
        ↓
StateService

各层职责:

AbnormalityEngine

判断实际状态是否异常。

DiagnosisEngine

根据证据和规则寻找原因。

RepairEngine

生成或匹配修复方案。

VerificationService

验证修复结果。

StateService

管理状态转换。

DiagnosisRepairService

协调整个流程。


二十九、数据库结构

29.1 abnormalities

id
object_id
source_type
source_id
expected_value
actual_value
condition
state
severity
created_at

29.2 diagnoses

id
abnormality_id
problem
evidence
cause
recommendation
state
created_at
updated_at

29.3 diagnosis_evidence

id
diagnosis_id
source_type
source_id
evidence_type
value
weight
created_at

用于保存诊断证据来源。


29.4 repairs

id
diagnosis_id
method
action
expected_result
state
created_at
updated_at

29.5 repair_results

id
repair_id
execution_id
expected_result
actual_result
comparison
state
created_at

29.6 repair_verifications

id
repair_id
result_id
condition
verification_result
state
reason
created_at

这样可以保持:

Diagnosis → Repair → Result → Verification

完整可追溯。


三十、验证后的状态恢复

验证通过后,系统才能进入恢复状态。

例如:

Failed
↓
Diagnosis
↓
Repair
↓
Execution
↓
Result
↓
Verification Passed
↓
Ready

如果验证失败:

Failed
↓
Diagnosis
↓
Repair
↓
Execution
↓
Result
↓
Verification Failed
↓
Failed / Diagnosing

状态转换仍然必须经过 StateEngine。

因此:

Verification Passed ≠ 自动修改所有对象状态

而是:

Verification Passed → State Transition Request → StateEngine → New State


三十一、完整ICAI异常恢复链

结合前面所有 Service,可以建立:

ExecutionService

ResultService

FeedbackService

RiskConflictService

DiagnosisRepairService

VerificationService

StateService

MemoryExperienceService

DecisionService

完整异常路径:

Execution
↓
Result
↓
Feedback
↓
Abnormality
↓
Risk / Conflict Analysis
↓
Diagnosis
↓
Repair Candidate
↓
Decision
↓
Selected Repair
↓
Action
↓
Execution
↓
Result
↓
Feedback
↓
Verification
↓
State Recovery
↓
History
↓
Memory
↓
Experience

这已经形成一个完整的异常认知闭环。


三十二、修复经验反馈

修复成功之后,并不意味着认知循环结束。

例如:

Diagnosis:
ObjectNotFound

Repair:
SearchAgain

Result:
ObjectFound

Verification:
Passed

这组事实可以进入:

History

然后形成:

Memory

进一步形成:

Experience

最终:

Experience:
ObjectNotFound
→ SearchAgain
→ Success

未来再次出现相同异常时,系统可以直接获得修复候选。

因此:

Diagnosis → Repair → Verification → Experience

是 ICAI 中非常重要的一条学习路径。


三十三、修复经验与未来决策

假设过去有:

Diagnosis D1
Repair A
Success = 8
Failure = 1

而:

Repair B
Success = 3
Failure = 5

Learning Data 可以形成:

D1 + Repair A
SuccessRate = 8 / 9

D1 + Repair B
SuccessRate = 3 / 8

未来再次出现 D1:

Diagnosis D1
↓
Repair A / Repair B
↓
DecisionService
↓
Repair A

这里仍然属于离散统计与规则计算。

不需要任何大模型训练。


三十四、本章核心模型

DiagnosisRepairService 最终可以定义为:

DRS = Abnormality + Diagnosis + Repair + Verification

进一步:

DRS = Detect + Diagnose + Repair + Verify

完整流程:

Actual Result → Abnormality → Diagnosis → Repair Candidate → Decision → Repair Execution → Result → Verification → State Recovery

如果验证失败:

Verification Failed → Re-diagnosis → New Repair

如果无法恢复:

No Valid Repair → Blocked / Unrecoverable


三十五、本章总结

DiagnosisRepairService 完成的是 ICAI 从“发现异常”到“恢复正常”的工程闭环。

它首先接收实际执行产生的异常事实。

然后通过 Result、Feedback、State、History、Memory、Experience、Knowledge、Risk 和 Conflict 等信息进行诊断。

诊断回答:

“为什么发生?”

修复回答:

“如何恢复?”

验证回答:

“是否真的恢复?”

因此:

Abnormality = 实际偏离

Diagnosis = 原因判断

Repair = 恢复行为

Verification = 实际确认

完整过程:

异常 → 诊断 → 修复 → 执行 → 结果 → 验证 → 状态恢复

如果成功:

Abnormality → Diagnosis → Repair → Verification → Recovered

如果失败:

Abnormality → Diagnosis → Repair → Verification Failed → Re-diagnosis

如果无法恢复:

Diagnosis → No Valid Repair → Blocked / Unrecoverable

最终再进入:

History → Memory → Experience → Learning Data

从而影响未来的:

Risk Evaluation → Diagnosis → Repair Selection → Decision

至此,ICAI 已经形成从正常执行、反馈、风险控制,到异常诊断、修复和验证的连续工程闭环:

Need → Goal → Capability → Method → Decision → Behavior → Action → Execution → Result → Feedback → Risk / Conflict → Diagnosis → Repair → Verification → State → History → Memory → Experience → Learning Data → Decision

整个过程仍然建立在:

事实 + 对象 + 状态 + 关系 + 规则 + 历史 + 经验 + 离散计算

之上。

这里的“诊断”不是生成式模型猜测原因,“修复”也不是自动编造方案,而是根据已有事实、状态、关系、规则、历史和经验形成可追溯的候选处理路径,并通过实际 Execution 和 Verification 确认结果。

因此,DiagnosisRepairService 在 WSaiOS-ICAI 中的核心定位可以最终概括为:

让系统不仅能够发现“出了问题”,还能够说明“为什么出问题、准备怎样处理、实际处理后发生了什么,以及系统是否真正恢复”。

Leave a Reply

Your email address will not be published. Required fields are marked *