第267章 State API|状态 API
267.1 提出背景
在 ICAI 机器认知工程中,机器对现实世界的认识不能停留在“有什么对象、对象有什么属性、对象之间有什么关系”。
系统还必须回答一个更加重要的问题:
对象当前处于什么状态?
例如,同一个鸡蛋对象,在不同时间可能处于:
静止
↓
接近
↓
接触
↓
受力
↓
抓取
↓
移动
↓
释放
↓
静止
对象本身没有发生身份变化:
Object = Egg-001
但是对象的属性、关系以及状态不断发生变化。
因此,ICAI 需要建立一个专门负责状态形成、状态计算、状态更新、状态查询、状态历史以及状态变化传播的工程接口。
这个接口就是 State API(状态 API)。
前面的工程链:
Element API
↓
Element
↓
Object API
↓
Object
↓
Attribute API
↓
Attribute
↓
Relation API
↓
Relation
进入 State API 后形成:
Element
↓
Object
↓
Attribute
+
Relation
↓
State
↓
Scene
↓
Cognition
因此:
State API 是 ICAI 机器认知系统中负责对象当前状态形成、计算、更新、验证、查询和传播的标准工程接口,是从对象动态结构进入场景和认知的重要工程层。
267.2 State API 的定义
State API 是 ICAI 系统针对 Object State(对象状态)建立的标准工程接口。
对象状态可以定义为:
St=F(At,Rt,Ct,Et)S_t=F(A_t,R_t,C_t,E_t)
其中:
- StS_t:对象在时间 tt 的状态;
- AtA_t:对象在时间 tt 的属性;
- RtR_t:对象在时间 tt 的关系;
- CtC_t:对象类别及其状态条件;
- EtE_t:当前环境条件。
在简单情况下,可以表示为:
St=F(At,Rt)S_t=F(A_t,R_t)
例如:
Force = 0
Velocity = 0
Touch = false
可以形成:
State = Stable
当:
Force > 0
Velocity > 0
Touch = true
则状态可能变为:
State = Moving
因此状态并不是简单的数据字段,而是由当前对象结构计算得到的运行时认知结构。
267.3 State API 的核心目的
State API 的核心目的不是简单保存:
state = "stable"
而是建立:
Attribute
+
Relation
+
Condition
+
Time
↓
State
的工程机制。
它主要解决:
当前对象处于什么状态?
↓
状态由什么条件形成?
↓
状态什么时候发生?
↓
状态如何变化?
↓
状态是否有效?
↓
状态变化如何影响场景?
↓
状态变化如何影响认知?
因此:
Attribute API
+
Relation API
↓
State API
↓
Scene API
↓
Cognition API
构成连续的机器认知结构链。
267.4 状态不是属性
Attribute 与 State 在 ICAI 中必须严格区分。
Attribute 描述对象具有的特征:
Mass = 0.06kg
Position = (120,80,50)
Velocity = (0,0,10)
Force = 2.3N
Temperature = 25℃
State 描述对象当前所处的状态:
Stable
Moving
Contact
Grasping
Falling
Stopped
Broken
因此:
Attribute
=
对象具有的数据特征
State
=
对象当前处于的状态
两者存在因果关系:
Attribute
+
Relation
+
Condition
↓
State
而不是:
Attribute = State
267.5 状态形成
状态形成是 State API 的核心逻辑。
例如:
Velocity = 0
Force = 0
Relation = None
经过状态规则:
Velocity == 0
AND
Force == 0
↓
Stable
又例如:
Velocity > 0
↓
Moving
又例如:
Touch(Hand, Object)
+
Force > 0
↓
Contact
因此可以定义:
S=Rule(A,R,C)S=Rule(A,R,C)
其中:
- AA:属性集合;
- RR:关系集合;
- CC:状态判断条件;
- SS:状态结果。
这是一种离散规则形式的状态计算。
267.6 状态条件
State Condition(状态条件)用于描述状态成立所需要满足的条件。
例如:
Stable
Condition:
Velocity = 0
Moving
Condition:
Velocity ≠ 0
Contact
Condition:
Distance ≤ d
其中 dd 是接触距离阈值。
再例如:
Grasping
Condition:
Touch = true
AND
Force > F_min
其中 FminF_{min} 是最小抓取力量。
因此:
Condition(S)=TrueCondition(S)=True
表示状态 SS 当前成立。
多个条件可以组合:
C=C1∧C2∧C3C=C_1\land C_2\land C_3
其中:
- C1C_1:条件一;
- C2C_2:条件二;
- C3C_3:条件三。
只有全部满足时:
C=TrueC=True
对应状态才能成立。
267.7 状态转换
对象状态不是固定的。
定义:
St→St+1S_t\rightarrow S_{t+1}
例如:
Stable
↓
Moving
↓
Contact
↓
Grasping
↓
Moving
↓
Released
↓
Stable
状态转换可以定义为:
St+1=T(St,At,Rt,Ct)S_{t+1}=T(S_t,A_t,R_t,C_t)
其中:
- StS_t:当前状态;
- AtA_t:当前属性;
- RtR_t:当前关系;
- CtC_t:状态转换条件;
- TT:状态转换函数;
- St+1S_{t+1}:下一状态。
因此状态系统具有时间结构。
267.8 状态更新
实时数据发生变化后,State API 需要重新计算对象状态。
例如:
t1
Velocity = 0
↓
State = Stable
新的 Element 到达:
t2
Velocity = 10
↓
Attribute Update
↓
State Calculation
↓
State = Moving
因此:
At→At+1A_t\rightarrow A_{t+1}
进一步:
St→St+1S_t\rightarrow S_{t+1}
形成:
New Element
↓
Attribute Update
↓
Relation Update
↓
State Update
状态不是独立变化,而是由底层对象结构变化驱动。
267.9 状态历史
动态认知系统不能只知道当前状态,还需要知道状态变化过程。
例如:
t1 → Stable
t2 → Moving
t3 → Contact
t4 → Grasping
t5 → Moving
t6 → Released
可以形成 State History(状态历史):
HS={(t1,S1),(t2,S2),…,(tn,Sn)}H_S=\{(t_1,S_1),(t_2,S_2),\ldots,(t_n,S_n)\}
其中:
- tit_i:状态发生的时间;
- SiS_i:对应时间的状态。
状态历史可以用于:
状态变化追踪
行为过程分析
动作结果判断
反馈处理
因此:
Current State
+
State History
共同构成对象的动态状态信息。
267.10 状态变化事件
状态发生变化时,可以产生 State Event(状态事件)。
例如:
State Created
State Changed
State Activated
State Deactivated
State Recovered
例如:
Stable
↓
Moving
产生:
StateChanged
Old = Stable
New = Moving
事件进一步进入:
State Event
↓
Scene Engine
↓
Cognitive Engine
因此:
Attribute Change
↓
State Change
↓
State Event
↓
Scene Update
↓
Cognition Update
这使状态成为整个动态认知系统中的重要变化节点。
267.11 状态与关系
某些状态必须由 Relation 决定。
例如:
Hand
↓
Touch
↓
Egg
如果同时:
Force > F_min
则:
State = Grasping
因此:
St=F(At,Rt,Ct)S_t=F(A_t,R_t,C_t)
如果 Relation 从:
Near
变为:
Touch
那么状态可能从:
Approaching
变为:
Contact
因此:
Relation Change
↓
State Change
是 ICAI 动态场景的重要结构。
267.12 状态与属性向量
对象当前多个属性可以形成 Attribute Vector:
Xt=[PositionVelocityForcePressureDistanceStability]X_t= \begin{bmatrix} Position\\ Velocity\\ Force\\ Pressure\\ Distance\\ Stability \end{bmatrix}
状态可以表示为:
St=F(Xt,Rt)S_t=F(X_t,R_t)
例如:
X_t
↓
Position
Velocity
Force
Pressure
Stability
↓
State Function
↓
Current State
这种方式使状态计算可以建立在统一的数学数据结构上。
例如:
Velocity = 0
Force = 0
Stability = 1
对应:
Stable
而:
Velocity > 0
Stability = 1
对应:
Moving
因此 Attribute Vector 是 State API 的重要计算输入。
267.13 状态与离散时间
ICAI 的运行系统可以采用离散时间模型。
定义:
t0,t1,t2,…,tnt_0,t_1,t_2,\ldots,t_n
每个运行周期获得新的数据:
t0
↓
Data
↓
State
t1
↓
Data
↓
State
t2
↓
Data
↓
State
因此:
St+1=F(St,Xt)S_{t+1}=F(S_t,X_t)
其中:
- StS_t:当前状态;
- XtX_t:当前属性向量;
- FF:状态更新函数;
- St+1S_{t+1}:下一时刻状态。
这种离散状态模型非常适合工程软件实现。
在 PHP 运行环境中,不需要把连续世界直接转换成连续数学过程,而可以按照系统的实时更新周期逐步计算。
267.14 状态与动态行为
Behavior(行为)需要知道对象当前状态。
例如:
Goal = Grasp
Object = Egg
State = Stable
系统可以产生:
Approach
当:
State = Contact
则行为进入:
Grasp
当:
State = Grasping
则行为进入:
Lift
因此:
Goal
+
Object
+
State
↓
Behavior
可以表示为:
Bt=F(Gt,Ot,St)B_t=F(G_t,O_t,S_t)
更加完整时:
Bt=F(Gt,Ot,At,Rt,St,Sct)B_t=F(G_t,O_t,A_t,R_t,S_t,Sc_t)
因此 State API 为行为系统提供了当前对象状态。
267.15 状态与方法
Method(方法)也可以根据当前状态选择不同的执行逻辑。
例如:
State = Stable
↓
Approach Method
State = Contact
↓
Grasp Method
State = Grasping
↓
Lift Method
因此:
Mt=F(Gt,Ot,St)M_t=F(G_t,O_t,S_t)
其中:
- MtM_t:当前方法;
- GtG_t:目标;
- OtO_t:对象;
- StS_t:当前状态。
这样方法不是固定地执行,而是根据当前动态状态进入不同的处理阶段。
267.16 State API 与 Scene API
对象状态是场景状态的重要组成部分。
定义:
Sct=F(Ot,At,Rt,St,Et,Pt,Tt)Sc_t=F(O_t,A_t,R_t,S_t,E_t,P_t,T_t)
其中:
- OtO_t:对象集合;
- AtA_t:属性集合;
- RtR_t:关系集合;
- StS_t:状态集合;
- EtE_t:环境;
- PtP_t:空间;
- TtT_t:时间。
因此:
Object State
↓
Scene State
例如:
Egg = Stable
Hand = Moving
Robot = Active
Table = Stable
共同形成当前场景状态。
当:
Egg = Stable
变成:
Egg = Grasping
整个 Scene Model 也需要更新。
267.17 State API 与 Cognitive API
Cognition(认知)依赖当前状态。
可以表示:
Ct=F(Gt,Ot,At,Rt,St,Sct)C_t=F(G_t,O_t,A_t,R_t,S_t,Sc_t)
因此:
State API
↓
Current State
↓
Cognitive Model
↓
Cognition
例如:
Goal = Pick Up Egg
+
Object = Egg
+
State = Stable
与:
Goal = Pick Up Egg
+
Object = Egg
+
State = Broken
产生的认知结果可能完全不同。
所以,State 是认知计算的重要输入。
267.18 State API 的状态查询
State API 应当能够支持当前状态查询。
例如:
GET
/api/objects/O1001/state
返回:
{
"object_id": "O1001",
"state": "grasping",
"timestamp": "2026-09-04 10:00:00"
}
也可以查询状态历史:
GET
/api/objects/O1001/state/history
返回:
{
"object_id": "O1001",
"history": [
{
"state": "stable",
"timestamp": "t1"
},
{
"state": "contact",
"timestamp": "t2"
},
{
"state": "grasping",
"timestamp": "t3"
}
]
}
JSON 只是状态数据的交换形式。
真正的状态计算仍然发生在 ICAI Runtime 内部。
267.19 State API 的接口
State API 可以提供:
/api/state/create
/api/state/get
/api/state/update
/api/state/delete
/api/state/list
/api/state/current
/api/state/history
/api/state/transition
/api/state/validate
也可以采用对象资源形式:
/api/objects/{object_id}/state
/api/objects/{object_id}/state/history
/api/objects/{object_id}/state/transitions
其工程意义分别对应:
Create
↓
建立状态
Current
↓
获取当前状态
Update
↓
更新状态
History
↓
获取状态历史
Transition
↓
获取状态转换
Validate
↓
验证状态
267.20 State Engine
在 PHP OOP 工程中,可以建立 StateEngine:
class StateEngine
{
public function calculate($attributes, $relations)
{
$velocity = isset($attributes['velocity'])
? $attributes['velocity']
: 0;
$force = isset($attributes['force'])
? $attributes['force']
: 0;
if ($velocity == 0 && $force == 0) {
return 'stable';
}
if ($velocity != 0) {
return 'moving';
}
if ($force > 0) {
return 'contact';
}
return 'unknown';
}
}
这个例子只是说明工程结构。
实际系统可以将状态条件、状态转换和状态类型进一步独立为规则对象。
其基本运行:
Attributes
+
Relations
↓
State Engine
↓
State Rules
↓
Current State
267.21 State Model
可以建立 StateModel:
class StateModel
{
protected $objectId;
protected $state;
protected $previousState;
protected $timestamp;
protected $source;
public function setState($state)
{
$this->previousState = $this->state;
$this->state = $state;
}
public function getState()
{
return $this->state;
}
public function getPreviousState()
{
return $this->previousState;
}
}
这样可以直接表达:
Previous State
↓
Current State
例如:
Stable
↓
Moving
系统可以明确知道:
Previous = Stable
Current = Moving
而不是只保存一个:
state = Moving
267.22 State Controller
StateApiController 负责接收外部状态 API 请求:
class StateApiController
{
protected $service;
public function current($objectId)
{
return $this->service->getCurrentState($objectId);
}
public function history($objectId)
{
return $this->service->getHistory($objectId);
}
}
运行结构:
HTTP Request
↓
StateApiController
↓
StateService
↓
StateEngine
↓
StateModel
↓
StateRepository
↓
MySQL
保持与前面的 API 工程结构一致。
267.23 State API 与数据库
状态可以存储于:
cognitive_states
基本字段:
id
object_id
state_type
state_value
previous_state
source
timestamp
created_at
updated_at
状态历史可以保存每一次状态变化:
cognitive_state_history
例如:
Object O1001
t1 → Stable
t2 → Moving
t3 → Contact
t4 → Grasping
t5 → Moving
t6 → Released
数据库负责状态持久化。
StateEngine 负责状态计算。
State API 负责外部通信。
三者保持工程边界:
State API
↓
State Engine
↓
State Model
↓
Repository
↓
Database
267.24 State API 的验证
状态必须满足定义条件。
可以定义:
Valid(S)=Valid(Object)∧Valid(StateType)∧Valid(Time)Valid(S)=Valid(Object)\land Valid(StateType)\land Valid(Time)
其中:
- Valid(Object)Valid(Object):对象存在;
- Valid(StateType)Valid(StateType):状态类型合法;
- Valid(Time)Valid(Time):时间有效。
如果状态转换也具有明确条件,则:
Valid(St→St+1)=TransitionRule(St,St+1,At,Rt)Valid(S_t\rightarrow S_{t+1})=TransitionRule(S_t,S_{t+1},A_t,R_t)
即状态转换必须满足相应规则。
例如:
Stable
↓
Grasping
如果没有:
Touch
+
Force
则系统可以判定该转换不满足条件。
因此状态 API 不只是存储结果,也可以维护状态转换的有效性。
267.25 状态转换表
为了便于工程实现,可以定义状态转换规则。
例如:
Current State Condition Next State
Stable Velocity > 0 Moving
Moving Distance <= d Contact
Contact Force > F_min Grasping
Grasping Lift = true Moving
Grasping Release = true Released
Released Velocity = 0 Stable
其本质是:
St+1=T(St,Ct)S_{t+1}=T(S_t,C_t)
其中:
- StS_t:当前状态;
- CtC_t:当前条件;
- TT:状态转换函数;
- St+1S_{t+1}:下一状态。
这种状态转换结构可以直接转化为 PHP 中的规则对象、条件对象和状态引擎。
267.26 State API 与反馈闭环
设备执行动作以后,世界发生变化。
例如:
Action
↓
Device
↓
Egg Movement
↓
Sensor
↓
Element
↓
Attribute Update
↓
Relation Update
↓
State Update
↓
Scene Update
↓
Re-Cognition
因此:
St→Action→Worldt+1→St+1S_t\rightarrow Action\rightarrow World_{t+1}\rightarrow S_{t+1}
形成状态反馈闭环。
完整结构:
Cognition
↓
Behavior
↓
Action
↓
Device
↓
World
↓
Sensor
↓
Element API
↓
Object API
↓
Attribute API
↓
Relation API
↓
State API
↓
Scene
↓
Re-Cognition
状态因此成为“行动之后世界发生了什么变化”的重要机器表示。
267.27 State API 的核心工程价值
State API 的核心价值,不是保存一个状态字段,而是建立:
Attribute
+
Relation
+
Condition
+
Time
↓
State
的统一工程机制。
这样 ICAI 可以区分:
Object
↓
它是什么
Attribute
↓
它有什么
Relation
↓
它与什么发生关系
State
↓
它现在处于什么状态
这四层结构共同构成机器对象的动态描述:
Ot=F(I,C,At,Rt,St,Pt,Tt)O_t=F(I,C,A_t,R_t,S_t,P_t,T_t)
因此对象从静态对象进一步成为动态对象。
267.28 本章总结
第267章建立了 State API 的工程定义。
State API 是 ICAI 系统中负责对象状态形成、计算、更新、查询、验证、历史管理和状态变化传播的标准工程接口。
状态定义为:
St=F(At,Rt,Ct,Et)S_t=F(A_t,R_t,C_t,E_t)
其中:
- AtA_t:当前属性;
- RtR_t:当前关系;
- CtC_t:状态条件;
- EtE_t:环境;
- StS_t:当前状态。
状态具有时间变化:
St→St+1S_t\rightarrow S_{t+1}
并可以通过状态转换函数:
St+1=T(St,At,Rt,Ct)S_{t+1}=T(S_t,A_t,R_t,C_t)
实现动态状态更新。
因此 ICAI 的对象工程结构进一步形成:
Element API
↓
Element
↓
Object API
↓
Object
↓
Attribute API
↓
Attribute
↓
Relation API
↓
Relation
↓
State API
↓
State
↓
Scene API
↓
Scene
↓
Cognition API
↓
Cognition
前三个 API 解决:
Element
↓
Object
↓
Attribute
第266章增加:
Relation
第267章进一步形成:
Attribute
+
Relation
+
Condition
↓
State
因此,机器对象已经从单纯的:
Object
发展为:
Object
├── Attribute
├── Relation
└── State
并能够随着实时数据持续变化:
Real-Time Data
↓
Element
↓
Object
↓
Attribute
↓
Relation
↓
State
↓
Scene
↓
Cognition
这为下一层 第268章 Scene API|场景 API 建立基础。
第268章将进一步解决一个新的工程问题:
当多个动态 Object 具有不同 Attribute、Relation 和 State 时,如何在当前时间、空间和环境条件下动态形成一个完整的 Scene Instance。