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

第288章 Cross-Object API Test|跨对象 API 测试

第288章 Cross-Object API Test|跨对象 API 测试

288.1 提出背景

前面的 API 章节分别建立了 Element API、Object API、Attribute API、Relation API、State API、Scene API、Cognition API、Method API、Behavior API、Action API、Device API、Sensor API、Feedback API,以及第286章建立的 Real-Time Cognitive Loop API 和第287章建立的 Cognitive Synchronization API。

这些 API 如果分别测试,只能够证明:

Element API 可以运行
Object API 可以运行
Relation API 可以运行
State API 可以运行
Scene API 可以运行
Cognition API 可以运行

但 ICAI 并不是由彼此独立的 API 构成的。

ICAI 的核心特征恰恰在于:

Object A
↓
Relation
↓
Object B
↓
State
↓
Scene
↓
Cognition

一个对象发生变化以后,可能影响另一个对象,也可能进一步影响关系、状态、场景和认知。

因此需要建立:

Cross-Object API Test|跨对象 API 测试

它验证的不是单个 API 的孤立功能,而是多个对象之间通过关系和状态形成的动态认知结构能否正确运行。


288.2 Cross-Object API Test 的定义

Cross-Object API Test|跨对象 API 测试是指通过 API 同时操作、查询、更新和验证两个或多个对象,并检查对象之间的属性、关系、状态、场景、认知以及反馈是否能够按照定义的规则正确传播和更新。

定义:

COAT=Test(O1,O2,…,On,R,S,Sc,C)COAT= Test( O_1,O_2,\ldots,O_n, R,S,Sc,C )

其中:

  • COATCOAT:Cross-Object API Test;
  • OiO_i:对象实例;
  • RR:对象之间的关系;
  • SS:对象状态;
  • ScSc:场景;
  • CC:当前认知。

核心不是:

Test(O1)Test(O_1)

而是:

Test(O1,O2,R,S,Sc,C)Test(O_1,O_2,R,S,Sc,C)


288.3 单对象测试与跨对象测试

单对象测试:

Object API
↓
Object A
↓
Create
↓
Read
↓
Update
↓
Delete

只能验证 Object A 自身。

跨对象测试:

Object A
+
Object B
↓
Relation
↓
State
↓
Scene
↓
Cognition

验证的是对象之间的结构关系。

因此:

SingleObjectTest≠CrossObjectTestSingleObjectTest\neq CrossObjectTest

单对象测试验证:

对象自身是否正确

跨对象测试验证:

对象之间是否正确

288.4 跨对象测试的基本结构

最基本的测试模型:

Object A
        ↕
     Relation
        ↕
Object B

加入状态:

Object A
        ↕
     Relation
        ↕
Object B
        ↓
      State

加入场景:

Object A
+
Object B
+
Relation
+
State
↓
Scene

加入认知:

Scene
+
Goal
↓
Cognition

因此:

OA+OB+R+S+Sc+G→CO_A+O_B+R+S+Sc+G \rightarrow C


288.5 Cross-Object Test 的目标

跨对象 API 测试主要验证以下内容:

1. Object Identity
2. Object Type
3. Attribute Consistency
4. Relation Validity
5. State Propagation
6. Scene Reconstruction
7. Cognition Update
8. Event Propagation
9. Synchronization
10. Feedback

也就是:

Object
↓
Relation
↓
State
↓
Scene
↓
Cognition

是否能够保持结构一致。


288.6 测试对象模型

建立两个对象:

Object A = Hand
Object B = Egg

注意,这里的对象名称只是测试实例。

系统真正使用的是:

Object Type
Object ID
Attribute
Relation
State

因此不应该编写:

grabEgg();

而应该使用一般化的对象行为:

Grasp(Object)

这验证 ICAI 是否能够跨不同对象类型使用统一认知结构。


288.7 Object A 创建

首先:

POST
/api/object/create

创建:

Object A
ID = hand-001
Type = hand

得到:

OA=(IA,CA,AA,RA,SA,PA,TA)O_A=(I_A,C_A,A_A,R_A,S_A,P_A,T_A)

此时:

Object A
↓
No Relation
↓
No Target Interaction

288.8 Object B 创建

第二个对象:

POST
/api/object/create

创建:

Object B
ID = egg-001
Type = egg

得到:

OB=(IB,CB,AB,RB,SB,PB,TB)O_B=(I_B,C_B,A_B,R_B,S_B,P_B,T_B)

现在机器世界中存在:

O={OA,OB}O=\{O_A,O_B\}

但:

R=∅R=\varnothing

也就是说,两个对象存在,但系统还没有建立它们之间的认知关系。


288.9 Object Attribute Test

为两个对象设置属性。

例如:

Hand
Position = [100,50,20]

Egg
Position = [160,50,20]

定义:

PA=[100,50,20]TP_A=[100,50,20]^T PB=[160,50,20]TP_B=[160,50,20]^T

计算距离:

DAB=∥PB−PA∥D_{AB} = \|P_B-P_A\|

其中:

  • PAP_A:Object A 位置向量;
  • PBP_B:Object B 位置向量;
  • DABD_{AB}:两个对象之间的空间距离。

288.10 Cross-Object Distance Test

如果:

PA=[100,50,20]TP_A=[100,50,20]^T PB=[160,50,20]TP_B=[160,50,20]^T

则:

PB−PA=[60,0,0]TP_B-P_A=[60,0,0]^T

因此:

DAB=60D_{AB}=60

系统可以形成:

Object A
↓
Distance = 60
↓
Object B

这不是 Object A 的独立属性,而是:

Cross-Object Relation Attribute|跨对象关系属性


288.11 Relation API Test

通过:

POST
/api/relation/create

建立:

Hand
↓
Near
↓
Egg

定义:

RAB=(OA,Near,OB,V,S,T)R_{AB}= (O_A, Near, O_B, V, S, T)

现在:

R≠∅R\neq\varnothing

机器世界从:

Object A
Object B

变成:

Object A
      ↓
     Near
      ↓
Object B

这就是第一次跨对象结构形成。


288.12 Relation Validation

测试:

Valid(R)=Valid(OA)∧Valid(Type)∧Valid(OB)∧Valid(Value)∧Valid(Time)Valid(R)= Valid(O_A) \land Valid(Type) \land Valid(O_B) \land Valid(Value) \land Valid(Time)

如果 Object A 和 Object B 都存在,则:

Relation = Valid

如果 Object B 不存在:

Relation
↓
Invalid Target
↓
Rejected

因此 Relation API 不允许产生不存在目标对象的关系。


288.13 Cross-Object State Test

关系发生以后,状态可能发生变化。

例如:

Distance = 60

状态:

Far

当距离变成:

Distance = 10

状态可能变化为:

Near

因此:

DAB,t→DAB,t+1D_{AB,t}\rightarrow D_{AB,t+1}

进一步:

Statet→Statet+1State_t\rightarrow State_{t+1}


288.14 Relation State Test

关系本身也可以具有动态状态。

例如:

Near
↓
Touch
↓
Contact
↓
Grasp
↓
Hold

因此:

Rt→Rt+1R_t\rightarrow R_{t+1}

例如:

Hand
↓
Near
↓
Egg

变化为:

Hand
↓
Touch
↓
Egg

再变化:

Hand
↓
Grasp
↓
Egg

这验证了 Relation API 是否能够支持动态关系变化。


288.15 Cross-Object State Formation

定义:

St=F(At,Rt,Ct)S_t= F( A_t, R_t, C_t )

例如:

Distance < Threshold
AND
Position Valid

得到:

Near

如果:

Touch = true
AND
Force > Threshold

可以得到:

Grasping

因此:

Object A
+
Object B
+
Relation
+
Attributes
↓
State

288.16 Scene API Test

两个对象及其关系进入 Scene:

Sct=F(OA,OB,RAB,St,Et,Pt,Tt)Sc_t= F( O_A, O_B, R_{AB}, S_t, E_t, P_t, T_t )

场景不再只是:

Object A
+
Object B

而是:

Hand
↓
Grasp
↓
Egg

并包含:

Position
Distance
Force
State
Time
Environment

因此:

Scene≠∑ObjectScene\neq \sum Object


288.17 Cognition API Test

场景形成以后,输入目标:

Goal = Move Egg

形成:

Ct=F(Ot,At,Rt,St,Sct,Gt)C_t= F( O_t, A_t, R_t, S_t, Sc_t, G_t )

系统当前认知可能为:

Goal:
Move Egg

Current Cognition:
Hand is near Egg
Egg is graspable

然后进入:

Method
↓
Behavior
↓
Action

288.18 Cross-Object Cognition Test

跨对象认知的重点不是:

What is Object A?

也不是:

What is Object B?

而是:

What is the current relationship between A and B?

即:

C=F(OA,OB,RAB,S,Sc,G)C= F(O_A,O_B,R_{AB},S,Sc,G)

例如:

Hand
+
Egg
+
Grasp Relation
+
Stable State
+
Move Goal

共同形成:

Can Move Egg

这就是跨对象认知。


288.19 Object A 更新测试

假设 Object A 发生位置变化:

Hand Position
100 → 150

则:

ΔPA≠0\Delta P_A\neq0

系统首先更新:

Object A
↓
Attribute

然后检查:

Affected Relations

找到:

Relation(A,B)

因此:

ΔOA→ΔRAB\Delta O_A \rightarrow \Delta R_{AB}


288.20 Relation 自动更新

新的位置:

Hand = [150,50,20]
Egg  = [160,50,20]

则:

DAB=10D_{AB}=10

原来:

Distance = 60

现在:

Distance = 10

因此:

Distance Changed
↓
Relation Changed

可能:

Near

变成:

VeryNear

如果进一步接触:

Touch

288.21 State 自动更新

Relation 发生变化以后:

St+1=F(At+1,Rt+1,Ct)S_{t+1} = F( A_{t+1}, R_{t+1}, C_t )

例如:

Old:
Far

New:
Near

或者:

Old:
Approaching

New:
Contact

因此:

ΔR→ΔS\Delta R \rightarrow \Delta S


288.22 Scene 自动更新

状态更新以后:

Sct+1=F(Ot+1,At+1,Rt+1,St+1,Et+1,Pt+1,Tt+1)Sc_{t+1} = F( O_{t+1}, A_{t+1}, R_{t+1}, S_{t+1}, E_{t+1}, P_{t+1}, T_{t+1} )

因此:

Object Update
↓
Relation Update
↓
State Update
↓
Scene Update

这就是跨对象 API 测试最重要的传播链之一。


288.23 Cognition 自动更新

Scene 更新以后:

Ct+1=F(Ot+1,At+1,Rt+1,St+1,Sct+1,Gt)C_{t+1} = F( O_{t+1}, A_{t+1}, R_{t+1}, S_{t+1}, Sc_{t+1}, G_t )

例如:

Old Cognition:
Object is far away.

New Cognition:
Object is within grasp range.

于是:

Old Method
↓
Re-Evaluate

可能产生:

New Method
↓
Grasp

288.24 Cross-Object Synchronization Test

第287章的同步机制可以直接用于测试:

Object A Changed
↓
Relation A-B
↓
State
↓
Scene
↓
Cognition

定义:

Sync(ΔOA)={ΔRAB,ΔS,ΔSc,ΔC}Sync( \Delta O_A ) = \{ \Delta R_{AB}, \Delta S, \Delta Sc, \Delta C \}

测试成功的条件:

SyncResult=ConsistentSyncResult=Consistent


288.25 Cross-Object Event Test

Object A 发生变化:

Position Changed

系统产生:

Eventt=Detect(Xt−1,Xt)Event_t= Detect( X_{t-1}, X_t )

事件:

ObjectChanged

随后:

ObjectChanged
↓
Relation Re-Evaluation
↓
StateChanged
↓
SceneChanged
↓
CognitionChanged

因此一个对象的变化可以产生一系列认知事件。


288.26 Cross-Object Feedback Test

执行动作:

Grasp Egg

动作:

At=Grasp(OA,OB,Pt)A_t=Grasp(O_A,O_B,P_t)

设备执行以后产生反馈:

Ft=Evaluate(At,Dt,Wt+1)F_t= Evaluate( A_t, D_t, W_{t+1} )

反馈可能为:

Grasp Success
Force Valid
Object Stable

然后:

Feedback
↓
Relation Update
↓
State Update
↓
Scene Update
↓
Cognition Update

288.27 Cross-Object Failure Test

假设系统执行:

Grasp Egg

但是反馈:

Force Insufficient

则:

Feedback
↓
State
↓
Grasping = Failed

进一步:

Cognition
↓
Method Re-Evaluation

可能重新选择:

Increase Force

或者:

Reposition Hand

因此:

Failure→Re−Cognition→NewMethodFailure \rightarrow Re-Cognition \rightarrow NewMethod


288.28 多对象测试

跨对象并不局限于两个对象。

可以建立:

O={O1,O2,…,On}O=\{O_1,O_2,\ldots,O_n\}

例如:

Hand
↓
Grasp
↓
Egg

Egg
↓
Inside
↓
Container

Container
↓
On
↓
Table

形成:

Hand
  ↓
Grasp
  ↓
Egg
  ↓
Inside
  ↓
Container
  ↓
On
  ↓
Table

此时对象之间形成关系网络。


288.29 Relation Graph Test

定义:

GR=(O,R)G_R=(O,R)

其中:

  • OO:对象节点集合;
  • RR:关系集合。

例如:

O={Hand,Egg,Container,Table}O= \{ Hand, Egg, Container, Table \} R={Grasp,Inside,On}R= \{ Grasp, Inside, On \}

测试目标是验证:

Object Graph
↓
Relation Graph
↓
State
↓
Scene

是否保持正确。


288.30 Relation Chain Test

可以进一步测试关系链:

OA→RAB→OB→RBC→OCO_A \rightarrow R_{AB} \rightarrow O_B \rightarrow R_{BC} \rightarrow O_C

例如:

Hand
↓
Grasp
↓
Egg
↓
Inside
↓
Container

如果 Container 移动:

Container Position Changed

则可能影响:

Egg Position
↓
Hand-Egg Relation
↓
Scene
↓
Cognition

因此:

ΔOC→ΔRBC→ΔOB→ΔRAB→ΔC\Delta O_C \rightarrow \Delta R_{BC} \rightarrow \Delta O_B \rightarrow \Delta R_{AB} \rightarrow \Delta C

这是跨对象 API 测试中更加复杂的传播场景。


288.31 Cross-Object Propagation Test

定义:

Propagation(Oi)={Xj∣Impact(Oi,Xj)=1}Propagation(O_i) = \{X_j\mid Impact(O_i,X_j)=1\}

测试:

Object C
↓
Affected Object B
↓
Affected Relation A-B
↓
Affected State
↓
Affected Scene
↓
Affected Cognition

验证系统是否能够沿依赖结构正确传播。


288.32 Cross-Object Isolation Test

除了测试传播,还必须测试隔离。

如果:

Object A

发生与 Object B 无关的属性变化:

Color Changed

那么不应该无条件导致:

Object B
↓
Relation
↓
State
↓
Scene
↓
Cognition

全部更新。

因此:

Impact(ΔA,B)=0Impact(\Delta A,B)=0

时:

B
↓
No Update

这可以验证系统是否具有正确的变化影响边界。


288.33 Cross-Object API Test Matrix

可以建立测试矩阵:

测试对象 变化 预期影响
Object A Position Relation
Object A Force State
Object B Position Relation
Relation A-B Type State
Relation A-B Value Scene
State A-B State Scene
Scene Structure Cognition
Cognition Goal Method
Method Selection Behavior
Behavior State Action
Action Result Feedback

测试的核心不是 API 数量,而是结构传播关系。


288.34 API Test Flow

完整测试:

Create Object A
↓
Create Object B
↓
Create Attributes
↓
Create Relation
↓
Calculate State
↓
Build Scene
↓
Build Cognition
↓
Update Object A
↓
Detect Change
↓
Update Relation
↓
Update State
↓
Update Scene
↓
Re-Cognition
↓
Generate Method
↓
Generate Behavior
↓
Generate Action
↓
Execute
↓
Receive Feedback
↓
Synchronize
↓
Re-Cognition

这已经不再是简单 API CRUD 测试,而是一个完整认知结构测试。


288.35 API Test Case

可以定义:

TestCase=(Input,Precondition,Operation,Expected,Actual,Result)TestCase= ( Input, Precondition, Operation, Expected, Actual, Result )

其中:

  • Input:输入;
  • Precondition:前置条件;
  • Operation:操作;
  • Expected:预期结果;
  • Actual:实际结果;
  • Result:测试结果。

例如:

Input:
Object A Position Change

Expected:
Relation A-B Updated
State Updated
Scene Updated
Cognition Re-Evaluated

288.36 Test Assertion

测试必须定义断言:

Assert(Expected,Actual)Assert(Expected,Actual)

例如:

Assert(
Relation.State = "Near",
Actual.Relation.State
)

或者:

Assert(Cexpected=Cactual)Assert( C_{expected}=C_{actual} )

这样测试结果不再依靠人工观察,而是能够形成程序化验证。


288.37 Cross-Object Test Engine

可以建立:

class CrossObjectApiTestEngine
{
    public function run($testCase)
    {
        $this->createObjects($testCase);

        $this->createAttributes($testCase);

        $this->createRelations($testCase);

        $this->buildState($testCase);

        $this->buildScene($testCase);

        $this->buildCognition($testCase);

        $this->applyChange($testCase);

        $this->synchronize($testCase);

        return $this->assertResult(
            $testCase
        );
    }
}

Test Engine 的任务是组织测试过程,而不是把认知规则写死在测试代码中。


288.38 Cross-Object API Test Controller

可以建立:

class CrossObjectApiTestController
{
    protected $service;

    public function run($request)
    {
        return $this->service
            ->runTest($request);
    }

    public function case($request)
    {
        return $this->service
            ->runCase($request);
    }

    public function result($request)
    {
        return $this->service
            ->getResult($request);
    }
}

288.39 Cross-Object Test Service

class CrossObjectApiTestService
{
    public function runTest($testCase)
    {
        $result = $this->engine
            ->run($testCase);

        $this->repository
            ->saveResult($result);

        return $result;
    }
}

这样测试系统可以独立于生产认知 Runtime。


288.40 测试系统与生产系统边界

必须保持:

TestSystem≠ProductionRuntimeTestSystem\neq ProductionRuntime

测试系统负责:

Create Test Data
↓
Run Test
↓
Observe Result
↓
Assert
↓
Record Result

生产 Runtime 负责:

Real-Time Data
↓
Cognition
↓
Action
↓
Feedback

测试代码不能成为认知系统本身。


288.41 API Integration Test

跨对象测试属于:

API Integration Test|API 集成测试

它验证:

API A
↓
Runtime
↓
API B
↓
Runtime
↓
API C

例如:

Object API
↓
Relation API
↓
State API
↓
Scene API
↓
Cognition API

因此:

IntegrationTest=Test(API1→API2→⋯→APIn)IntegrationTest = Test(API_1\rightarrow API_2\rightarrow\cdots\rightarrow API_n)


288.42 Cross-Object Test 与 Unit Test

Unit Test:

ObjectService
↓
Test

Integration Test:

Object API
↓
Relation API
↓
State API

Cross-Object Test:

Object A
+
Object B
+
Relation
+
State
+
Scene
+
Cognition

因此三者具有不同目标:

Unit Test
↓
单模块正确

Integration Test
↓
模块连接正确

Cross-Object Test
↓
对象结构联动正确

288.43 Cross-Object Test 与 Cognitive Loop

第286章的闭环:

Rt+1=T(Rt,It,Ft)R_{t+1}=T(R_t,I_t,F_t)

跨对象测试可以验证:

Rt→ΔO→ΔR→ΔS→ΔSc→ΔCR_t \rightarrow \Delta O \rightarrow \Delta R \rightarrow \Delta S \rightarrow \Delta Sc \rightarrow \Delta C

然后:

C→M→B→A→FC \rightarrow M \rightarrow B \rightarrow A \rightarrow F

最终:

F→Sync→Rt+1F \rightarrow Sync \rightarrow R_{t+1}


288.44 完整 Cross-Object API Test Loop

最终测试闭环:

Create Object A
↓
Create Object B
↓
Create Relation
↓
Build State
↓
Build Scene
↓
Build Cognition
↓
Change Object A
↓
Detect Event
↓
Synchronize
↓
Update Relation
↓
Update State
↓
Update Scene
↓
Re-Cognition
↓
Generate Action
↓
Execute Action
↓
Receive Feedback
↓
Synchronize
↓
Re-Cognition
↓
Assert Final Result

数学形式:

TestResult=Assert(Rexpected,Ractual)TestResult= Assert( R_{expected}, R_{actual} )


288.45 跨对象测试的核心原则

第一:

Object≠IsolatedObject\neq Isolated

对象不是孤立存在的。

第二:

Relation≠StaticRelation\neq Static

关系可以动态变化。

第三:

State=F(Attribute,Relation,Context)State=F(Attribute,Relation,Context)

状态受到对象属性、对象关系和上下文影响。

第四:

Scene=F(Object,Relation,State,…)Scene=F(Object,Relation,State,\ldots)

场景来自对象之间的动态结构。

第五:

Cognition=F(Scene,Goal,…)Cognition=F(Scene,Goal,\ldots)

认知建立在当前结构和目标之上。

因此:

Object
↓
Relation
↓
State
↓
Scene
↓
Cognition

是跨对象认知测试的核心路径。


288.46 跨对象 API 测试的工程价值

Cross-Object API Test 解决的是一个非常关键的问题:

ICAI 是否真的能够理解“对象之间的关系”,而不是仅仅能够保存多个对象?

如果系统只能做到:

Object A
Object B

那么它只是对象数据库。

如果能够做到:

Object A
↓
Relation
↓
Object B

则开始形成机器世界结构。

如果进一步做到:

Relation
↓
State
↓
Scene
↓
Cognition

则形成跨对象认知结构。

因此:

MultipleObjects≠MachineWorldMultipleObjects \neq MachineWorld

而:

Objects+Relations+States+Scenes→MachineWorldObjects+Relations+States+Scenes \rightarrow MachineWorld


288.47 从单对象 API 到跨对象认知

API 系列的发展可以表示为:

Element API
↓
Object API
↓
Attribute API
↓
Relation API
↓
State API
↓
Scene API
↓
Cognition API

第288章进一步验证:

Object A
+
Object B
↓
Relation
↓
State
↓
Scene
↓
Cognition

因此系统从:

Object Management

进入:

Object Relationship

再进入:

Cross-Object Cognition

288.48 本章总结

Cross-Object API Test|跨对象 API 测试的核心任务,是验证 ICAI 是否能够通过 API 建立、维护和更新多个对象之间的动态认知结构。

核心模型:

COAT=Test(O1,…,On,R,S,Sc,C)COAT= Test( O_1,\ldots,O_n, R, S, Sc, C )

最基本结构:

Object A
      ↕
   Relation
      ↕
Object B
      ↓
    State
      ↓
    Scene
      ↓
  Cognition

当 Object A 发生变化:

ΔOA→ΔR→ΔS→ΔSc→ΔC\Delta O_A \rightarrow \Delta R \rightarrow \Delta S \rightarrow \Delta Sc \rightarrow \Delta C

当动作产生反馈:

Action→Device→WorldChange→Feedback→Synchronization→Re−CognitionAction \rightarrow Device \rightarrow WorldChange \rightarrow Feedback \rightarrow Synchronization \rightarrow Re-Cognition

因此完整测试链为:

Object A
+
Object B
↓
Relation
↓
State
↓
Scene
↓
Cognition
↓
Method
↓
Behavior
↓
Action
↓
Device
↓
World Change
↓
Feedback
↓
Synchronization
↓
Relation Update
↓
State Update
↓
Scene Update
↓
Re-Cognition
↓
Test Assertion

本章最终验证的不是某个 API 是否能够返回 200 OK,而是:

API Operation→Object Change→Relation Change→State Change→SceneChange→CognitionChange\boxed{ API\ Operation \rightarrow Object\ Change \rightarrow Relation\ Change \rightarrow State\ Change \rightarrow Scene Change \rightarrow Cognition Change }

以及:

Action→Feedback→Synchronization→Re−Cognition\boxed{ Action \rightarrow Feedback \rightarrow Synchronization \rightarrow Re-Cognition }

这意味着 API 测试从传统的“接口正确性测试”进一步进入了 机器世界结构测试

第288章因此建立了 ICAI 的一个重要验证原则:

测试一个认知对象是否正确,不仅要测试对象自身,还必须测试它与其他对象之间形成的关系,以及关系变化对状态、场景和认知产生的传播结果。

最终:

单对象测试
↓
API 集成测试
↓
跨对象测试
↓
关系传播测试
↓
状态传播测试
↓
场景传播测试
↓
认知传播测试
↓
实时闭环测试

由此,ICAI API 体系开始从“接口集合”进入“可验证的机器认知结构体系”。

Leave a Reply

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