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

第268章 Scene API|场景 API

第268章 Scene API|场景 API

268.1 场景 API 的提出背景

在机器认知系统中,单独获得对象、属性、关系和状态,并不能直接形成完整的当前世界认知。

对象描述“有什么”,属性描述“对象具有哪些特征”,关系描述“对象之间如何连接”,状态描述“对象当前处于什么状态”。但是,机器还需要将这些信息按照当前时间、空间、环境和目标组织起来,形成一个可以被认知系统直接处理的整体结构。

因此,需要建立 Scene API|场景 API

场景 API 是 ICAI 系统中负责场景数据创建、更新、查询、验证、历史记录和场景重构的标准接口。

其基本作用可以表示为:

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

Scene API 并不负责最终认知决策,而是负责将当前机器世界中的对象、属性、关系、状态以及环境信息组织成一个当前场景实例

因此:

Scene API 是动态机器世界进入认知系统的重要结构接口。


268.2 Scene API 的定义

Scene API|场景 API,是用于管理机器当前场景结构的程序接口。

其主要职责包括:

  1. 创建场景;
  2. 获取场景;
  3. 更新场景;
  4. 删除场景;
  5. 查询场景;
  6. 添加对象;
  7. 移除对象;
  8. 更新场景关系;
  9. 更新场景状态;
  10. 重构动态场景;
  11. 验证场景结构;
  12. 保存场景历史;
  13. 发布场景变化事件;
  14. 将当前场景提供给认知引擎。

场景可以形式化表示为:

Sct=F(Ot,At,Rt,St,Et,Pt,Tt,Gt)Sc_t=F(O_t,A_t,R_t,S_t,E_t,P_t,T_t,G_t)

其中:

  • SctSc_t:时间 tt 的当前场景;
  • OtO_t:当前场景中的对象集合;
  • AtA_t:对象属性集合;
  • RtR_t:对象之间的关系集合;
  • StS_t:对象状态集合;
  • EtE_t:环境信息;
  • PtP_t:空间位置信息;
  • TtT_t:时间信息;
  • GtG_t:当前目标;
  • FF:场景构造函数。

因此,场景不是简单的对象集合。

Scene≠∑ObjectScene \neq \sum Object

而是:

Scene=F(Object,Attribute,Relation,State,Environment,Space,Time,Goal)Scene=F(Object,Attribute,Relation,State,Environment,Space,Time,Goal)

这意味着同样的对象,在不同关系、状态、位置和环境条件下,可以形成完全不同的场景。


268.3 场景是动态结构

ICAI 中的场景不是静态数据。

现实世界不断发生变化:

对象位置变化
↓
属性变化
↓
关系变化
↓
状态变化
↓
场景变化
↓
认知变化

例如,一个手、一个鸡蛋和一个桌面可能形成:

Scene₁
手 → 靠近 → 鸡蛋
鸡蛋 → 位于 → 桌面
手 → 未接触 → 鸡蛋

当手继续移动:

Scene₂
手 → 接近 → 鸡蛋
手 → 接触 → 鸡蛋
鸡蛋 → 位于 → 桌面

继续施加作用:

Scene₃
手 → 接触 → 鸡蛋
手 → 握持 → 鸡蛋
鸡蛋 → 脱离 → 桌面

因此:

Sct→Sct+1Sc_t \rightarrow Sc_{t+1}

场景变化不是简单地替换一份数据,而是当前世界结构发生变化后的重新构造。


268.4 场景 API 与对象 API 的关系

Object API 负责对象实例:

Object API
↓
Object Instance

Scene API 负责组织多个对象及其结构:

Object₁
Object₂
Object₃
↓
Relation
↓
State
↓
Environment
↓
Space
↓
Time
↓
Scene

因此,两者的职责不同。

对象 API 回答:

当前系统中有哪些对象?

场景 API 回答:

这些对象在当前时间、空间和环境中形成了什么结构?

可以表示为:

Object=EntityObject=Entity

而:

Scene=Structure(Object,Relation,State,Environment)Scene=Structure(Object,Relation,State,Environment)

所以,Scene API 并不是 Object API 的简单扩展,而是更高一级的结构组织接口。


268.5 场景 API 的核心数据结构

一个基本场景对象可以定义为:

Scene
{
    id
    name
    type
    goal
    objects
    relations
    states
    environment
    position
    timestamp
    status
}

其中:

  • id:场景唯一标识;
  • name:场景名称;
  • type:场景类型;
  • goal:当前场景目标;
  • objects:场景对象集合;
  • relations:场景关系集合;
  • states:场景状态集合;
  • environment:环境信息;
  • position:空间信息;
  • timestamp:场景时间;
  • status:场景当前状态。

场景的核心不是名称,而是其内部结构。

因此可以进一步表示:

Sc=(O,R,S,E,P,T,G)Sc=(O,R,S,E,P,T,G)

其中:

O={O1,O2,⋯ ,On}O=\{O_1,O_2,\cdots,O_n\}

表示对象集合;

R={R1,R2,⋯ ,Rm}R=\{R_1,R_2,\cdots,R_m\}

表示关系集合;

S={S1,S2,⋯ ,Sk}S=\{S_1,S_2,\cdots,S_k\}

表示状态集合。


268.6 Scene API 的基本接口

Scene API 可以提供以下标准接口:

/api/scene/create
/api/scene/get
/api/scene/update
/api/scene/delete
/api/scene/list
/api/scene/query
/api/scene/current
/api/scene/history
/api/scene/rebuild
/api/scene/validate

也可以采用资源型接口:

/api/scenes
/api/scenes/{scene_id}
/api/scenes/{scene_id}/objects
/api/scenes/{scene_id}/relations
/api/scenes/{scene_id}/states
/api/scenes/{scene_id}/history
/api/scenes/{scene_id}/rebuild

其中:

create 用于创建场景;

get 用于获取指定场景;

update 用于更新场景;

delete 用于删除场景;

list 用于获取场景集合;

query 用于按照条件查询场景;

current 用于获得当前运行场景;

history 用于获得场景变化历史;

rebuild 用于根据最新对象结构重新构建场景;

validate 用于验证场景结构是否合法。


268.7 场景创建

场景创建可以来自外部数据,也可以来自 ICAI Runtime 内部的动态场景构造。

基本过程:

Real-Time Data
↓
Element
↓
Object
↓
Attribute
↓
Relation
↓
State
↓
Scene API
↓
Scene

场景创建函数可以表示为:

CreateScene(O,A,R,S,E,P,T,G)→ScCreateScene(O,A,R,S,E,P,T,G)\rightarrow Sc

其结果不是简单保存对象,而是建立对象之间的结构关系。

例如:

Object:
Hand
Egg
Table

Relation:
Hand → Near → Egg
Egg → On → Table

State:
Hand = Moving
Egg = Stable
Table = Stable

Environment:
Indoor

Goal:
Grasp Egg

Scene API 将这些数据组织为:

Scene
├── Goal
├── Objects
│   ├── Hand
│   ├── Egg
│   └── Table
├── Relations
│   ├── Hand-Near-Egg
│   └── Egg-On-Table
├── States
│   ├── Hand-Moving
│   ├── Egg-Stable
│   └── Table-Stable
├── Environment
├── Space
└── Time

由此形成一个完整的当前场景。


268.8 当前场景

ICAI 系统运行时,需要始终存在一个与当前世界状态对应的场景结构。

定义:

CurrentScene=SctCurrentScene=Sc_t

当新的实时数据进入系统:

Dt+1→Elementt+1D_{t+1}\rightarrow Element_{t+1}

进一步产生:

Objectt+1→Attributet+1→Relationt+1→Statet+1Object_{t+1} \rightarrow Attribute_{t+1} \rightarrow Relation_{t+1} \rightarrow State_{t+1}

最终:

Sct→Sct+1Sc_t\rightarrow Sc_{t+1}

因此,Current Scene 不是永久固定的数据,而是系统当前认知周期中的世界结构。


268.9 场景更新

场景更新可以由对象变化、属性变化、关系变化和状态变化触发。

例如:

Attribute Changed
↓
Relation Recalculation
↓
State Recalculation
↓
Scene Update

或者:

Object Added
↓
Scene Update

也可以:

Object Removed
↓
Relation Removed
↓
State Recalculation
↓
Scene Update

场景更新可以形式化为:

Sct+1=Update(Sct,ΔO,ΔA,ΔR,ΔS,ΔE)Sc_{t+1}=Update(Sc_t,\Delta O,\Delta A,\Delta R,\Delta S,\Delta E)

其中:

  • ΔO\Delta O:对象变化;
  • ΔA\Delta A:属性变化;
  • ΔR\Delta R:关系变化;
  • ΔS\Delta S:状态变化;
  • ΔE\Delta E:环境变化。

268.10 场景重构

在复杂动态环境中,有时不能只修改场景中的某一个字段,而需要根据最新数据重新构建场景。

因此 Scene API 提供:

/api/scene/rebuild

其基本过程为:

Current Objects
+
Current Attributes
+
Current Relations
+
Current States
+
Current Environment
+
Current Space
+
Current Time
↓
Scene Builder
↓
New Scene

形式化:

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

场景重构具有重要意义。

它使系统不需要提前建立所有可能的场景,而是在运行过程中,根据当前世界数据形成当前场景。

因此:

世界变化
↓
重新获得数据
↓
重新构造结构
↓
形成当前场景

而不是:

提前枚举所有场景
↓
寻找最接近的固定场景

ICAI 的场景工程属于动态场景构造机制


268.11 场景验证

Scene API 必须保证进入认知引擎的场景具有基本结构完整性。

定义:

Valid(Sc)=Valid(O)∧Valid(R)∧Valid(S)∧Valid(T)Valid(Sc)=Valid(O)\land Valid(R)\land Valid(S)\land Valid(T)

其中:

  • Valid(O):对象合法;
  • Valid(R):关系合法;
  • Valid(S):状态合法;
  • Valid(T):时间合法。

进一步可以验证:

Object Exists
+
Relation Target Exists
+
State Object Exists
+
Timestamp Valid
+
Scene Structure Valid
↓
Valid Scene

例如:

Hand → Grasp → Egg

如果 Egg 不存在,则该关系不能进入有效场景。

因此:

Valid(R)⇒Valid(Os)∧Valid(Ot)Valid(R)\Rightarrow Valid(O_s)\land Valid(O_t)

其中:

  • OsO_s:关系源对象;
  • OtO_t:关系目标对象。

268.12 场景查询

Scene API 不仅提供完整场景,还应该支持结构化查询。

例如:

查询当前场景中的所有对象
查询当前场景中的移动对象
查询 Hand 与哪些对象存在关系
查询距离 Hand 最近的对象
查询当前处于 Stable 状态的对象
查询与当前目标相关的对象

查询可以表示为:

Query(Sc,C)→ResultQuery(Sc,C)\rightarrow Result

其中:

  • ScSc:当前场景;
  • CC:查询条件;
  • Result:满足条件的场景结构或对象集合。

例如:

Query(Sc, State=Moving)→{O1,O2,⋯ }Query(Sc,\ State=Moving) \rightarrow \{O_1,O_2,\cdots\}

因此 Scene API 可以成为认知引擎获取当前世界结构的重要入口。


268.13 场景与目标

场景并不是与目标完全独立的。

在机器认知过程中,同一个世界可以因为目标不同而产生不同的认知关注结构。

因此可以表示:

Sct=F(Ot,At,Rt,St,Et,Pt,Tt,Gt)Sc_t=F(O_t,A_t,R_t,S_t,E_t,P_t,T_t,G_t)

例如:

目标:抓取鸡蛋

系统重点关注:

Hand
Egg
Table
Hand-Egg Relation
Egg-Table Relation
Hand Position
Egg Position
Hand Movement
Egg Stability

如果目标改变为:

目标:移动桌面上的瓶子

场景中的关注结构也会发生变化。

因此,目标可以参与场景结构组织。


268.14 场景与认知

Scene API 最终需要将场景提供给 Cognitive Engine。

基本关系:

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

即:

Goal
+
Object
+
Attribute
+
Relation
+
State
+
Scene
↓
Cognition

因此:

Scene API
↓
Scene
↓
Cognitive Model
↓
Cognitive Engine

Scene API 不直接做认知决策。

它负责提供:

当前机器世界是什么结构。

Cognitive Engine 负责进一步计算:

在这个结构下应该形成什么认知。

这保持了 API 层、模型层和认知引擎层之间的边界。


268.15 Scene API 的 PHP OOP 工程结构

按照 ICAI 的 PHP OOP 架构,可以建立:

SceneApiController
        ↓
SceneService
        ↓
SceneEngine
        ↓
SceneModel
        ↓
SceneRepository
        ↓
MySQL

各类职责分别为:

SceneApiController

负责接收 API 请求:

class SceneApiController
{
    public function create()
    {
        // Receive request
    }

    public function get()
    {
        // Get scene
    }

    public function update()
    {
        // Update scene
    }

    public function rebuild()
    {
        // Rebuild scene
    }
}

SceneService

负责场景业务调用:

class SceneService
{
    protected $engine;

    public function createScene($data)
    {
        return $this->engine->build($data);
    }

    public function rebuildScene($data)
    {
        return $this->engine->rebuild($data);
    }
}

SceneEngine

负责场景结构计算:

class SceneEngine
{
    public function build($data)
    {
        $scene = array();

        $scene['objects'] = $data['objects'];
        $scene['relations'] = $data['relations'];
        $scene['states'] = $data['states'];
        $scene['environment'] = $data['environment'];
        $scene['position'] = $data['position'];
        $scene['timestamp'] = $data['timestamp'];

        return $scene;
    }
}

这里的 Engine 才是场景结构计算的位置。

Controller 不负责场景计算,API 也不直接承担认知计算。


268.16 SceneModel

SceneModel 表示软件系统中的场景对象。

例如:

class SceneModel
{
    protected $id;
    protected $type;
    protected $objects;
    protected $relations;
    protected $states;
    protected $environment;
    protected $position;
    protected $timestamp;
    protected $goal;

    public function getId()
    {
        return $this->id;
    }

    public function getObjects()
    {
        return $this->objects;
    }

    public function getRelations()
    {
        return $this->relations;
    }

    public function getStates()
    {
        return $this->states;
    }
}

SceneModel 是场景的软件对象表示。

它与理论中的 Scene 对应,但不能将理论概念和数据库记录简单等同。

其结构关系是:

Scene Theory
↓
Scene Object Model
↓
SceneModel
↓
Runtime Scene Instance

268.17 SceneRepository

SceneRepository 负责场景数据持久化。

class SceneRepository
{
    public function save($scene)
    {
        // Save scene
    }

    public function find($id)
    {
        // Find scene
    }

    public function update($id, $scene)
    {
        // Update scene
    }

    public function delete($id)
    {
        // Delete scene
    }

    public function history($id)
    {
        // Scene history
    }
}

数据库可以设计:

cognitive_scenes

例如:

id
scene_type
goal
environment
position
timestamp
scene_status
created_at
updated_at

场景中的对象、关系和状态可以通过独立关联表进行管理:

cognitive_scene_objects
cognitive_scene_relations
cognitive_scene_states
cognitive_scene_history

这样可以保持:

Scene
├── Objects
├── Relations
├── States
└── History

268.18 场景历史

由于场景是动态变化的,因此系统应该保存场景变化历史。

定义:

HSc={(t1,Sc1),(t2,Sc2),⋯ ,(tn,Scn)}H_{Sc}=\{(t_1,Sc_1),(t_2,Sc_2),\cdots,(t_n,Sc_n)\}

其中:

  • tit_i:时间;
  • SciSc_i:该时间对应的场景。

例如:

t1 → Hand Far Egg
t2 → Hand Near Egg
t3 → Hand Touch Egg
t4 → Hand Grasp Egg
t5 → Hand Move Egg

这形成:

Sc1→Sc2→Sc3→Sc4→Sc5Sc_1\rightarrow Sc_2\rightarrow Sc_3\rightarrow Sc_4\rightarrow Sc_5

场景历史不仅可以用于记录系统运行过程,还可以成为后续行为分析和反馈认知的重要结构数据。


268.19 场景变化事件

Scene API 可以产生场景事件:

SceneCreated
SceneUpdated
SceneChanged
SceneRebuilt
ObjectAdded
ObjectRemoved
RelationChanged
StateChanged
SceneClosed

例如:

StateChanged
↓
SceneChanged
↓
Cognitive Engine
↓
Re-Cognition

或者:

ObjectAdded
↓
SceneUpdated
↓
Scene Rebuild
↓
Cognition Update

因此 Scene API 可以成为动态认知系统中的结构变化入口。


268.20 Scene API 与反馈闭环

ICAI 的核心运行过程不是单向的。

完整闭环为:

World
↓
Real-Time Data
↓
Element API
↓
Object API
↓
Attribute API
↓
Relation API
↓
State API
↓
Scene API
↓
Cognitive Engine
↓
Behavior Engine
↓
Action
↓
Device API
↓
Device
↓
World Change
↓
Feedback
↓
Element API
↓
Object Update
↓
Scene Update
↓
Re-Cognition

因此 Scene API 位于机器世界结构形成和机器认知之间。

其位置可以概括为:

World→Data→Structure→Scene→CognitionWorld\rightarrow Data\rightarrow Structure\rightarrow Scene\rightarrow Cognition

执行之后:

Cognition→Action→WorldChange→Feedback→SceneUpdateCognition\rightarrow Action\rightarrow WorldChange\rightarrow Feedback\rightarrow SceneUpdate

由此形成动态认知闭环。


268.21 Scene API 的统一模型

经过前面的 Element API、Object API、Attribute API、Relation API、State API,可以形成统一结构:

E→O→A→R→S→ScE\rightarrow O\rightarrow A\rightarrow R\rightarrow S\rightarrow Sc

其中:

  • EE:Element;
  • OO:Object;
  • AA:Attribute;
  • RR:Relation;
  • SS:State;
  • ScSc:Scene。

进一步进入:

Sc→C→M→B→ActionSc\rightarrow C\rightarrow M\rightarrow B\rightarrow Action

其中:

  • CC:Cognition;
  • MM:Method;
  • BB:Behavior。

因此形成:

Element
↓
Object
↓
Attribute
↓
Relation
↓
State
↓
Scene
↓
Cognition
↓
Method
↓
Behavior
↓
Action
↓
Device
↓
Feedback

这不是几个独立 API 的简单集合,而是一个连续的机器认知对象结构链。


268.22 Scene API 的工程定位

Scene API 在 ICAI 系统中的工程定位可以定义为:

Scene API 是机器世界结构进入认知运行层之前的场景接口,负责将动态对象、属性、关系、状态、环境、空间、时间和目标组织成当前场景实例,并向认知系统提供统一的场景数据。

因此:

Element API
负责元素
        ↓
Object API
负责对象
        ↓
Attribute API
负责属性
        ↓
Relation API
负责关系
        ↓
State API
负责状态
        ↓
Scene API
负责场景
        ↓
Cognitive API
负责认知通信

每一层都有自己的对象边界和工程职责。


268.23 本章总结

第268章建立了 Scene API|场景 API

Scene API 的核心不是保存一个“场景名称”,而是建立当前世界的结构化场景实例:

Sct=F(Ot,At,Rt,St,Et,Pt,Tt,Gt)Sc_t=F(O_t,A_t,R_t,S_t,E_t,P_t,T_t,G_t)

它将:

Object
+
Attribute
+
Relation
+
State
+
Environment
+
Space
+
Time
+
Goal

组织为:

Current Scene

随后:

Scene
↓
Cognitive Model
↓
Cognitive Engine

当现实世界发生变化时:

World Change
↓
Real-Time Data
↓
Element Update
↓
Object Update
↓
Attribute Update
↓
Relation Update
↓
State Update
↓
Scene Update
↓
Re-Cognition

由此,Scene API 完成了从对象结构到当前世界场景结构的工程连接。

第268章之后,ICAI API 层已经形成:

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

下一层将进入认知结构本身,使场景数据正式进入 Cognitive API|认知 API,完成从:

Scene→CognitionScene\rightarrow Cognition

的独立系统通信接口建设。

Leave a Reply

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