第67章 SAI 与外部设备
第66章建立了 Device Object,解决了 SAI 如何在内部描述一个设备。
第67章进一步解决一个更重要的问题:
SAI 如何与外部真实设备形成双向关系?
这里的“外部设备”是指 SAI 系统之外、能够通过接口、协议、控制器或通信通道与 SAI 交换信息的设备。
核心不是单向控制,而是:
SAI → Device
Device → SAI
最终形成:
感知 → 认知 → 推理 → 决策 → 行为 → 动作 → 设备
↓
设备状态
↓
设备反馈
↓
SAI感知
因此,SAI 与设备之间形成一个双向闭环。
1. SAI → Device
SAI → Device 表示 SAI 向外部设备发送控制信息。
基本路径:
SAI
↓
Decision
↓
Behavior
↓
Action
↓
Device Command
↓
DeviceAdapter
↓
External Device
例如:
Decision
{
goal: "turn_on_light",
choice: "Light_A.powerOn"
}
形成行为:
Behavior
{
target: "Light_A",
action: "powerOn",
state: "READY"
}
再形成设备命令:
DeviceCommand
{
device_id: "Light_A",
command: "POWER_ON",
parameters: {}
}
最后:
DeviceAdapter
↓
Light_A
设备实际执行。
因此:
SAI 不直接等同于物理设备,而是通过 Action、Device Command 和 DeviceAdapter 对设备进行操作。
2. Device → SAI
反方向是:
Device → SAI
设备可以向 SAI 提供:
- 当前状态
- 属性数据
- 传感器数据
- 执行结果
- 错误信息
- 异常信息
- 状态变化
- 完成通知
例如温度传感器:
Sensor_A
{
temperature: 28.5,
humidity: 62
}
通过 Adapter 进入 SAI:
Sensor_A
↓
SensorAdapter
↓
DeviceResponse / DeviceData
↓
Perception
↓
Cognition
所以 Device → SAI 并不是“设备自己进行认知”。
设备只是提供外部信息。
SAI 再对这些信息进行:
获取
↓
感知
↓
识别
↓
理解
↓
记忆
↓
推理
3. 行为执行
SAI 的行为执行是从内部决策走向外部设备的过程。
完整路径:
Reasoning
↓
Decision
↓
Behavior
↓
Action
↓
DeviceCommand
↓
DeviceAdapter
↓
Device
例如:
当前状态:
Room_Temperature = 31
规则:
IF temperature > 30
THEN air_conditioner = ON
推理得到:
Conclusion
{
subject: "AirConditioner_A",
predicate: "needs_control",
value: "ON",
state: "CONFIRMED"
}
Decision:
Choice = "PowerOn"
Behavior:
Behavior
{
target: "AirConditioner_A",
action: "powerOn",
state: "READY"
}
Action:
Action
{
type: "EXECUTE",
target: "AirConditioner_A",
method: "powerOn"
}
Device Command:
DeviceCommand
{
device_id: "AirConditioner_A",
command: "POWER_ON"
}
最终设备执行。
4. 设备控制
设备控制是 SAI 对外部设备产生实际影响的过程。
可以分为几种基本类型:
POWER
START
STOP
SET
MOVE
OPEN
CLOSE
RESET
CONFIGURE
例如灯:
POWER_ON
POWER_OFF
SET_BRIGHTNESS
电机:
START
STOP
SET_SPEED
SET_DIRECTION
机器人:
MOVE
STOP
GRAB
RELEASE
设备控制的基本结构:
Control
{
device_id
command
parameters
condition
state
}
例如:
Control
{
device_id: "Motor_A",
command: "SET_SPEED",
parameters:
{
speed: 1500
},
condition: "state == READY",
state: "READY"
}
这里需要注意:
SAI 不能因为生成了一个 Command 就认为设备已经完成操作。
必须等待 Device Response。
所以:
Command Created
≠
Command Executed
只有获得设备反馈后,才能确定执行结果。
5. 设备状态
外部设备具有自己的实际状态。
例如:
Light_A = ON
Motor_A = RUNNING
Robot_A = MOVING
Machine_A = ERROR
Sensor_A = ACTIVE
SAI 中保存的是:
对外部设备当前状态的结构化认识。
例如:
Device Object
{
id: "Motor_A",
state: "RUNNING",
properties:
{
speed: 1500,
temperature: 42
}
}
但这里需要区分:
Physical Device State
和:
SAI Device Object State
两者可能暂时不一致。
例如:
Physical Device
state = ERROR
SAI Device Object
state = RUNNING
这说明 SAI 当前保存的信息已经过期。
因此设备状态必须不断通过反馈进行更新。
Device State
↓
Device Response
↓
Perception
↓
State Recognition
↓
Device Object Update
这样可以避免 SAI 永远使用旧状态。
6. 设备反馈
反馈是 Device → SAI 的重要信息。
例如发送:
POWER_ON
设备返回:
SUCCESS
这只是最基本的反馈。
更加完整的反馈可以是:
DeviceResponse
{
device_id: "Motor_A",
command_id: "CMD_1001",
state: "SUCCESS",
output:
{
state: "RUNNING",
speed: 1500,
temperature: 42
},
error: null
}
如果失败:
DeviceResponse
{
device_id: "Motor_A",
command_id: "CMD_1002",
state: "FAILED",
output: null,
error:
{
code: "OVERHEAT",
message: "Motor temperature too high"
}
}
SAI 接收到后不能简单地把错误当成普通数据。
应该进入:
Feedback
↓
Perception
↓
Cognition
↓
State Recognition
↓
Risk
↓
Reasoning
例如:
temperature = 95
可以形成:
Device State = OVERHEAT
然后进入风险判断:
RiskLevel = CRITICAL
最终可能产生:
Decision = STOP_MOTOR
形成新的:
Action
↓
DeviceCommand
↓
Motor
这就形成了设备控制闭环。
7. 双向通信
SAI 与外部设备不是简单的:
SAI → Device
而应该是:
SAI → Device
Device → SAI
形成:
┌──────────────────┐
│ SAI │
│ │
│ Perception │
│ Cognition │
│ Reasoning │
│ Decision │
│ Behavior │
│ Action │
└────────┬─────────┘
│
DeviceAdapter
│
┌───────┴───────┐
│ │
↓ ↑
Device Command Device Response
│ │
↓ ↑
Device ───────────
双向通信包含两个方向。
SAI → Device
Decision
↓
Action
↓
DeviceCommand
↓
DeviceAdapter
↓
Device
Device → SAI
Device
↓
DeviceResponse
↓
DeviceAdapter
↓
Perception
↓
Cognition
↓
Memory / Reasoning
因此:
SAI ↔ Device
不是简单的数据传输,而是:
控制 → 执行 → 状态 → 反馈 → 再判断 → 再控制
8. 完整案例
下面使用一个 自动风扇设备作为完整案例。
设备:
Fan_A
Device Object:
Device
{
id: "Fan_A",
identity:
{
type: "Fan",
name: "Office Fan",
model: "F-100"
},
state: "OFF",
properties:
{
speed: 0,
temperature: 32,
power: false
},
methods:
[
"powerOn",
"powerOff",
"setSpeed"
],
abilities:
[
"PowerControl",
"SpeedControl"
]
}
8.1 Device → SAI:产生环境信息
温度传感器发现:
temperature = 32
信息进入:
Sensor
↓
SensorAdapter
↓
SAI Perception
形成:
Element
{
object: "Room",
property: "temperature",
value: 32,
unit: "C"
}
8.2 SAI:形成认知
Cognition 识别:
Room.temperature = 32
状态:
TemperatureState = HIGH
8.3 SAI:进行推理
规则:
IF
Room.temperature >= 30
THEN
Fan_A should_be_on
ReasoningEngine 得到:
Conclusion
{
subject: "Fan_A",
predicate: "should_be",
value: "ON",
state: "CONFIRMED"
}
8.4 SAI:进行决策
Decision:
Decision
{
goal: "reduce_temperature",
candidates:
[
"Fan_A.powerOn",
"Fan_A.setSpeed"
],
choice: "Fan_A.powerOn",
state: "DECIDED"
}
8.5 SAI:形成行为
Behavior
{
id: "B_1001",
type: "EXECUTE",
target: "Fan_A",
action: "powerOn",
state: "READY"
}
8.6 SAI:形成设备命令
DeviceCommand
{
id: "CMD_1001",
device_id: "Fan_A",
type: "CONTROL",
command: "POWER_ON",
parameters: {},
state: "READY"
}
8.7 DeviceAdapter → Fan
DeviceCommand
↓
DeviceAdapter
↓
Fan_A
风扇实际启动。
8.8 Fan → SAI:返回响应
DeviceResponse
{
id: "RES_1001",
device_id: "Fan_A",
command_id: "CMD_1001",
state: "SUCCESS",
output:
{
power: true,
state: "ON",
speed: 1
},
error: null
}
8.9 SAI 更新 Device Object
原来:
Fan_A
{
state: "OFF",
power: false
}
更新:
Fan_A
{
state: "ON",
power: true,
speed: 1
}
8.10 后续异常反馈
运行一段时间后:
Fan_A
{
temperature: 85,
state: "OVERHEAT"
}
反馈进入:
Device
↓
DeviceAdapter
↓
Perception
↓
Cognition
↓
Risk
↓
Reasoning
↓
Decision
Risk:
Risk
{
object: "Fan_A",
event: "OVERHEAT",
score: 0.90,
level: "CRITICAL"
}
Decision:
Choice = "Fan_A.powerOff"
形成新的:
Action
↓
DeviceCommand
↓
DeviceAdapter
↓
Fan_A
于是形成:
控制
↓
执行
↓
反馈
↓
感知
↓
认知
↓
风险
↓
推理
↓
决策
↓
控制
本章核心模型
第67章可以最终归纳为:
┌───────────────┐
│ SAI │
│ │
│ Perception │
│ Cognition │
│ Reasoning │
│ Decision │
│ Behavior │
│ Action │
└───────┬───────┘
│
DeviceAdapter
│
┌──────────┴──────────┐
↓ ↑
Device Command Device Response
↓ ↑
└─────── Device ──────┘
│
State/Data
↓
Feedback
最终形成:
SAI
↓
Decision
↓
Behavior
↓
Action
↓
Device Command
↓
DeviceAdapter
↓
External Device
↓
Device State / Response
↓
DeviceAdapter
↓
Perception
↓
Cognition
↓
Memory / Reasoning
↓
Decision
本章核心定义
SAI 与外部设备的关系,是通过 DeviceAdapter 建立的双向信息与行为通道。SAI 向设备发送 Device Command,使设备执行实际行为;设备向 SAI 返回 Device Response、状态和数据,使 SAI 更新 Device Object,并重新进入感知、认知、推理和决策过程。
因此,SAI 与 Device 的核心关系不是单纯的“控制设备”,而是:
SAI → 控制
Device → 执行
Device → 反馈
SAI → 认识
SAI → 再决策
SAI → 再控制
这也是 SAI 从内部认知系统进入外部现实环境后的一个基本闭环。