第244章 ICAI认知MVC
244.1 提出背景
第243章建立了 ICAI 的完整 MVC 数据流:
Browser→Controller→Service→Engine→DomainObject→Repository→MySQLBrowser \rightarrow Controller \rightarrow Service \rightarrow Engine \rightarrow DomainObject \rightarrow Repository \rightarrow MySQL
这一结构解决的是 ICAI 软件系统中:
一个完整 Web 请求如何进入系统、经过业务层和计算层、访问持久化数据,并最终返回 View。
但是,ICAI 最核心的运行并不是普通的数据增删改查,而是:
一个机器个体接收到信息以后,如何形成认知结果。
因此,在通用 MVC 结构基础上,需要进一步建立 ICAI 的认知 MVC。
其核心结构为:
认知请求→Controller→CognitiveService→CognitiveEngine→认知结果\boxed{ 认知请求 \rightarrow Controller \rightarrow CognitiveService \rightarrow CognitiveEngine \rightarrow 认知结果 }
这条链路不是普通 CRUD 的简单变形,而是将前面建立的:
对象→属性→状态→关系→场景→知识→匹配→判断对象 \rightarrow 属性 \rightarrow 状态 \rightarrow 关系 \rightarrow 场景 \rightarrow 知识 \rightarrow 匹配 \rightarrow 判断
转换为实际程序运行过程。
244.2 ICAI认知MVC定义
ICAI认知MVC(ICAI Cognitive MVC),是指将 ICAI 的认知过程映射到 MVC 软件工程结构,使认知请求能够通过 Controller 进入 CognitiveService,再由 CognitiveEngine 执行认知计算,最终形成结构化认知结果。
其基本模型:
认知请求
↓
Controller
↓
CognitiveService
↓
CognitiveEngine
↓
认知结果
如果涉及已有个体数据:
认知请求
↓
Controller
↓
CognitiveService
↓
CognitiveEngine
↓
Domain Object
↓
Repository
↓
MySQL
然后:
MySQL
↓
Repository
↓
Domain Object
↓
CognitiveEngine
↓
CognitiveService
↓
Controller
↓
认知结果
因此:
CognitiveMVC=Request+Service+Engine+Result\boxed{ CognitiveMVC= Request+Service+Engine+Result }
244.3 认知请求
**认知请求(Cognitive Request)**是要求 ICAI 对某一信息、对象、状态、关系、场景或问题进行认知处理的输入。
例如:
机器个体:企业个体A
认知请求:
“当前订单是否处于异常状态?”
或者:
机器个体:个人个体A
认知请求:
“当前任务是否已经完成?”
认知请求不是简单的数据库查询。
因此:
CognitiveRequest≠DatabaseQueryCognitiveRequest\neq DatabaseQuery
数据库查询解决:
数据在哪里?
认知请求解决:
当前信息代表什么?当前对象处于什么状态?应该如何理解?
244.4 认知请求结构
认知请求可以定义为:
CR={Individual,Input,Object,Condition,Context,Time}CR= \{ Individual, Input, Object, Condition, Context, Time \}
其中:
Individual:进行认知的机器个体;Input:输入信息;Object:认知对象;Condition:认知条件;Context:认知场景;Time:认知时间。
例如:
Individual = 企业机器个体
Input = 订单数据
Object = 当前订单
Condition = 当前状态
Context = 订单处理场景
Time = 当前时间
244.5 Controller接收认知请求
认知请求首先进入 Controller。
例如:
class CognitiveController
{
protected $service;
public function __construct(
CognitiveService $service
) {
$this->service = $service;
}
public function analyze()
{
$input =
isset($_POST['input'])
? $_POST['input']
: '';
return $this->service
->cognize($input);
}
}
Controller 的作用是:
HTTPRequest→CognitiveRequestHTTPRequest \rightarrow CognitiveRequest
它负责把外部请求转换成系统能够理解的认知请求。
244.6 Controller不负责认知
Controller 可以处理:
- 请求;
- 参数;
- 基础验证;
- 身份;
- 响应。
但是不能把认知规则直接写在 Controller 中。
错误结构:
Controller
↓
读取输入
↓
判断对象
↓
判断属性
↓
判断状态
↓
计算关系
↓
形成结论
这种方式会导致 Controller 同时承担:
Request+Business+CognitionRequest+Business+Cognition
正确结构:
Controller
↓
CognitiveService
↓
CognitiveEngine
因此:
Controller≠CognitiveEngine\boxed{ Controller\neq CognitiveEngine }
244.7 CognitiveService
**CognitiveService(认知服务)**是 ICAI 认知业务流程的组织层。
它位于:
ControllerController
与:
CognitiveEngineCognitiveEngine
之间。
其基本作用是:
CognitiveService=CognitiveBusinessFlowCognitiveService= CognitiveBusinessFlow
例如:
class CognitiveService
{
protected $engine;
public function __construct(
CognitiveEngine $engine
) {
$this->engine = $engine;
}
public function cognize(
$request
) {
return $this->engine
->process($request);
}
}
244.8 CognitiveService的职责
CognitiveService 主要负责:
接收认知请求
↓
组织认知上下文
↓
准备Domain Object
↓
调用认知Engine
↓
接收认知结果
↓
组织业务结果
因此:
CognitiveService=认知流程组织者\boxed{ CognitiveService = 认知流程组织者 }
它不应该代替 CognitiveEngine 执行具体认知计算。
244.9 CognitiveEngine
**CognitiveEngine(认知引擎)**是 ICAI 中执行认知计算的核心工程对象。
它负责将认知请求转换为认知结果。
基本形式:
CognitiveResult=F(Object,Attribute,State,Relation,Scene,Knowledge,Condition)\boxed{ CognitiveResult = F( Object, Attribute, State, Relation, Scene, Knowledge, Condition ) }
例如:
class CognitiveEngine
{
public function process(
$request
) {
$object =
$request['object'];
$state =
$request['state'];
if ($state === 'active') {
return array(
'type' => 'normal',
'object' => $object,
'state' => $state
);
}
return array(
'type' => 'abnormal',
'object' => $object,
'state' => $state
);
}
}
这里的判断完全建立在明确的数据、规则和条件上。
244.10 CognitiveEngine与ICAI认知理论
CognitiveEngine 不是一个普通计算类。
它对应 ICAI 的认知理论。
理论:
Object→Attribute→State→Relation→Scene→CognitiveResultObject \rightarrow Attribute \rightarrow State \rightarrow Relation \rightarrow Scene \rightarrow CognitiveResult
工程:
DomainObject→CognitiveEngine→CognitiveResultDomainObject \rightarrow CognitiveEngine \rightarrow CognitiveResult
因此:
CognitiveEngine=ICAI认知理论的工程执行层\boxed{ CognitiveEngine = ICAI认知理论的工程执行层 }
244.11 认知对象
认知计算首先需要明确对象。
例如:
Object
ID = 1001
Type = Order
程序中:
$order =
$repository->find(1001);
形成:
DatabaseRecord→Repository→OrderObjectDatabaseRecord \rightarrow Repository \rightarrow OrderObject
然后 CognitiveEngine 才能够处理这个对象。
因此:
Cognition→Object\boxed{ Cognition\rightarrow Object }
244.12 属性认知
获得对象以后,CognitiveEngine 读取对象属性。
例如:
订单
金额 = 1000
地区 = 深圳
客户类型 = 企业
形成:
Object→AttributeObject \rightarrow Attribute
属性是对象认知的重要组成部分。
因此:
Attribute=Name+Value+Type+ConditionAttribute= Name+Value+Type+Condition
244.13 状态认知
对象属性还不能完整描述当前情况。
例如:
订单
状态 = 待处理
因此需要:
Object→StateObject \rightarrow State
状态表示对象在某一时间和条件下的实际状态。
例如:
Statet=PendingState_t=Pending
经过行为以后:
Statet+1=CompletedState_{t+1}=Completed
244.14 关系认知
ICAI 不仅认识单个对象,还需要认识对象之间的关系。
例如:
客户
↓
下单
↓
订单
可以表示:
Customer→PlaceOrderOrderCustomer \xrightarrow{PlaceOrder} Order
因此:
Relation=Subject+Type+Object+ConditionRelation= Subject+Type+Object+Condition
CognitiveEngine 可以根据关系判断对象所处的实际结构。
244.15 场景认知
对象、属性、状态和关系还需要放入具体场景。
例如:
场景:
深圳
工作日
上午
订单处理
形成:
Scene=Object+Attribute+State+Relation+Condition+Time+SpaceScene= Object+ Attribute+ State+ Relation+ Condition+ Time+ Space
因此:
CognitiveEngine=SceneAwareCalculation\boxed{ CognitiveEngine = SceneAwareCalculation }
即认知计算必须能够结合当前场景。
244.16 知识参与认知
CognitiveEngine 还可以使用机器个体已经建立的知识。
例如:
规则:
订单超过处理时间
且状态仍为待处理
→
可能异常
形成:
Knowledge→Rule→CognitiveCalculationKnowledge \rightarrow Rule \rightarrow CognitiveCalculation
因此:
CognitiveResult=F(Object,Attribute,State,Relation,Scene,Knowledge)CognitiveResult = F( Object, Attribute, State, Relation, Scene, Knowledge )
244.17 认知计算
完整认知计算可以定义:
C=F(O,A,S,R,Sc,K)\boxed{ C= F(O,A,S,R,Sc,K) }
其中:
- CC:认知结果;
- OO:对象;
- AA:属性;
- SS:状态;
- RR:关系;
- ScSc:场景;
- KK:知识。
这不是生成文本,而是对结构化对象进行规则和逻辑计算。
因此:
ICAI认知计算=结构化信息计算\boxed{ ICAI认知计算 = 结构化信息计算 }
244.18 认知结果
**认知结果(Cognitive Result)**是 CognitiveEngine 对输入对象及其相关信息进行计算后形成的结构化结果。
可以定义:
CognitiveResult={Object,State,Relation,Judgment,Reason,Confidence,Time}CognitiveResult= \{ Object, State, Relation, Judgment, Reason, Confidence, Time \}
例如:
array(
'object' => 'order_1001',
'state' => 'pending',
'judgment' => 'abnormal',
'reason' => 'timeout',
'confidence' => 0.92
);
这里的 confidence 如果使用,应明确表示基于既定规则、权重或概率计算得到的结果置信度,而不是生成式模型的概率输出。
244.19 认知结果与业务结果
认知结果:
CognitiveResultCognitiveResult
与业务结果:
BusinessResultBusinessResult
不能完全等同。
例如:
CognitiveResult=AbnormalCognitiveResult= Abnormal
业务层可能进一步决定:
BusinessResult=CreateAlertBusinessResult= CreateAlert
因此:
CognitiveEngine
↓
CognitiveResult
↓
CognitiveService
↓
BusinessResult
244.20 CognitiveService处理认知结果
CognitiveService 获得:
CognitiveResultCognitiveResult
以后,可以根据业务流程继续处理。
例如:
$result =
$this->engine
->process($request);
if (
$result['judgment']
=== 'abnormal'
) {
return array(
'success' => true,
'action' => 'alert',
'cognition' => $result
);
}
return array(
'success' => true,
'action' => 'none',
'cognition' => $result
);
因此:
CognitiveResult→BusinessDecisionCognitiveResult \rightarrow BusinessDecision
244.21 认知MVC完整数据流
完整认知流程:
认知请求
↓
Controller
↓
CognitiveService
↓
CognitiveEngine
↓
Domain Object
↓
认知计算
↓
CognitiveResult
↓
CognitiveService
↓
Controller
如果需要访问数据库:
认知请求
↓
Controller
↓
CognitiveService
↓
Repository
↓
MySQL
↓
Repository
↓
Domain Object
↓
CognitiveEngine
↓
CognitiveResult
244.22 认知MVC与普通MVC的区别
普通 MVC:
Request→Service→Engine→ResultRequest \rightarrow Service \rightarrow Engine \rightarrow Result
认知 MVC:
CognitiveRequest→CognitiveService→CognitiveEngine→CognitiveResultCognitiveRequest \rightarrow CognitiveService \rightarrow CognitiveEngine \rightarrow CognitiveResult
区别在于认知 MVC 的 Engine 处理的是:
CognitiveStructureCognitiveStructure
而普通业务 Engine 可能处理:
BusinessRuleBusinessRule
因此:
CognitiveEngine≠GenericBusinessEngine\boxed{ CognitiveEngine\neq GenericBusinessEngine }
244.23 认知MVC与Domain Object
CognitiveEngine 不应该直接操作数据库。
正确结构:
Repository→DomainObject→CognitiveEngineRepository \rightarrow DomainObject \rightarrow CognitiveEngine
例如:
$individual =
$repository->find(
$individualId
);
$request = array(
'individual' => $individual,
'input' => $input
);
$result =
$this->engine
->process($request);
因此:
CognitiveEngine→DomainObject\boxed{ CognitiveEngine \rightarrow DomainObject }
而不是:
CognitiveEngine→MySQLCognitiveEngine \rightarrow MySQL
244.24 认知请求与机器个体
ICAI 的认知不是脱离个体的。
因此认知请求必须明确:
IndividualIndividual
例如:
Individual = Enterprise_1001
同一个输入对于不同机器个体可能产生不同认知结果。
因此:
CognitiveResult=F(Individual,Input,Knowledge,Capability,Condition)CognitiveResult = F( Individual, Input, Knowledge, Capability, Condition )
由此体现 ICAI 的核心:
不同机器个体具有不同的认知结构。
244.25 个体差异
假设:
I1I_1
与:
I2I_2
分别代表两个不同机器个体。
即使:
Input(I1)=Input(I2)Input(I_1)=Input(I_2)
也不能要求:
Cognition(I1)=Cognition(I2)Cognition(I_1)=Cognition(I_2)
因为:
Knowledge(I1)≠Knowledge(I2)Knowledge(I_1) \neq Knowledge(I_2)
或者:
Capability(I1)≠Capability(I2)Capability(I_1) \neq Capability(I_2)
因此:
Cognition(I)=F(Input,Knowledge,Capability,State,Goal)\boxed{ Cognition(I)= F(Input,Knowledge,Capability,State,Goal) }
244.26 认知请求的完整结构
可以进一步建立:
CognitiveRequest={Individual,Input,Object,Context,Condition,Goal}CognitiveRequest= \{ Individual, Input, Object, Context, Condition, Goal \}
其中:
Individual:机器个体;Input:输入信息;Object:认知对象;Context:当前场景;Condition:当前条件;Goal:认知目的。
因此 CognitiveEngine 获得的不是孤立字符串,而是一个完整认知上下文。
244.27 CognitiveEngine内部处理流程
CognitiveEngine 可以按照以下顺序工作:
认知请求
↓
读取机器个体
↓
识别对象
↓
读取属性
↓
读取状态
↓
读取关系
↓
识别场景
↓
加载知识
↓
条件匹配
↓
规则计算
↓
形成判断
↓
形成认知结果
形式化:
Input→Object→Attribute→State→Relation→Scene→Knowledge→Matching→Judgment→ResultInput \rightarrow Object \rightarrow Attribute \rightarrow State \rightarrow Relation \rightarrow Scene \rightarrow Knowledge \rightarrow Matching \rightarrow Judgment \rightarrow Result
244.28 CognitiveEngine与认知匹配
前面章节已经建立:
Matching=f(Compare,ConditionCheck,StructureCheck,RelationCheck,ResultEvaluation)Matching= f( Compare, ConditionCheck, StructureCheck, RelationCheck, ResultEvaluation )
因此 CognitiveEngine 可以调用认知匹配机制:
CognitiveEngine→MatchingEngineCognitiveEngine \rightarrow MatchingEngine
或者在内部组织匹配计算。
例如:
对象匹配
↓
属性匹配
↓
状态匹配
↓
关系匹配
↓
场景匹配
↓
知识匹配
↓
认知结果
这样认知 MVC 可以与前面的认知理论直接连接。
244.29 CognitiveEngine与认知结果解释
认知结果不仅需要给出:
normal
还应该能够说明形成结果的主要依据。
例如:
array(
'judgment' => 'abnormal',
'reason' => array(
'state' => 'pending',
'timeout' => true,
'rule' => 'order_timeout'
)
);
因此:
CognitiveResult=Judgment+ReasonCognitiveResult= Judgment+Reason
这样结果具有可追踪性。
244.30 认知MVC异常处理
认知过程中也可能出现异常。
例如:
认知请求
↓
Controller
↓
CognitiveService
↓
CognitiveEngine
↓
缺少必要对象
如果属于业务条件:
CognitiveFailureCognitiveFailure
如果属于系统错误:
SystemExceptionSystemException
例如数据库无法访问:
PersistenceExceptionPersistenceException
因此:
CognitiveFailure≠PersistenceExceptionCognitiveFailure \neq PersistenceException
244.31 认知结果与Controller
CognitiveService 最终把结果返回 Controller:
$result =
$this->cognitiveService
->cognize($request);
Controller 再决定输出方式:
HTML
JSON
页面
API Response
例如:
return array(
'success' => true,
'data' => $result
);
因此:
CognitiveResult→ControllerResponseCognitiveResult \rightarrow ControllerResponse
244.32 认知MVC与View
如果认知请求来自 Web 页面:
CognitiveResult
↓
Controller
↓
ViewData
↓
Smarty
↓
HTML
例如:
<h2>
认知结果
</h2>
<p>
{$result.judgment}
</p>
<p>
{$result.reason}
</p>
因此:
CognitiveResult→ViewCognitiveResult \rightarrow View
244.33 认知MVC与JSON
如果认知请求来自系统接口,也可以直接输出结构化 JSON:
header(
'Content-Type: application/json'
);
echo json_encode(
$result
);
形成:
CognitiveResult→JSON→ClientCognitiveResult \rightarrow JSON \rightarrow Client
这里的 JSON 只是系统间的数据表达方式,不属于认知机制本身。
244.34 ICAI认知MVC完整模型
综合本章:
CognitiveRequest→Controller→CognitiveService→CognitiveEngine→CognitiveResult\boxed{ CognitiveRequest \rightarrow Controller \rightarrow CognitiveService \rightarrow CognitiveEngine \rightarrow CognitiveResult }
如果认知过程中需要数据:
CognitiveEngine→DomainObject→Repository→MySQL\boxed{ CognitiveEngine \rightarrow DomainObject \rightarrow Repository \rightarrow MySQL }
读取完成后:
MySQL→Repository→DomainObject→CognitiveEngine\boxed{ MySQL \rightarrow Repository \rightarrow DomainObject \rightarrow CognitiveEngine }
最终:
CognitiveResult→CognitiveService→Controller→View\boxed{ CognitiveResult \rightarrow CognitiveService \rightarrow Controller \rightarrow View }
244.35 ICAI认知MVC完整运行链
最终形成:
Cognitive Request
↓
┌──────────────┐
│ Controller │
└──────┬───────┘
↓
┌──────────────┐
│CognitiveService│
└──────┬───────┘
↓
┌──────────────┐
│CognitiveEngine│
└──────┬───────┘
↓
┌──────────────┐
│Domain Object │
└──────┬───────┘
↓
┌──────────────┐
│ Repository │
└──────┬───────┘
↓
┌──────────────┐
│ MySQL │
└──────┬───────┘
↓
Domain Object
↓
CognitiveEngine
↓
CognitiveResult
↓
CognitiveService
↓
Controller
↓
View/JSON
244.36 本章总结
第244章将前面建立的 MVC 工程结构进一步应用到 ICAI 的核心认知过程。
基本认知链为:
认知请求→Controller→CognitiveService→CognitiveEngine→认知结果\boxed{ 认知请求 \rightarrow Controller \rightarrow CognitiveService \rightarrow CognitiveEngine \rightarrow 认知结果 }
当认知过程需要访问机器个体数据时:
CognitiveEngine→DomainObject→Repository→MySQL\boxed{ CognitiveEngine \rightarrow DomainObject \rightarrow Repository \rightarrow MySQL }
读取数据以后重新进入认知计算:
MySQL→Repository→DomainObject→CognitiveEngine\boxed{ MySQL \rightarrow Repository \rightarrow DomainObject \rightarrow CognitiveEngine }
最终形成:
CognitiveResult→CognitiveService→Controller→View\boxed{ CognitiveResult \rightarrow CognitiveService \rightarrow Controller \rightarrow View }
因此,ICAI 的认知 MVC 可以统一表示为:
CognitiveRequest→Controller→CognitiveService→CognitiveEngine→DomainObject→Repository→MySQL→DomainObject→CognitiveEngine→CognitiveResult→CognitiveService→Controller→View\boxed{ CognitiveRequest \rightarrow Controller \rightarrow CognitiveService \rightarrow CognitiveEngine \rightarrow DomainObject \rightarrow Repository \rightarrow MySQL \rightarrow DomainObject \rightarrow CognitiveEngine \rightarrow CognitiveResult \rightarrow CognitiveService \rightarrow Controller \rightarrow View }
这一结构把 ICAI 的认知理论、领域对象、认知计算和 MVC 工程结构连接起来,使“认知”不再只是理论上的概念,而成为可以由 Controller 发起、由 CognitiveService 组织、由 CognitiveEngine 执行、由 Domain Object 提供对象状态、由 Repository 提供持久化数据、最终形成结构化认知结果的完整程序运行过程。
同时必须明确:
Controller≠CognitiveServiceController\neq CognitiveService CognitiveService≠CognitiveEngineCognitiveService\neq CognitiveEngine CognitiveEngine≠RepositoryCognitiveEngine\neq Repository DomainObject≠DatabaseRecordDomainObject\neq DatabaseRecord CognitiveResult≠BusinessResultCognitiveResult\neq BusinessResult
由此建立 ICAI 认知工程的基本 MVC 边界。