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

第75章 Repair 与 Verification

第75章 Repair 与 Verification

在第72章 Detection 中,系统负责发现异常
第73章 Risk 与 Conflict 负责判断风险与冲突
第74章 Diagnosis 负责定位问题并分析原因

因此,Diagnosis 完成以后,还不能认为问题已经解决。

必须继续进入:

Diagnosis
    ↓
Repair
    ↓
Repair Result
    ↓
Verification
    ↓
Verification Result
    ↓
正常 → 继续运行
失败 → 回滚 / 再诊断

Repair 负责改变系统状态,Verification 负责确认这种改变是否真正有效。


1. Repair

Repair 是 ICAI 自我维护体系中,针对已经发现并分析的问题执行修复操作的机制。

其核心不是简单地“修改一个值”,而是:

Diagnosis Result
        ↓
Repair Plan
        ↓
Repair Action
        ↓
Repair Execution
        ↓
Repair Result

Repair 的输入主要来自:

  • DetectionResult
  • Risk
  • ConflictResult
  • DiagnosisResult
  • System State
  • Module State
  • Object State
  • Dependency
  • Memory
  • Experience
  • Rule

Repair 的基本目标是:

Abnormal State
      ↓
Repair
      ↓
Expected State

例如:

Storage.state = FULL

导致:

Memory.update()

失败。

Diagnosis 得到:

Problem = Memory Update Failure
Cause = Storage Full

那么 Repair 可以执行:

清理无效临时数据
        ↓
释放存储空间
        ↓
重新建立可写状态

Repair 并不直接等于成功。

必须产生:

RepairResult

然后交给 Verification。


2. 修复对象

Repair 的对象必须明确。

不能出现:

Repair(system)

这种过于模糊的操作。

应该明确:

System
Module
Object
Property
State
Relation
Rule
Behavior
Action
Storage
Connection
Device
Configuration

2.1 System 修复

系统级问题可以包括:

  • 系统停止
  • 核心服务异常
  • 系统状态错误
  • 模块无法加载
  • 系统依赖异常

例如:

System_A
state = ERROR

Diagnosis:

Cause = Module_B unavailable

Repair:

恢复 Module_B

2.2 Module 修复

模块修复是 ICAI 自维护中比较常见的类型。

例如:

LearningEngine
state = ERROR

Diagnosis:

Cause = MemoryUpdater failure

Repair:

重新初始化 MemoryUpdater

2.3 Object 修复

对象可能存在:

  • 属性错误
  • 状态错误
  • 关系错误
  • 数据损坏
  • 对象不可用

例如:

Device_A.temperature = -999

如果检测规则认为该值无效:

DetectionResult
state = ABNORMAL

Diagnosis:

Problem = Invalid Temperature
Cause = Sensor Data Error

Repair 可以:

重新读取 Sensor

而不是直接把:

temperature = 25

因为系统不能凭空制造一个没有依据的数据。


2.4 Relation 修复

例如:

Motor_A
    depends_on
Cooling_A

如果关系记录错误:

Motor_A
    depends_on
Cooling_B

经过 Diagnosis 确认后,可以修复关系:

删除错误关系
        ↓
建立正确关系

2.5 Rule 修复

规则也可能发生:

Rule Conflict
Rule Invalid
Rule Expired
Rule Disabled

例如:

Rule_A:
IF temperature > 80
THEN STOP

Rule_B:
IF production = TRUE
THEN RUN

当两条规则同时成立时产生冲突。

Repair 并不是简单删除其中一条规则,而可以:

调整 Rule Priority

或者:

增加 Conflict Resolution Rule

例如:

IF temperature > 80
THEN Safety Priority = HIGH

使系统能够明确选择安全规则。


3. 修复方法

Repair Method 是描述“如何修复”的结构。

基本结构:

RepairMethod
{
    id
    type
    target
    condition
    action
    parameters
    priority
    risk
    rollback
    state
}

常见修复方法包括:

3.1 Reset

重新初始化对象或模块。

Module
ERROR
 ↓
RESET
 ↓
READY

3.2 Restart

重新启动模块或服务。

Module_A
ERROR
 ↓
STOP
 ↓
START
 ↓
RUNNING

3.3 Reconnect

针对连接问题重新建立连接。

Device
DISCONNECTED
 ↓
Reconnect
 ↓
CONNECTED

3.4 Restore

恢复已经保存的正确状态。

例如:

Configuration
Current = Invalid
Backup = Valid

执行:

Restore Backup

3.5 Rebuild

重新建立损坏的数据结构。

例如:

Relation Index
CORRUPTED

可以:

Read Relations
      ↓
Validate
      ↓
Rebuild Relation Structure

3.6 Recalculate

重新计算错误的数据。

例如:

Total = 100

但:

A = 30
B = 40
C = 50

重新计算:

30 + 40 + 50 = 120

得到:

Total = 120

3.7 Replace

替换已经确认失效的对象或组件。

例如:

Sensor_A
state = FAILED

如果系统已经存在:

Sensor_B
state = READY

可以:

Sensor_A → Sensor_B

但必须经过条件、能力、风险和验证检查。


3.8 Rollback

当修复本身失败时恢复修复前状态。

Before
   ↓
Repair
   ↓
Failed
   ↓
Rollback
   ↓
Before State

因此 Rollback 不是普通 Repair,而是 Repair 的保护机制。


4. 修复结果

Repair 执行以后必须形成明确结果。

RepairResult
{
    id
    repair_id
    target
    method
    previous_state
    current_state
    changes
    output
    error
    state
    rollback_available
    started_at
    completed_at
}

例如:

RepairResult
{
    id: 9001,
    repair_id: 8001,
    target: "Storage",
    method: "CLEAN_TEMP_DATA",
    previous_state: "FULL",
    current_state: "NORMAL",
    changes: {
        released_space: "2GB"
    },
    output: "Storage available",
    error: null,
    state: "SUCCESS",
    rollback_available: false
}

RepairResult 状态可以包括:

NEW
PREPARING
RUNNING
SUCCESS
FAILED
PARTIAL
CANCELLED
TIMEOUT
CONFLICT
UNKNOWN
ROLLED_BACK

特别需要区分:

Repair SUCCESS

和:

Problem Resolved

二者不是同一个概念。

例如:

Repair:
重新启动 Module_A

执行成功:

RepairResult = SUCCESS

但模块重新启动后仍然:

Module_A.state = ERROR

那么:

Repair SUCCESS
Verification FAILED

因此真正的修复确认必须由 Verification 完成。


5. Verification

Verification 是对 Repair 结果进行验证的机制。

它回答的问题是:

修复以后,系统是否真正恢复到预期状态?

核心关系:

Repair
  ↓
RepairResult
  ↓
Verification
  ↓
VerificationResult

Verification 不负责修复。

它只负责检查:

Expected
    VS
Actual

例如:

Expected:
Storage.state = NORMAL

Actual:
Storage.state = NORMAL

则:

Verification = PASSED

如果:

Expected:
Storage.state = NORMAL

Actual:
Storage.state = FULL

则:

Verification = FAILED

6. 验证条件

Verification 必须具有明确的验证条件。

VerificationCondition
{
    object
    property
    operator
    expected
    actual
    state
}

例如:

VerificationCondition
{
    object: "Storage",
    property: "state",
    operator: "=",
    expected: "NORMAL",
    actual: "NORMAL",
    state: "TRUE"
}

验证条件可以包括:

  • 状态
  • 属性
  • 数据
  • 关系
  • 行为
  • 模块
  • 设备
  • 连接
  • 规则
  • 性能
  • 依赖

6.1 状态验证

Before:
Module_A = ERROR

Repair:
Restart

Expected:
Module_A = READY

验证:

Actual = READY

结果:

PASSED

6.2 属性验证

例如:

temperature = 95

Repair 后:

temperature = 60

验证条件:

temperature < 80

结果:

PASSED

6.3 行为验证

不能只检查:

Behavior.state = SUCCESS

还应该检查行为产生的实际结果。

例如:

Action:
Start Motor_A

验证:

Motor_A.state = RUNNING
Motor_A.speed > 0

两个条件都成立:

Verification = PASSED

6.4 依赖验证

如果原问题来自:

LearningEngine
 ↓
Memory
 ↓
Storage

那么只验证 LearningEngine 重新运行还不够。

还应该验证:

Storage = NORMAL
Memory = WRITABLE
LearningEngine = RUNNING

因为问题可能只是暂时隐藏,而没有真正解决。


7. 修复失败

Repair Failure 有多种情况。

7.1 执行失败

Repair
 ↓
Action Failed

例如:

Reconnect Device_A

结果:

Connection Failed

7.2 部分成功

例如:

Module_A Restart = SUCCESS
Dependency_B Restore = FAILED

因此:

RepairResult = PARTIAL

不能简单记录为 SUCCESS。


7.3 验证失败

这是最重要的一种情况:

Repair = SUCCESS
Verification = FAILED

说明:

修复操作执行成功,但问题没有得到有效解决。

系统应该重新进入:

Detection
   ↓
Diagnosis

而不是继续假定系统已经正常。


7.4 修复产生新异常

例如:

Repair A

虽然解决:

Problem A

却产生:

Problem B

那么:

Repair Result
    ↓
Detection
    ↓
New Detection Result

重新进入自维护循环。


8. 回滚

Rollback 的作用是保护系统。

当修复操作可能造成进一步损坏时,系统应该保留:

Previous State

以及:

Previous Configuration
Previous Relation
Previous Property
Previous Rule
Previous Data

例如:

Before Repair

Module_A
state = ERROR
config = C1

执行 Repair:

config = C2

结果:

Verification FAILED

如果 C2 不可用:

Rollback

恢复:

config = C1

形成:

Before State
      ↓
Backup
      ↓
Repair
      ↓
Verification
      ↓
FAILED
      ↓
Rollback
      ↓
Previous State
      ↓
Verification

回滚也必须验证。

不能认为:

Rollback = Automatically Correct

正确流程是:

Rollback
   ↓
Verification

如果回滚仍然失败:

Rollback Failed

则进入:

Risk
Conflict
Diagnosis
Decision

必要时进入人工处理或安全停止状态。


9. 完整自维护案例

下面使用一个完整案例说明:

LearningEngine

在学习过程中发现:

Memory Update Failed

9.1 Detection

系统检测:

Detection
{
    target: "LearningEngine",
    check_type: "OUTPUT",
    expected: "MEMORY_UPDATED",
    actual: "MEMORY_UPDATE_FAILED",
    state: "ABNORMAL"
}

得到:

DetectionResult = ABNORMAL

9.2 Risk

系统判断:

Risk:
学习结果无法保存

可能造成:

Knowledge Update Lost
Experience Lost
Memory Inconsistent

因此:

RiskLevel = HIGH

9.3 Diagnosis

进一步检查:

LearningEngine
      ↓
MemoryUpdater
      ↓
Memory
      ↓
Storage

检测:

Storage.state = FULL

Diagnosis 得到:

Problem:
Memory Update Failure

Cause:
Storage Full

Dependency:
Memory depends_on Storage

形成:

DiagnosisResult
{
    problem: "Memory Update Failure",
    location: "Storage",
    causes: [
        "Storage Full"
    ],
    dependencies: [
        "Memory -> Storage"
    ],
    conclusion: "Storage capacity unavailable",
    state: "SUPPORTED"
}

9.4 Decision

系统形成修复候选:

Candidate A:
Delete temporary data

Candidate B:
Expand storage

Candidate C:
Ignore error

经过 Risk 与 Priority:

Candidate A = SELECTED
Candidate B = SECONDARY
Candidate C = REJECTED

9.5 Repair

执行:

CLEAN_TEMP_DATA

Repair:

Storage
FULL
 ↓
Clean Temporary Data
 ↓
Storage
NORMAL

得到:

RepairResult
{
    target: "Storage",
    method: "CLEAN_TEMP_DATA",
    previous_state: "FULL",
    current_state: "NORMAL",
    state: "SUCCESS"
}

注意:

此时只能说:

Repair SUCCESS

还不能说:

System Recovered

9.6 Verification

验证第一层:

Storage.state = NORMAL

结果:

PASSED

继续验证:

Memory.writable = TRUE

结果:

PASSED

再验证:

LearningEngine
Memory Update

重新执行必要的保存验证:

Memory Update = SUCCESS

最终:

VerificationResult
{
    target: "LearningEngine",
    conditions: [
        "Storage = NORMAL",
        "Memory = WRITABLE",
        "Memory Update = SUCCESS"
    ],
    state: "PASSED"
}

这时才能确认:

Problem Resolved

9.7 形成经验

自维护完成以后,不应该直接结束。

整个过程可以形成:

Experience
{
    task: "Self Maintenance",
    condition: "Memory Update Failed",
    environment: "Storage Full",
    action: "Clean Temporary Data",
    result: "Storage Normal",
    feedback: "Memory Update Successful",
    outcome: "SUCCESS"
}

然后:

Experience
     ↓
ExperienceMemory
     ↓
Learning

以后如果再次出现:

Memory Update Failed

系统可以查询历史经验:

Current Condition
       ↓
Experience Matching
       ↓
Relevant Experience
       ↓
Reasoning
       ↓
Decision
       ↓
Repair

于是形成完整的自维护闭环。


本章完整自维护模型

Detection
    ↓
DetectionResult
    ↓
Risk / Conflict
    ↓
Priority
    ↓
Diagnosis
    ↓
DiagnosisResult
    ↓
Decision
    ↓
Repair
    ↓
RepairResult
    ↓
Verification
    ↓
VerificationResult
    │
    ├── PASSED → Normal Operation
    │
    └── FAILED
            ↓
        Rollback
            ↓
        Verification
            ↓
        Failed Again
            ↓
        Detection / Diagnosis

进一步形成:

Detection
   ↓
Diagnosis
   ↓
Repair
   ↓
Verification
   ↓
Feedback
   ↓
Experience
   ↓
Learning
   ↓
Memory
   ↓
Reasoning
   ↓
Decision
   ↓
Behavior
   ↓
Action

本章核心定义

Repair

Repair 是 ICAI 根据 Detection、Risk、Conflict 和 Diagnosis 结果,对异常对象、状态、模块、关系、规则、行为、设备或依赖执行确定性修复操作的机制。

Verification

Verification 是 ICAI 在 Repair 完成后,根据预先定义的验证条件,对修复后的实际状态、属性、关系、行为和结果进行检查,以确认问题是否真正得到解决的机制。

最重要的边界是:

Detection   = 发现问题
Diagnosis   = 分析问题
Repair      = 改变问题状态
Verification = 确认是否解决
Rollback    = 修复失败后的状态恢复
Experience  = 保存修复经历
Learning    = 从经历中获取知识

因此,ICAI 的自维护不是:

发现异常 → 修改 → 结束

而是:

发现
→ 分析
→ 决策
→ 修复
→ 验证
→ 失败则回滚
→ 再检测
→ 形成经验
→ 学习更新

这构成了 ICAI 可检测、可诊断、可修复、可验证、可回滚、可学习的自维护闭环。

Leave a Reply

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