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

第229章 ICAI认知数据表

第229章 ICAI认知数据表

229.1 认知数据层的定位

第228章建立了 ICAI 的核心事实数据层:

individuals
objects
attributes
states
relations
scenes

这一层主要回答:

系统当前有什么、是什么状态、对象之间有什么关系、处于什么场景。

第229章进一步进入认知数据层。

认知数据层负责描述:

Knowledge
Need
Goal
Capability
Method
Decision

因此:

CognitiveData=Knowledge+Need+Goal+Capability+Method+DecisionCognitiveData= Knowledge+ Need+ Goal+ Capability+ Method+ Decision

其基本认知链为:

Knowledge
   ↓
Need
   ↓
Goal
   ↓
Capability
   ↓
Method
   ↓
Decision

但是,这并不是简单的数据传递。

实际过程是:

事实
 ↓
知识
 ↓
需求
 ↓
目标
 ↓
能力匹配
 ↓
方法候选
 ↓
决策

最终进入:

Behavior
 ↓
Action
 ↓
Execution

所以第229章的数据表实际上是连接基础事实层与行为执行层的中间认知数据层。


229.2 六类认知Domain的区别

六类数据必须严格区分。

Knowledge

回答:

知道什么?

Need

回答:

为什么需要?

Goal

回答:

希望最终达到什么可验证状态?

Capability

回答:

有没有能力完成?

Method

回答:

可以怎么完成?

Decision

回答:

现在选择哪个方案?

因此:

Knowledge≠NeedKnowledge\neq Need Need≠GoalNeed\neq Goal Goal≠CapabilityGoal\neq Capability Capability≠MethodCapability\neq Method Method≠DecisionMethod\neq Decision

这六类数据不能因为数据库结构相近而合并为一张表。


229.3 Domain与数据库的映射原则

本章所有认知数据都遵循:

Domain Object
      ↓
Mapper
      ↓
Persistence Data
      ↓
Repository
      ↓
PDO
      ↓
MySQL

读取:

MySQL
   ↓
PDO
   ↓
Repository
   ↓
Mapper
   ↓
Domain Object

因此:

DomainObject≠DatabaseRowDomainObject\neq DatabaseRow

同时:

DomainID≠PersistenceIDDomainID\neq PersistenceID

例如:

Domain:
K-001

MySQL:
id = 17
knowledge_code = K-001

17 是数据库主键,K-001 是 Domain 层业务标识。


229.4 knowledge——知识核心表

Knowledge 是 ICAI 认知系统中的结构化知识对象。

第174章和第191章定义:

K=(S,P,O,C,St)K=(S,P,O,C,S_t)

其中:

  • SS:Subject,主体
  • PP:Predicate,谓词
  • OO:Object,客体
  • CC:Condition,条件
  • StS_t:State,知识状态

例如:

Object-A
   supports
Method-M1

可以表示:

K=(ObjectA,supports,MethodM1,C,St)K=(ObjectA,supports,MethodM1,C,S_t)

Knowledge不是文章,不是自然语言段落,也不是数据库中的一条普通文本记录。

它是可被 KnowledgeEngine 计算、匹配、验证和更新的结构化认知数据。


229.5 knowledge表设计

CREATE TABLE knowledge (
    id BIGINT NOT NULL AUTO_INCREMENT,
    knowledge_code VARCHAR(100) NOT NULL,
    subject_type VARCHAR(100) NOT NULL,
    subject_id VARCHAR(100) NOT NULL,
    predicate VARCHAR(100) NOT NULL,
    object_type VARCHAR(100) NULL,
    object_id VARCHAR(100) NULL,
    object_value TEXT NULL,
    condition_data TEXT NULL,
    state VARCHAR(50) NOT NULL,
    evidence TEXT NULL,
    knowledge_time DATETIME NULL,
    created_at DATETIME NOT NULL,
    updated_at DATETIME NOT NULL,
    PRIMARY KEY (id),
    UNIQUE KEY uk_knowledge_code (knowledge_code),
    KEY idx_knowledge_subject (subject_type, subject_id),
    KEY idx_knowledge_predicate (predicate),
    KEY idx_knowledge_object (object_type, object_id),
    KEY idx_knowledge_state (state)
);

这里没有把 subjectpredicateobject 全部压缩到一个 JSON 字段中。

因为 KnowledgeEngine 后续需要进行:

Subject匹配
Predicate匹配
Object匹配
Condition判断
State判断

因此基础字段应该保持可查询结构。


229.6 Knowledge状态

Knowledge不能简单使用:

exists / not_exists

至少应该区分:

candidate
valid
verified
unverified
outdated
invalid
conflicted
archived

因此:

Exists≠ValidExists\neq Valid Valid≠VerifiedValid\neq Verified

一条知识存在于数据库中,不代表它已经经过验证。


229.7 Knowledge Evidence

知识更新必须具有证据。

可以建立:

CREATE TABLE knowledge_evidence (
    id BIGINT NOT NULL AUTO_INCREMENT,
    evidence_code VARCHAR(100) NOT NULL,
    knowledge_code VARCHAR(100) NOT NULL,
    source_type VARCHAR(100) NOT NULL,
    source_id VARCHAR(100) NULL,
    evidence_type VARCHAR(100) NULL,
    evidence_value TEXT NULL,
    evidence_time DATETIME NULL,
    created_at DATETIME NOT NULL,
    PRIMARY KEY (id),
    UNIQUE KEY uk_knowledge_evidence_code (evidence_code),
    KEY idx_knowledge_evidence_knowledge (knowledge_code)
);

形成:

Knowledge
    ↓
Evidence
    ↓
Verification
    ↓
Valid Knowledge

229.8 needs——需求核心表

Need是认知过程的重要起点。

Need回答:

为什么需要某个目标或行为?

Need与Goal不能混合。

例如:

Need:
需要处理订单

并不等于:

Goal:
订单状态必须变为 completed

因此:

Need≠GoalNeed\neq Goal

Need是需求来源,Goal是可验证的目标结构。


229.9 Need模型

可以定义:

N=(ID,T,C,P,S)N=(ID,T,C,P,S)

其中:

  • IDID:Need标识
  • TT:Need类型
  • CC:Need条件
  • PP:Priority,优先级
  • SS:Need状态

例如:

N-001
type = process
condition = order_received
priority = high
state = active

229.10 needs表

CREATE TABLE needs (
    id BIGINT NOT NULL AUTO_INCREMENT,
    need_code VARCHAR(100) NOT NULL,
    individual_id BIGINT NOT NULL,
    need_type VARCHAR(100) NOT NULL,
    description TEXT NULL,
    condition_data TEXT NULL,
    priority INT NOT NULL DEFAULT 0,
    state VARCHAR(50) NOT NULL,
    source_type VARCHAR(100) NULL,
    source_id VARCHAR(100) NULL,
    created_at DATETIME NOT NULL,
    updated_at DATETIME NOT NULL,
    PRIMARY KEY (id),
    UNIQUE KEY uk_need_code (need_code),
    KEY idx_need_individual (individual_id),
    KEY idx_need_type (need_type),
    KEY idx_need_state (state),
    KEY idx_need_priority (priority)
);

Need通常属于某个 Individual。

因此:

Individual
    ↓
Need

一个 Individual 可以具有多个 Need。


229.11 Need的生命周期

Need可以经历:

created
   ↓
pending
   ↓
active
   ↓
converted
   ↓
completed

也可能:

active
   ↓
cancelled

或者:

active
   ↓
expired

其中 converted 表示:

Need
 ↓
Goal Candidate

已经形成目标。


229.12 Need与Goal关系

Need与Goal之间不是一对一强制关系。

一个 Need 可以产生多个 Goal Candidate:

Need N-001
     ↓
 ┌───┼────┐
 ↓   ↓    ↓
G1  G2    G3

随后 GoalEngine 根据条件、优先级和规则形成可执行 Goal。

因此数据库应该建立关联:

CREATE TABLE need_goal_relations (
    id BIGINT NOT NULL AUTO_INCREMENT,
    relation_code VARCHAR(100) NOT NULL,
    need_code VARCHAR(100) NOT NULL,
    goal_code VARCHAR(100) NOT NULL,
    relation_type VARCHAR(100) NOT NULL,
    state VARCHAR(50) NOT NULL,
    created_at DATETIME NOT NULL,
    PRIMARY KEY (id),
    UNIQUE KEY uk_need_goal_relation_code (relation_code),
    KEY idx_need_goal_need (need_code),
    KEY idx_need_goal_goal (goal_code)
);

这样不会把 Need 与 Goal 强行合并。


229.13 goals——目标核心表

Goal定义为:

G=(ID,N,T,C,P,S)G=(ID,N,T,C,P,S)

其中:

  • IDID:Goal标识
  • NN:Goal名称
  • TT:Goal类型
  • CC:Goal条件
  • PP:Priority
  • SS:Goal状态

Goal必须能够最终验证。

因此:

GoalCompleted=Result+VerificationGoalCompleted=Result+Verification

仅仅执行某个行为,并不能证明 Goal 已完成。


229.14 goals表设计

CREATE TABLE goals (
    id BIGINT NOT NULL AUTO_INCREMENT,
    goal_code VARCHAR(100) NOT NULL,
    individual_id BIGINT NOT NULL,
    need_code VARCHAR(100) NULL,
    goal_name VARCHAR(255) NOT NULL,
    goal_type VARCHAR(100) NOT NULL,
    target_type VARCHAR(100) NULL,
    target_id VARCHAR(100) NULL,
    condition_data TEXT NULL,
    priority INT NOT NULL DEFAULT 0,
    state VARCHAR(50) NOT NULL,
    created_at DATETIME NOT NULL,
    updated_at DATETIME NOT NULL,
    PRIMARY KEY (id),
    UNIQUE KEY uk_goal_code (goal_code),
    KEY idx_goal_individual (individual_id),
    KEY idx_goal_need (need_code),
    KEY idx_goal_type (goal_type),
    KEY idx_goal_state (state),
    KEY idx_goal_priority (priority)
);

Goal与Need通过:

need_code

关联。


229.15 Goal状态

Goal至少可以具有:

created
pending
active
paused
blocked
completed
failed
cancelled
expired

特别需要区分:

blocked
failed
completed

三者完全不同。

blocked

当前无法继续。

failed

已经执行但没有达到预期。

completed

实际结果已经满足目标,并且完成验证。

因此:

Failed≠BlockedFailed\neq Blocked Completed≠ExecutedCompleted\neq Executed


229.16 capabilities——能力核心表

Capability回答:

当前有没有能力完成这个目标或执行这个方法?

能力模型:

C=(T,Co,S,R,V)C=(T,Co,S,R,V)

其中:

  • TT:能力类型
  • CoCo:能力条件
  • SS:能力状态
  • RR:能力范围
  • VV:能力验证

229.17 capabilities表设计

CREATE TABLE capabilities (
    id BIGINT NOT NULL AUTO_INCREMENT,
    capability_code VARCHAR(100) NOT NULL,
    individual_id BIGINT NOT NULL,
    capability_type VARCHAR(100) NOT NULL,
    condition_data TEXT NULL,
    state VARCHAR(50) NOT NULL,
    range_min DECIMAL(20,6) NULL,
    range_max DECIMAL(20,6) NULL,
    range_unit VARCHAR(50) NULL,
    range_scope VARCHAR(255) NULL,
    verification_data TEXT NULL,
    created_at DATETIME NOT NULL,
    updated_at DATETIME NOT NULL,
    PRIMARY KEY (id),
    UNIQUE KEY uk_capability_code (capability_code),
    KEY idx_capability_individual (individual_id),
    KEY idx_capability_type (capability_type),
    KEY idx_capability_state (state)
);

229.18 Capability的几个状态层级

Capability必须区分:

Exists
Available
Matched
Verified

例如:

Capability C-001 存在

只说明数据库中有该能力。

如果:

state = available

说明当前可用。

如果:

Goal + Capability

通过 MatchingEngine 检查,才是:

Matched

如果经过实际执行和验证,则:

Verified

所以:

Exists≠Available≠Matched≠VerifiedExists \neq Available \neq Matched \neq Verified


229.19 Capability条件与范围

能力不能只保存:

capability_type

还必须保存:

condition
range
state
verification

例如:

Capability:
process_object

Condition:
resource >= 2

Range:
0 - 100

State:
available

表示:

只有 Resource ≥ 2,并且当前状态允许时,该能力才处于可用条件。

因此:

CapabilityAvailable=Type∧Condition∧State∧RangeCapabilityAvailable = Type \land Condition \land State \land Range

验证后:

CapabilityVerified=CapabilityAvailable∧VerificationCapabilityVerified = CapabilityAvailable \land Verification


229.20 methods——方法核心表

Method回答:

如何实现目标?

方法模型:

M=(T,C,P,A,R)M=(T,C,P,A,R)

其中:

  • TT:Method Type
  • CC:Condition
  • PP:Process
  • AA:Action
  • RR:Expected Result / Requirements

Method不是一次实际执行。

例如:

Method M-001
    ↓
Action A1
    ↓
Action A2
    ↓
Action A3

它只是定义:

可以按照什么过程完成目标。


229.21 methods表设计

CREATE TABLE methods (
    id BIGINT NOT NULL AUTO_INCREMENT,
    method_code VARCHAR(100) NOT NULL,
    individual_id BIGINT NULL,
    method_type VARCHAR(100) NOT NULL,
    method_name VARCHAR(255) NOT NULL,
    condition_data TEXT NULL,
    process_data TEXT NULL,
    expected_result TEXT NULL,
    required_resource TEXT NULL,
    state VARCHAR(50) NOT NULL,
    created_at DATETIME NOT NULL,
    updated_at DATETIME NOT NULL,
    PRIMARY KEY (id),
    UNIQUE KEY uk_method_code (method_code),
    KEY idx_method_individual (individual_id),
    KEY idx_method_type (method_type),
    KEY idx_method_state (state)
);

229.22 Method Process与Action

为了避免把整个执行过程塞入 process_data,工程上可以继续拆表:

methods
   ↓
method_processes
   ↓
method_actions

例如:

CREATE TABLE method_processes (
    id BIGINT NOT NULL AUTO_INCREMENT,
    process_code VARCHAR(100) NOT NULL,
    method_code VARCHAR(100) NOT NULL,
    process_order INT NOT NULL,
    process_name VARCHAR(255) NOT NULL,
    condition_data TEXT NULL,
    created_at DATETIME NOT NULL,
    PRIMARY KEY (id),
    UNIQUE KEY uk_method_process_code (process_code),
    KEY idx_method_process_method (method_code),
    KEY idx_method_process_order (method_code, process_order)
);

这样可以保证:

Process={P1,P2,…,Pn}Process=\{P_1,P_2,\ldots,P_n\}

具有明确顺序。


229.23 Method与Capability

方法通常要求某些能力。

例如:

Goal
 ↓
Method M-001
 ↓
Required Capability
 ↓
Capability C-001

因此可以建立:

CREATE TABLE method_capabilities (
    id BIGINT NOT NULL AUTO_INCREMENT,
    method_code VARCHAR(100) NOT NULL,
    capability_code VARCHAR(100) NOT NULL,
    requirement_type VARCHAR(100) NULL,
    condition_data TEXT NULL,
    created_at DATETIME NOT NULL,
    PRIMARY KEY (id),
    UNIQUE KEY uk_method_capability (
        method_code,
        capability_code
    ),
    KEY idx_method_capability_method (method_code),
    KEY idx_method_capability_capability (capability_code)
);

这里的关联数据不是 Capability 本身,也不是 Method 本身。

它表达:

这个方法需要什么能力。


229.24 decisions——决策核心表

Decision回答:

在多个候选方案中,现在选择哪个?

Decision模型:

D=(C,Ca,R,H)D=(C,Ca,R,H)

其中:

  • CC:Decision Condition
  • CaCa:Candidates
  • RR:Decision Result
  • HH:Decision History

Decision不是Method。

例如:

Method M1
Method M2
Method M3

通过条件和规则计算:

M1 → available
M2 → blocked
M3 → available

再进行:

Decision
    ↓
M1

因此:

Method=候选方案Method=候选方案 Decision=选择过程与选择结果Decision=选择过程与选择结果


229.25 decisions表设计

CREATE TABLE decisions (
    id BIGINT NOT NULL AUTO_INCREMENT,
    decision_code VARCHAR(100) NOT NULL,
    individual_id BIGINT NOT NULL,
    goal_code VARCHAR(100) NULL,
    decision_type VARCHAR(100) NOT NULL,
    condition_data TEXT NULL,
    selected_candidate_type VARCHAR(100) NULL,
    selected_candidate_code VARCHAR(100) NULL,
    result_data TEXT NULL,
    state VARCHAR(50) NOT NULL,
    decision_time DATETIME NOT NULL,
    created_at DATETIME NOT NULL,
    updated_at DATETIME NOT NULL,
    PRIMARY KEY (id),
    UNIQUE KEY uk_decision_code (decision_code),
    KEY idx_decision_individual (individual_id),
    KEY idx_decision_goal (goal_code),
    KEY idx_decision_state (state),
    KEY idx_decision_time (decision_time)
);

229.26 decision_candidates

Decision必须保存候选方案,而不是只保存最终结果。

CREATE TABLE decision_candidates (
    id BIGINT NOT NULL AUTO_INCREMENT,
    candidate_code VARCHAR(100) NOT NULL,
    decision_code VARCHAR(100) NOT NULL,
    candidate_type VARCHAR(100) NOT NULL,
    candidate_id VARCHAR(100) NOT NULL,
    candidate_state VARCHAR(50) NOT NULL,
    score DECIMAL(20,8) NULL,
    reason TEXT NULL,
    evidence TEXT NULL,
    selected TINYINT(1) NOT NULL DEFAULT 0,
    created_at DATETIME NOT NULL,
    PRIMARY KEY (id),
    UNIQUE KEY uk_decision_candidate_code (candidate_code),
    KEY idx_decision_candidate_decision (decision_code),
    KEY idx_decision_candidate_state (candidate_state),
    KEY idx_decision_candidate_score (score)
);

这样可以保存:

Decision D-001

Candidates:
M-001 score 90 selected
M-002 score 75 rejected
M-003 score 40 blocked

而不是只留下:

selected = M-001

229.27 Decision的计算过程

DecisionEngine的计算可以表示为:

CandidateFilter→ConditionEvaluation→CapabilityCheck→StateCheck→RiskCheck→CandidateScore→DecisionResultCandidateFilter \rightarrow ConditionEvaluation \rightarrow CapabilityCheck \rightarrow StateCheck \rightarrow RiskCheck \rightarrow CandidateScore \rightarrow DecisionResult

例如:

Score(Ci)=∑j=1nWjVijScore(C_i) = \sum_{j=1}^{n}W_jV_{ij}

其中:

  • CiC_i:第 ii 个候选方案
  • WjW_j:第 jj 个评价维度权重
  • VijV_{ij}:候选方案 ii 在维度 jj 上的评价值
  • nn:评价维度数量

这些计算由 DecisionEngine 完成。

数据库只保存:

候选方案
计算结果
选择结果
原因
证据
历史

229.28 Decision不存在可选方案也是合法结果

例如:

M1 blocked
M2 unavailable
M3 capability mismatch

最终:

DecisionResult = no_candidate

这不是数据库错误。

它是一个合法认知结果:

CandidateCount=0CandidateCount=0

此时系统应该进入:

Risk
Conflict
Diagnosis
Replan
HumanInput

等后续处理。

不能为了让系统“必须选择一个”而虚构方案。


229.29 六张核心认知表之间的关系

总体结构:

knowledge
    │
    │ provides facts
    ↓
needs
    │
    ↓
goals
    │
    ↓
capabilities
    │
    ↓
methods
    │
    ↓
decisions

但实际数据库关系更准确地表示为:

Individual
    │
    ├────────→ Needs
    │             │
    │             ↓
    │           Goals
    │             │
    │       ┌─────┴─────┐
    │       ↓           ↓
    │  Capabilities   Methods
    │       │           │
    │       └─────┬─────┘
    │             ↓
    │         Decisions
    │
    └────────→ Knowledge

Knowledge可以同时作用于:

Goal
Capability
Method
Decision

因此 Knowledge不是简单的上游表,而是整个认知层的基础知识来源之一。


229.30 六类数据的工程职责

数据 主要问题 主要Engine 主要Repository
Knowledge 知道什么 KnowledgeEngine KnowledgeRepository
Need 为什么需要 Goal/Need相关计算 NeedRepository
Goal 要达到什么 GoalEngine GoalRepository
Capability 能不能做 CapabilityEngine CapabilityRepository
Method 怎么做 MethodEngine MethodRepository
Decision 选哪个 DecisionEngine DecisionRepository

这里必须注意:

Repository≠EngineRepository\neq Engine

例如:

KnowledgeEngine

负责知识计算。

KnowledgeRepository

负责知识保存和查询。

同理:

DecisionEngine

负责决策计算。

DecisionRepository

负责决策持久化。


229.31 六类数据的完整Domain模型

可以统一表示:

Knowledge

K=(S,P,O,C,St)K=(S,P,O,C,S_t)

Need

N=(ID,T,C,P,S)N=(ID,T,C,P,S)

Goal

G=(ID,N,T,C,P,S)G=(ID,N,T,C,P,S)

Capability

C=(T,Co,S,R,V)C=(T,Co,S,R,V)

Method

M=(T,C,P,A,R)M=(T,C,P,A,R)

Decision

D=(C,Ca,R,H)D=(C,Ca,R,H)

这些模型中的符号虽然存在局部重复,但每个模型内部具有明确语义。

工程代码中应该使用明确字段名称,避免直接依赖单字母变量造成混淆。


229.32 从Need到Decision的完整认知过程

一个完整过程:

Need
 ↓
Need Validation
 ↓
Goal Candidate
 ↓
GoalEngine
 ↓
Goal
 ↓
CapabilityEngine
 ↓
Capability Candidates
 ↓
MatchingEngine
 ↓
MethodEngine
 ↓
Method Candidates
 ↓
DecisionEngine
 ↓
Decision
 ↓
Selected Method

之后:

Selected Method
      ↓
BehaviorEngine
      ↓
Behavior
      ↓
ActionEngine
      ↓
ExecutionEngine

229.33 数据验证原则

六类认知数据都不能使用“只要字段存在就有效”的判断。

例如:

knowledge_code存在

不能直接推出:

Knowledge有效

同样:

goal_code存在

不能推出:

Goal有效

因此:

Exists≠ValidExists\neq Valid

更进一步:

Valid≠VerifiedValid\neq Verified

只有满足相应证据、条件、规则和验证要求,才能进入后续可靠计算。


229.34 数据更新原则

认知数据更新统一遵循:

Dt+ΔF→Dt+1D_t+\Delta F\rightarrow D_{t+1}

其中:

  • DtD_t:当前认知数据
  • ΔF\Delta F:经过验证的新事实变化
  • Dt+1D_{t+1}:更新后的认知数据

例如 Knowledge:

Kt+ΔK→Kt+1K_t+\Delta K\rightarrow K_{t+1}

Capability:

Ct+ΔC→Ct+1C_t+\Delta C\rightarrow C_{t+1}

Method:

Mt+ΔM→Mt+1M_t+\Delta M\rightarrow M_{t+1}

Goal:

Gt+ΔG→Gt+1G_t+\Delta G\rightarrow G_{t+1}

更新不是简单覆盖。

必须保存:

Before
Change
Reason
Evidence
Verification
After
Time

229.35 History与当前认知数据

当前数据:

knowledge
needs
goals
capabilities
methods
decisions

与历史数据必须分开。

例如:

methods
method_history

以及:

decisions
decision_history

不能直接把历史记录覆盖掉。

因为后续:

MemoryEngine
ExperienceEngine
LearningEngine
DiagnosisEngine

都可能需要使用这些历史事实。

因此:

CurrentData≠HistoryCurrentData\neq History


229.36 推荐的历史表

本认知数据层可以建立:

knowledge_history
need_history
goal_history
capability_history
method_history
decision_history

例如:

CREATE TABLE goal_history (
    id BIGINT NOT NULL AUTO_INCREMENT,
    history_code VARCHAR(100) NOT NULL,
    goal_code VARCHAR(100) NOT NULL,
    state_before VARCHAR(50) NULL,
    state_after VARCHAR(50) NULL,
    change_data TEXT NULL,
    reason_data TEXT NULL,
    evidence TEXT NULL,
    created_at DATETIME NOT NULL,
    PRIMARY KEY (id),
    UNIQUE KEY uk_goal_history_code (history_code),
    KEY idx_goal_history_goal (goal_code),
    KEY idx_goal_history_time (created_at)
);

历史数据采用追加方式更容易保持完整轨迹。


229.37 PHP Domain目录

对应PHP工程:

app/
├── Domain/
│   ├── Knowledge/
│   │   └── Knowledge.php
│   ├── Need/
│   │   └── Need.php
│   ├── Goal/
│   │   └── Goal.php
│   ├── Capability/
│   │   └── Capability.php
│   ├── Method/
│   │   └── Method.php
│   └── Decision/
│       └── Decision.php
│
├── Engines/
│   ├── KnowledgeEngine.php
│   ├── GoalEngine.php
│   ├── CapabilityEngine.php
│   ├── MethodEngine.php
│   └── DecisionEngine.php
│
├── Repositories/
│   ├── KnowledgeRepository.php
│   ├── NeedRepository.php
│   ├── GoalRepository.php
│   ├── CapabilityRepository.php
│   ├── MethodRepository.php
│   └── DecisionRepository.php
│
└── Mapping/
    ├── KnowledgeMapper.php
    ├── NeedMapper.php
    ├── GoalMapper.php
    ├── CapabilityMapper.php
    ├── MethodMapper.php
    └── DecisionMapper.php

229.38 Service、Engine、Repository的调用关系

完整结构:

Controller
    ↓
Service
    ↓
Engine
    ↓
Domain Object
    ↓
Mapper
    ↓
Repository
    ↓
PDO
    ↓
MySQL

但是 Engine 不应该直接调用 Repository。

更合理的职责划分是:

Service
 ├── Load Domain ← Repository
 │
 ├── Calculate ← Engine
 │
 ├── Validate
 │
 ├── Verify
 │
 └── Save Domain → Repository

因此:

Service=OrchestrationService=Orchestration Engine=CalculationEngine=Calculation Domain=StructureDomain=Structure Repository=PersistenceRepository=Persistence MySQL=StorageMySQL=Storage


229.39 一个完整认知案例

假设 Individual:

I-001

产生:

Need N-001

Need:

type = process
priority = high

GoalEngine产生:

Goal G-001

目标:

Object O-001
state → completed

随后 CapabilityEngine发现:

C-001
process_object
available

MatchingEngine:

G-001 ↔ C-001
matched

MethodEngine产生:

M-001
standard_process

以及:

M-002
alternative_process

DecisionEngine计算:

M-001 = available
M-002 = available

最终:

Decision D-001
selected = M-001

于是:

D-001
 ↓
M-001
 ↓
Behavior
 ↓
Action
 ↓
Execution

这就是六类认知数据进入实际行为的完整路径。


229.40 异常情况下的数据变化

如果:

M-001

执行失败:

Execution
 ↓
Result = failed
 ↓
Feedback
 ↓
Diagnosis

如果发现:

Resource Insufficient

那么不应该立即:

Capability C-001 = invalid

而应该首先判断:

Failure Cause
    ↓
Resource

如果能力本身仍然有效:

Capability C-001 = available

而方法条件可能被 LearningEngine发现需要变化:

Method M-001
condition:
resource >= 1

↓

Learning Candidate

↓

resource >= 2

最后:

UpdateEngine
 ↓
Method Update
 ↓
MethodRepository

这说明认知数据之间存在严格的因果边界。


229.41 六类认知数据与前后章节的连接

前一层:

Individual
Object
Attribute
State
Relation
Scene

进入本章:

Knowledge
Need
Goal
Capability
Method
Decision

下一层:

Behavior
Action
Execution
Result
Feedback

再往后:

Memory
Experience
Risk
Conflict
Diagnosis
Repair
Learning
Update

最终形成:

Core Data
     ↓
Cognitive Data
     ↓
Runtime Data
     ↓
Memory / Experience
     ↓
Risk / Diagnosis
     ↓
Learning / Update
     ↓
Core Data

这构成 ICAI 的数据闭环。


229.42 ICAI认知数据库总体结构

目前数据库已经可以形成三层:

第一层:核心事实数据

individuals
objects
attributes
states
relations
scenes

第二层:认知数据

knowledge
needs
goals
capabilities
methods
decisions

第三层:运行数据

behaviors
actions
executions
results
feedbacks

随后再接:

memories
experiences
risks
conflicts
abnormalities
diagnoses
repairs
learning_records
update_records

因此:

ICAIData=Core+Cognitive+Runtime+Maintenance+LearningICAIData= Core + Cognitive + Runtime + Maintenance + Learning


229.43 本章核心原则

第一:

Knowledge≠NeedKnowledge\neq Need

知识不是需求。

第二:

Need≠GoalNeed\neq Goal

需求不是目标。

第三:

Goal≠CapabilityGoal\neq Capability

目标不是能力。

第四:

Capability≠MethodCapability\neq Method

能力不是方法。

第五:

Method≠DecisionMethod\neq Decision

方法不是决策。

第六:

Decision≠BehaviorDecision\neq Behavior

决策不是行为。

第七:

Exists≠Valid≠VerifiedExists\neq Valid\neq Verified

存在、有效、验证通过是三个不同层次。

第八:

CurrentData≠HistoryCurrentData\neq History

当前数据与历史数据必须分离。

第九:

Engine≠RepositoryEngine\neq Repository

Engine负责计算,Repository负责持久化。

第十:

Domain≠MySQLDomain\neq MySQL

Domain Object不能直接等同于数据库记录。


229.44 本章总结

第229章建立了 ICAI 的核心认知数据层:

Knowledge+Need+Goal+Capability+Method+Decision\boxed{ Knowledge+ Need+ Goal+ Capability+ Method+ Decision }

其中:

Knowledge→Need→Goal→Capability→Method→DecisionKnowledge \rightarrow Need \rightarrow Goal \rightarrow Capability \rightarrow Method \rightarrow Decision

表达从认知基础、需求形成、目标确定、能力判断、方法形成到方案选择的完整认知路径。

数据库核心表:

knowledge
needs
goals
capabilities
methods
decisions

辅助关联表:

knowledge_evidence
need_goal_relations
method_capabilities
decision_candidates

历史表:

knowledge_history
need_history
goal_history
capability_history
method_history
decision_history

工程边界保持为:

Domain
   ↓
Engine
   ↓
Service
   ↓
Mapper
   ↓
Repository
   ↓
PDO
   ↓
MySQL

其中:

KnowledgeEngine
    = 知识计算

GoalEngine
    = 目标计算

CapabilityEngine
    = 能力计算

MethodEngine
    = 方法计算

DecisionEngine
    = 决策计算

而:

KnowledgeRepository
NeedRepository
GoalRepository
CapabilityRepository
MethodRepository
DecisionRepository

负责对应认知数据的保存、查询、更新和历史持久化。

最终形成:

CoreData→CognitiveData→RuntimeData→Feedback→Learning→Update→CoreData\boxed{ CoreData \rightarrow CognitiveData \rightarrow RuntimeData \rightarrow Feedback \rightarrow Learning \rightarrow Update \rightarrow CoreData }

至此,ICAI已经从第228章的核心事实数据层进入第229章的认知数据层。这一层为后续 Behavior、Action、Execution、Result、Feedback 以及 Memory、Experience、Learning 提供正式的数据基础。

Leave a Reply

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