第101章 开发一个环境感知 SAI
本章在第100章“简单 SAI”的基础上继续扩展。
第100章解决的是:
Individual 能够接收信息、感知、认知、记忆、推理、决策并执行行为。
第101章进一步解决:
Individual 不再只处理一个孤立对象,而是能够感知一个环境 Scene,并根据环境中的多个对象及其关系进行决策。
本章仍然采用 PHP OOP + 对象 + 属性 + 状态 + 关系 + 规则 + 离散计算实现,不使用 LLM、Transformer、Embedding、向量搜索、神经网络或生成式机制。
1. Scene
1.1 Scene 定义
Scene 是 Individual 在某一时间范围内对当前环境进行结构化组织后的场景。
可以定义:
Scene = Objects + Relations + States + Environment + Time
例如一个工业环境:
Scene_A
Machine_A
TemperatureSensor_A
Cooling_A
Operator_A
它们可能具有:
Machine_A.state = RUNNING
Machine_A.temperature = 92
Cooling_A.state = OFF
TemperatureSensor_A.value = 92
Operator_A.state = PRESENT
同时存在关系:
TemperatureSensor_A monitors Machine_A
Cooling_A cools Machine_A
Operator_A operates Machine_A
因此 Scene 不是一个简单数组。
它是 Individual 对当前环境的结构化表示。
1.2 Scene 的基本结构
$scene = array(
'id' => 'Scene_A',
'time' => time(),
'objects' => array(
'Machine_A',
'Cooling_A',
'TemperatureSensor_A'
),
'relations' => array(
array(
'source' => 'TemperatureSensor_A',
'type' => 'monitors',
'target' => 'Machine_A'
),
array(
'source' => 'Cooling_A',
'type' => 'cools',
'target' => 'Machine_A'
)
)
);
Scene 的作用是把分散的信息组织到同一个环境结构中。
1.3 Scene 与 Object 的关系
Scene
├── Object
├── Object
├── Object
├── Relation
├── State
└── Environment
例如:
Scene_A
│
├── Machine_A
├── Cooling_A
├── Sensor_A
│
├── Sensor_A → monitors → Machine_A
└── Cooling_A → cools → Machine_A
因此:
Object 是场景中的对象,Scene 是组织这些对象及其关系的环境结构。
2. SceneCollector
2.1 SceneCollector 定义
Sensor 获得的是局部信息。
SceneCollector 的作用是:
把来自不同 Sensor、不同时间点、不同来源的信息收集并组织成 Scene。
基本流程:
Sensor
↓
Information
↓
SceneCollector
↓
Scene
2.2 多 Sensor
例如:
TemperatureSensor_A
temperature = 92
SpeedSensor_A
speed = 1200
LoadSensor_A
load = 82
Individual 收到:
Information_1
Information_2
Information_3
SceneCollector 组织:
Scene_A
Machine_A
├── temperature = 92
├── speed = 1200
└── load = 82
2.3 SceneCollector 的基本结构
class SceneCollector
{
protected $information = array();
public function collect($information)
{
$this->information[] = $information;
}
public function buildScene()
{
return array(
'id' => 'Scene_' . time(),
'information' => $this->information,
'created_at' => time()
);
}
}
它本身不负责:
- Cognition
- Reasoning
- Decision
- Learning
它负责的是:
信息收集与场景组织。
2.4 Scene 的连续变化
环境不是静止的。
例如:
t1:
Machine_A.temperature = 80
t2:
Machine_A.temperature = 86
t3:
Machine_A.temperature = 92
SceneCollector 可以得到:
Scene_1 → Scene_2 → Scene_3
并进一步形成:
temperature:
80 → 86 → 92
这就为后面的 Cognition 提供:
temperature increasing
这样的结构化信息。
3. Sensor
3.1 Sensor 定义
Sensor 是环境信息的获取设备或信息来源。
例如:
TemperatureSensor
PressureSensor
SpeedSensor
DistanceSensor
PositionSensor
Camera
WeightSensor
FlowSensor
Sensor 的核心职责只有一个:
获取信息。
3.2 Sensor 与 Perception 的区别
必须明确:
Sensor = 获取数据
Perception = 组织和识别数据
例如:
TemperatureSensor_A
↓
92
↓
Information
↓
Perception
↓
Machine_A.temperature = 92
Sensor 不理解:
92 是否危险?
也不决定:
是否停止机器?
这些属于后面的 Cognition、Reasoning、Decision。
3.3 Sensor Object
Sensor 本身也可以被表示成 SAI Object:
$sensor = array(
'id' => 'TemperatureSensor_A',
'type' => 'temperature_sensor',
'state' => 'ACTIVE',
'unit' => 'C',
'value' => 92,
'target' => 'Machine_A'
);
4. Object
4.1 Object 定义
Object 是 Individual 对环境实体进行结构化表示后的对象。
例如:
Machine_A
Cooling_A
Sensor_A
Operator_A
Object 可以包含:
Identity
Property
State
Position
Relation
Method
Ability
4.2 Machine Object
例如:
$machine = array(
'id' => 'Machine_A',
'properties' => array(
'temperature' => 92,
'speed' => 1200,
'load' => 82
),
'state' => 'RUNNING'
);
这里:
temperature = Property
speed = Property
load = Property
RUNNING = State
4.3 Object 不等于物理实体
例如:
Physical Machine
↓
Sensor Information
↓
Perception
↓
Machine Object
因此:
Machine Object 是 Individual 内部的结构化对象,不是物理机器本身。
5. Relation
5.1 Relation 定义
Relation 表示两个或者多个对象之间的结构关系。
例如:
Sensor_A → monitors → Machine_A
Cooling_A → cools → Machine_A
Operator_A → operates → Machine_A
Machine_A → located_in → Factory_A
基本结构:
Source + Relation + Target
5.2 Relation 示例
$relation = array(
'source' => 'Cooling_A',
'type' => 'cools',
'target' => 'Machine_A'
);
也可以表示:
Machine_A
|
├── monitored_by → Sensor_A
├── cooled_by → Cooling_A
└── operated_by → Operator_A
5.3 Relation 的作用
没有 Relation:
Machine_A
Cooling_A
Sensor_A
只是三个独立对象。
有 Relation:
Sensor_A → monitors → Machine_A
Cooling_A → cools → Machine_A
Individual 才能够形成环境结构。
所以:
Object 描述“有什么”,Relation 描述“它们之间是什么关系”。
6. Perception
6.1 Perception 定义
Perception 接收 SceneCollector 提供的环境信息,并把信息转换成结构化 Elements、Objects、Properties、States、Relations。
流程:
Sensor
↓
Information
↓
SceneCollector
↓
Scene
↓
Perception
↓
Elements
↓
Objects
↓
Properties
↓
States
↓
Relations
6.2 Perception 示例
Sensor 输入:
temperature = 92
speed = 1200
load = 82
cooling = OFF
Perception 处理后:
Object:
Machine_A
Property:
temperature = 92
speed = 1200
load = 82
State:
Machine_A = RUNNING
Object:
Cooling_A
State:
Cooling_A = OFF
6.3 Relation 识别
如果系统已有:
Cooling_A cools Machine_A
Sensor_A monitors Machine_A
Perception 可以建立:
Cooling_A
↓
cools
↓
Machine_A
以及:
Sensor_A
↓
monitors
↓
Machine_A
6.4 PerceptionResult
可以形成:
$perceptionResult = array(
'scene_id' => 'Scene_A',
'objects' => array(
'Machine_A',
'Cooling_A',
'Sensor_A'
),
'properties' => array(
'Machine_A.temperature' => 92,
'Machine_A.speed' => 1200,
'Machine_A.load' => 82
),
'states' => array(
'Machine_A' => 'RUNNING',
'Cooling_A' => 'OFF'
),
'relations' => array(
array(
'source' => 'Cooling_A',
'type' => 'cools',
'target' => 'Machine_A'
)
)
);
Perception 的结果仍然是:
结构化环境信息。
它还没有决定应该做什么。
7. Cognition
7.1 Cognition 定义
Cognition 对 Perception 的结构进行理解。
例如 Perception 得到:
Machine_A.temperature = 92
Machine_A.load = 82
Machine_A.state = RUNNING
Cooling_A.state = OFF
Cooling_A → cools → Machine_A
Cognition 可以形成:
Machine_A 当前处于高温运行状态
Machine_A 当前负载较高
Cooling_A 当前未运行
Cooling_A 是 Machine_A 的冷却设备
7.2 Cognition 不等于 Decision
例如:
Cognition:
Machine_A temperature = 92
temperature > safe_limit
Machine_A load = 82
Cooling_A = OFF
形成:
Cognition:
HIGH_TEMPERATURE
HIGH_LOAD
COOLING_AVAILABLE
COOLING_INACTIVE
但是不能直接变成:
START COOLING
因为:
Cognition ≠ Decision
7.3 Cognition 建立环境状态
可以形成:
$cognition = array(
'scene' => 'Scene_A',
'understanding' => array(
'machine_state' => 'RUNNING',
'temperature_state' => 'HIGH',
'load_state' => 'HIGH',
'cooling_state' => 'OFF',
'cooling_available' => true
),
'state' => 'UNDERSTOOD'
);
8. Decision
现在 Individual 已经拥有:
Scene
Object
Property
State
Relation
Cognition
Decision 可以根据规则选择行为。
8.1 Rule
例如:
IF
Machine.temperature > 85
AND
Machine.load > 80
AND
Cooling.state = OFF
THEN
START_COOLING
这是一个离散规则。
8.2 Decision Candidates
Individual 可以产生候选:
CONTINUE
START_COOLING
REDUCE_SPEED
STOP_MACHINE
然后进行条件、风险、优先级检查。
8.3 Decision
当前:
temperature = 92
load = 82
cooling = OFF
规则成立:
92 > 85 TRUE
82 > 80 TRUE
Cooling = OFF TRUE
因此:
Decision = START_COOLING
8.4 Decision Result
$decision = array(
'target' => 'Machine_A',
'selected' => 'START_COOLING',
'candidates' => array(
'CONTINUE',
'START_COOLING',
'REDUCE_SPEED',
'STOP_MACHINE'
),
'state' => 'DECIDED',
'reason' => array(
'temperature_high',
'load_high',
'cooling_inactive'
)
);
这里可以清楚看到:
Cognition
↓
理解当前环境
↓
Reasoning
↓
规则计算
↓
Decision
↓
选择行为
9. Behavior
Decision 选择:
START_COOLING
但这还不是完整执行过程。
需要 Behavior。
9.1 Behavior 定义
Behavior 是对一个目标行为进行组织和执行的过程。
例如:
Behavior:
Start Cooling Machine_A
可以包含:
1. Check Cooling_A state
2. Send START
3. Check Cooling_A state
4. Read Machine_A temperature
5. Verify result
9.2 Behavior 与 Action
Behavior
├── Action 1: CHECK_STATE
├── Action 2: START
├── Action 3: READ_STATE
└── Action 4: VERIFY
因此:
Behavior = 执行过程
Action = 具体操作
9.3 Behavior 执行
$behavior = array(
'id' => 'Behavior_001',
'type' => 'START_COOLING',
'target' => 'Cooling_A',
'state' => 'RUNNING',
'actions' => array(
'CHECK_STATE',
'START',
'READ_STATE',
'VERIFY'
)
);
执行:
CHECK_STATE
↓
Cooling_A = OFF
↓
START
↓
Cooling_A = ON
↓
READ_STATE
↓
Cooling_A = ON
↓
VERIFY
最终:
Behavior = SUCCESS
10. Feedback
Behavior 完成以后,Individual 不能认为世界已经按照自己的预期改变。
必须重新获取环境信息。
这就是 Feedback。
10.1 Feedback 定义
Feedback 是外部环境、设备、行为执行结果返回给 Individual 的结果信息。
例如:
Action:
START_COOLING
设备返回:
Cooling_A.state = ON
然后 Sensor 再次检测:
Machine_A.temperature = 88
Feedback:
$feedback = array(
'source' => 'Cooling_A',
'target' => 'Machine_A',
'state' => 'SUCCESS',
'changes' => array(
'Cooling_A.state' => 'OFF → ON',
'Machine_A.temperature' => '92 → 88'
),
'timestamp' => time()
);
10.2 Feedback 重新进入 Individual
Feedback 不应该停留在 Behavior。
它应该重新进入:
Feedback
↓
Information
↓
Perception
↓
Scene
↓
Cognition
形成新的环境状态。
10.3 环境变化
第一次 Scene:
Scene_001
Machine_A
temperature = 92
load = 82
state = RUNNING
Cooling_A
state = OFF
Decision:
START_COOLING
执行后:
Cooling_A = ON
Machine_A.temperature = 88
形成:
Scene_002
Machine_A
temperature = 88
load = 82
state = RUNNING
Cooling_A
state = ON
继续运行:
Scene_003
Machine_A
temperature = 84
load = 80
state = RUNNING
Cooling_A
state = ON
这时候 Individual 又重新进行:
Perception
↓
Cognition
↓
Reasoning
↓
Decision
可能得到:
temperature = NORMAL
cooling = ON
Decision:
CONTINUE
11. 完整环境感知 SAI
现在把本章所有模块连接起来:
外部环境
│
┌───────────┴───────────┐
│ │
Sensor Device
│ │
└───────────┬───────────┘
↓
Information
↓
SceneCollector
↓
Scene
↓
Perception
↓
Element
↓
┌─────────┴─────────┐
↓ ↓
Object Relation
│ │
└─────────┬─────────┘
↓
Cognition
↓
Reasoning
↓
Decision
↓
Behavior
↓
Action
↓
External World
↓
Feedback
↓
Information
↓
Scene
这已经形成一个真正的环境闭环。
12. 完整运行实例
假设环境中存在:
Machine_A
Cooling_A
TemperatureSensor_A
LoadSensor_A
第一步:Sensor
TemperatureSensor_A → 92℃
LoadSensor_A → 82%
第二步:Information
Information_001
target = Machine_A
temperature = 92
source = TemperatureSensor_A
Information_002
target = Machine_A
load = 82
source = LoadSensor_A
第三步:SceneCollector
形成:
Scene_A
包含:
Machine_A
Cooling_A
TemperatureSensor_A
LoadSensor_A
第四步:Perception
识别:
Machine_A.temperature = 92
Machine_A.load = 82
Machine_A.state = RUNNING
Cooling_A.state = OFF
并建立:
Cooling_A → cools → Machine_A
第五步:Cognition
Individual 理解:
Machine_A = RUNNING
Temperature = HIGH
Load = HIGH
Cooling = OFF
Cooling_A is available
形成:
UNDERSTOOD
第六步:Reasoning
规则:
temperature > 85
AND
load > 80
AND
cooling = OFF
计算:
92 > 85 → TRUE
82 > 80 → TRUE
OFF → TRUE
得到:
Conclusion:
Machine_A requires cooling
第七步:Decision
候选:
CONTINUE
START_COOLING
REDUCE_SPEED
STOP
经过风险与条件检查:
START_COOLING
成为:
Decision
第八步:Behavior
Behavior:
START_COOLING
执行:
CHECK
→ START
→ READ
→ VERIFY
第九步:External Action
Cooling_A
OFF → ON
第十步:Feedback
Sensor 再次获得:
Machine_A.temperature = 88
于是:
Feedback
↓
Information
↓
SceneCollector
↓
Scene_B
第十一步:重新感知
新的 Scene:
Machine_A.temperature = 88
Cooling_A = ON
Individual 再次:
Perception
→ Cognition
→ Reasoning
→ Decision
继续运行。
当:
temperature = 84
规则:
temperature > 85
变成:
FALSE
Individual 不再继续执行启动冷却的行为。
13. 本章完整结构
第101章建立的是:
Scene
↓
SceneCollector
↓
Sensor
↓
Object
↓
Relation
↓
Perception
↓
Cognition
↓
Decision
↓
Behavior
↓
Feedback
↓
Scene
进一步展开:
External Environment
↓
Sensor
↓
Information
↓
SceneCollector
↓
Scene
↓
Perception
↓
Elements
↓
Objects + Properties + States + Relations
↓
Cognition
↓
Understanding
↓
Reasoning
↓
Decision
↓
Behavior
↓
Action
↓
External Environment
↓
Feedback
↓
Information
↓
Scene
本章核心定义
Scene
Scene 是 Individual 对当前环境中的对象、属性、状态、关系、时间和环境条件进行组织后的结构化场景。
SceneCollector
SceneCollector 是把多个来源、多个时间点的信息收集并组织成 Scene 的组件。
Sensor
Sensor 是环境信息的获取来源,不负责理解、推理和决策。
Object
Object 是 Individual 对环境实体进行结构化表示后的对象。
Relation
Relation 是 Object、Property、State 等结构之间的离散关系。
Perception
Perception 将环境信息转换为 Element、Object、Property、State、Relation 等结构。
Cognition
Cognition 对感知得到的对象、属性、状态和关系进行理解,形成当前环境认知。
Decision
Decision 根据当前认知、推理结果、条件、风险、优先级和能力选择下一步行为。
Behavior
Behavior 是对 Decision 所选择目标进行组织和执行的行为过程。
Feedback
Feedback 是外部环境和执行过程返回给 Individual 的实际结果,并重新进入下一轮感知。
因此,第101章最重要的变化是:
第100章的 SAI 能够处理信息;第101章的 SAI 开始能够处理“环境”。
最终形成:
感知环境
↓
建立 Scene
↓
识别 Object
↓
建立 Relation
↓
形成 Cognition
↓
Reasoning
↓
Decision
↓
Behavior
↓
改变环境
↓
Feedback
↓
重新感知环境
这就是环境感知型 SAI 的第一个完整闭环。