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

第2章 为什么需要 SAI Framework

第2章 为什么需要 SAI Framework

本章大纲

  1. 传统程序的运行方式
  2. 普通业务系统的局限
  3. 人工个体模拟的需求
  4. 信息输入与程序输入的区别
  5. 环境与场景
  6. 状态与行为
  7. 记忆与经验
  8. 决策与行动
  9. 为什么需要统一框架
  10. Framework 对 Individual 的意义
  11. SAI Framework 的应用范围
  12. 本章案例

2.1 传统程序的运行方式

传统程序的基本运行方式非常明确:

输入
 ↓
处理
 ↓
输出

例如,一个计算程序:

输入:10 + 20

程序:
计算 10 + 20

输出:
30

程序本身并不需要理解“10”和“20”是什么。

它只需要按照已经定义好的程序逻辑执行:

$result = 10 + 20;

因此,传统程序的核心特点是:

程序按照预先编写的逻辑,对输入数据进行处理,然后产生输出。

可以进一步表示为:

Input
 ↓
Program Logic
 ↓
Output

如果程序逻辑是:

IF temperature > 30
THEN fan = ON

那么:

temperature = 35

程序执行:

35 > 30

条件成立:

fan = ON

这仍然属于典型的程序控制。


2.2 普通业务系统的局限

现代业务系统通常比简单程序复杂得多。

例如一个订单系统:

用户
 ↓
提交订单
 ↓
订单系统
 ↓
检查库存
 ↓
计算价格
 ↓
生成订单
 ↓
支付
 ↓
发货

系统可以包含:

用户
订单
商品
库存
支付
物流
权限
日志
数据库

但是这些对象通常都是围绕业务流程建立的。

例如:

Order
Product
User
Payment
Shipping

它们解决的是:

“业务应该如何运行?”

而不是:

“一个人工个体应该如何认识外部世界?”

这两者存在明显区别。

普通业务系统通常具有:

固定输入
固定流程
固定业务规则
固定输出

而一个模拟人工个体面对的环境可能是:

信息不断变化
对象不断变化
状态不断变化
关系不断变化
目标不断变化
反馈不断变化

因此,单纯按照传统业务流程设计,很难完整表达一个持续运行的 Individual。


2.3 人工个体模拟的需求

如果希望构建一个模拟人工个体,就必须进一步回答几个问题:

它看到了什么?
它接收到了什么?
它知道什么?
它记得什么?
它现在处于什么状态?
它如何理解当前情况?
它如何进行推理?
它为什么做出某个决定?
它准备执行什么行为?
执行之后发生了什么?
它从结果中获得了什么经验?

因此,模拟人工个体至少需要:

信息
 ↓
感知
 ↓
认知
 ↓
记忆
 ↓
推理
 ↓
决策
 ↓
行为
 ↓
反馈
 ↓
经验
 ↓
学习

这已经不再只是:

Input → Process → Output

而是:

World
 ↓
Information
 ↓
Perception
 ↓
Cognition
 ↓
Memory
 ↓
Reasoning
 ↓
Decision
 ↓
Behavior
 ↓
Action
 ↓
Feedback
 ↓
Experience
 ↓
Learning
 ↓
Update

这就是 SAI Framework 所要解决的工程问题。


2.4 信息输入与程序输入的区别

这是理解 SAI Framework 的一个重要区别。

传统程序中的输入通常是:

参数
变量
表单
文件
数据库记录
API 数据

例如:

function add($a, $b)
{
    return $a + $b;
}

这里:

$a
$b

是程序参数。

但是 SAI 中的“信息接收”并不只是简单接收参数。

例如一个模拟人工个体接收到:

“前方有一辆汽车,距离 20 米,正在减速。”

对于程序而言,这是一段信息。

对于 SAI 而言,则需要逐步形成:

信息
 ↓
元素
 ↓
对象
 ↓
属性
 ↓
关系
 ↓
状态

例如:

对象:
汽车

属性:
距离 = 20m
速度状态 = 减速

关系:
汽车 → 位于 → 前方

状态:
前方车辆正在减速

因此:

程序输入主要解决“数据进入程序”,SAI 信息接收进一步解决“外部信息进入 Individual 的认知过程”。


2.5 环境与场景

模拟人工个体不能只面对静态数据。

它必须面对一个不断变化的环境。

因此 SAI Framework 将:

Environment

与:

Scene

作为重要概念。

例如机器人所在环境:

房间
├── 人
├── 桌子
├── 椅子
├── 门
├── 地面
└── 其他物体

某一时刻采集到的场景:

Scene
{
    time: 10:30:01,
    location: room_01,
    objects:
    [
        person,
        table,
        chair,
        door
    ]
}

下一时刻:

Scene
{
    time: 10:30:02,
    location: room_01,
    objects:
    [
        person,
        table,
        chair,
        door
    ]
}

虽然对象基本相同,但状态可能已经变化:

Person
speed = 0

变成:

Person
speed = 1.2
direction = forward

因此场景不是一个静态数据库。

它更接近:

Environment
 ↓
Scene
 ↓
Scene Information
 ↓
Perception

场景采集模块可以负责:

Environment
Object
Position
Motion
Distance
State
Sensor

最终形成统一的场景信息。


2.6 状态与行为

一个 Individual 不仅需要知道“世界是什么”,还需要知道:

当前自己是什么状态。

例如一个机器人:

State
{
    position
    speed
    direction
    battery
    temperature
    task
}

这些信息构成 Individual 的自身状态。

同时,外部对象也存在状态。

例如:

Door
{
    state = closed
}

或者:

Motor
{
    state = running
    speed = 100
}

状态变化以后,可能产生行为。

例如:

Door.state = closed

同时:

target = enter_room

Individual 可以形成:

Decision
 ↓
OpenDoor
 ↓
Action

于是:

状态
 ↓
判断
 ↓
决策
 ↓
行为
 ↓
状态变化

形成一个持续循环。

这也是 SAI 与传统一次性程序的重要区别之一。


2.7 记忆与经验

如果一个 Individual 每次遇到相同情况都完全重新处理,那么它只能表现出有限的持续能力。

因此必须存在:

Memory

以及:

Experience

例如:

第一次遇到:

道路积水

Individual 执行:

降低速度

结果:

安全通过

于是形成经验:

Experience
{
    scene = 积水道路
    action = 降低速度
    result = 安全通过
}

以后再次遇到类似情况:

积水道路

可以从记忆中获取:

历史经验

然后影响后续判断。

形成:

当前场景
 ↓
记忆检索
 ↓
历史经验
 ↓
推理
 ↓
决策

因此,Memory 并不是简单的“数据存储”。

它是 Individual 持续运行过程中形成历史状态的重要组成部分。

可以建立:

Memory
├── ShortMemory
├── LongMemory
├── FactMemory
├── ExperienceMemory
└── StateMemory

2.8 决策与行动

理解信息之后,Individual 还需要回答:

下一步做什么?

这就是 Decision。

例如:

当前状态:
电量 = 15%

任务:
继续执行任务

可能存在几个候选行为:

Candidate A:继续任务
Candidate B:返回充电站
Candidate C:停止任务

Decision 系统可以综合:

Condition
Risk
Priority
Experience
Goal
State

形成:

Candidates
 ↓
Condition Analysis
 ↓
Risk Analysis
 ↓
Priority
 ↓
Decision

例如:

Decision = 返回充电站

然后进入:

Behavior
 ↓
Action

最终产生实际行为:

移动
 ↓
返回充电站

因此:

决策负责选择,行为负责执行。

这两个概念不能混为一谈。


2.9 为什么需要统一框架

如果没有统一 Framework,开发一个 Individual 时,很容易变成:

A程序
负责信息

B程序
负责识别

C程序
负责记忆

D程序
负责规则

E程序
负责决策

F程序
负责设备

G程序
负责反馈

这些程序之间可能没有统一的数据结构。

最终出现:

信息格式不同
对象格式不同
状态格式不同
关系格式不同
接口不同
生命周期不同
模块调用方式不同

系统越大,维护成本越高。

SAI Framework 的意义就是提供统一的基础结构。

例如统一定义:

Information
Element
Object
Property
Relation
Method
Rule
State
Memory
Experience
Decision
Behavior
Action
Feedback

然后建立统一的数据流:

Information
 ↓
Perception
 ↓
Element
 ↓
Object
 ↓
Relation
 ↓
Cognition
 ↓
Memory
 ↓
Reasoning
 ↓
Decision
 ↓
Behavior
 ↓
Action
 ↓
Feedback

这样不同 Individual 可以共享相同的基础机制。


2.10 Framework 对 Individual 的意义

SAI Framework 与 Individual 的关系可以理解为:

SAI Framework
       │
       ↓
提供基础能力
       │
       ↓
Individual

Framework 本身不是 Individual。

它更像是 Individual 的:

基础结构
运行机制
对象体系
信息体系
记忆体系
认知体系
推理体系
决策体系
行为体系
反馈体系
扩展机制

一个 Individual 则可以根据自己的配置拥有不同的:

Identity
Ability
Memory
Knowledge
Rules
Objects
Goals
Behaviors
Devices

例如:

Individual A
├── 家庭机器人
├── 室内环境
├── 清洁能力
└── 移动能力

另一个:

Individual B
├── 工业设备
├── 工厂环境
├── 检测能力
└── 控制能力

二者可以使用相同 Framework。

区别在于:

Identity
Object
Ability
Rule
Memory
Device
Behavior

不同。

所以:

Framework 负责提供“构建 Individual 的共同基础”,Individual 负责形成具体的模拟人工个体。


2.11 SAI Framework 的应用范围

SAI Framework 不应该被限制为 Web 应用。

Web 只是 SAI 的一种应用环境。

整体可以表示为:

                 SAI Framework
                       │
              ┌────────┼────────┐
              │        │        │
             Web      API      CLI
              │
        ┌─────┴─────┐
        │           │
       UI         System

同时可以连接:

SAI
 │
 ├── Robot
 ├── Vehicle
 ├── Drone
 ├── Industrial Device
 ├── Sensor System
 ├── Smart Device
 ├── Web System
 ├── API System
 └── Custom Device

因此它可以应用于:

1. Web Individual

例如:

网站信息接收
 ↓
认知
 ↓
判断
 ↓
行为
 ↓
Web Response

2. Robot Individual

传感器
 ↓
场景
 ↓
感知
 ↓
认知
 ↓
决策
 ↓
运动

3. Vehicle Individual

道路
 ↓
车辆
 ↓
环境信息
 ↓
场景理解
 ↓
决策
 ↓
车辆行为

4. Industrial Individual

设备状态
 ↓
异常检测
 ↓
风险判断
 ↓
决策
 ↓
设备控制
 ↓
反馈

5. 自定义 Individual

开发者可以根据具体任务构建自己的:

Object
Rule
Memory
Ability
Behavior
Adapter

从而形成不同类型的模拟人工个体。


2.12 本章案例

下面使用一个简单案例说明为什么需要 SAI Framework。

假设需要构建一个:

能够观察房间环境,并决定是否打开风扇的模拟人工个体。


2.12.1 传统程序方式

传统程序可能直接写:

if ($temperature > 30) {
    $fan = 'ON';
}

整个逻辑只有:

Temperature
 ↓
IF
 ↓
Fan ON

它可以完成任务。

但是它没有表达:

环境
对象
状态
记忆
经验
决策
行为
反馈

2.12.2 SAI 方式

SAI 可以把这个问题拆成多个对象。

环境

Room

对象

TemperatureSensor
Fan
Person

状态

Temperature = 32℃
Fan = OFF
Person = PRESENT

信息

{
    source: TemperatureSensor,
    object: Room,
    property: temperature,
    value: 32,
    time: ...
}

进入:

Information
 ↓
Perception

形成:

Element
temperature
32

进一步形成:

Object
Room

Property
temperature = 32

2.12.3 认知

Individual 建立:

Room
 └── temperature = 32℃

并结合规则:

IF Room.temperature > 30
THEN cooling_required = true

形成:

Understanding

即:

当前房间温度较高,需要降温。

这里的“理解”不是生成一段自然语言,而是形成结构化的内部认知结果。


2.12.4 推理

已有事实:

temperature = 32

规则:

temperature > 30

推理:

32 > 30

成立。

得到:

cooling_required = true

2.12.5 决策

候选行为:

Candidate 1:保持风扇关闭
Candidate 2:打开风扇
Candidate 3:提高风扇速度

结合当前状态:

temperature = 32
fan = OFF

最终:

Decision
= TurnOnFan

2.12.6 行为

决策进入行为系统:

Decision
 ↓
Behavior
 ↓
Action

形成:

Behavior
{
    type: cooling
    target: Fan
    action: ON
}

2.12.7 外部执行

Action 通过 Renderer 或 Adapter 输出:

FanAdapter
 ↓
Fan
 ↓
ON

风扇状态变成:

Fan.state = ON

2.12.8 反馈

系统重新采集环境:

TemperatureSensor
 ↓
32℃

一段时间之后:

28℃

产生:

Feedback
{
    action: TurnOnFan,
    previous_temperature: 32,
    current_temperature: 28,
    result: success
}

2.12.9 经验

系统形成:

Experience
{
    condition:
        temperature > 30

    action:
        fan = ON

    result:
        temperature decreased
}

以后再次遇到类似状态时:

temperature > 30

历史经验就可以成为推理和决策的参考。

最终形成完整循环:

环境
 ↓
场景采集
 ↓
信息接收
 ↓
感知
 ↓
元素
 ↓
对象
 ↓
属性
 ↓
关系
 ↓
认知
 ↓
记忆
 ↓
推理
 ↓
决策
 ↓
行为
 ↓
行动
 ↓
风扇
 ↓
环境变化
 ↓
反馈
 ↓
经验
 ↓
学习
 ↓
更新记忆
 ↓
再次感知

这就是 SAI Framework 与简单条件程序之间最重要的区别之一。


本章核心认识

通过本章可以得到一个基本结论:

传统程序
Input
 ↓
Process
 ↓
Output

而 SAI Individual 更接近:

World
 ↓
Information
 ↓
Perception
 ↓
Cognition
 ↓
Memory
 ↓
Reasoning
 ↓
Decision
 ↓
Behavior
 ↓
Action
 ↓
World
 ↓
Feedback
 ↓
Experience
 ↓
Learning
 ↓
Update
 ↓
World

因此,为什么需要 SAI Framework,并不是因为传统程序不能执行规则,而是因为构建一个持续存在、能够感知环境、形成内部状态、使用记忆和经验、进行推理决策并产生行为的 模拟人工个体,需要一套统一的工程基础。

最终可以把本章压缩成一句话:

传统程序解决的是“程序如何执行”,SAI Framework 进一步解决的是“如何用软件工程结构构建一个能够持续感知、认知、记忆、推理、决策、行动、反馈和学习的模拟人工个体”。

本章结构关系

传统程序
   ↓
业务系统
   ↓
发现局限
   ↓
模拟人工个体需求
   ↓
信息
   ↓
环境 / 场景
   ↓
状态
   ↓
记忆 / 经验
   ↓
推理
   ↓
决策
   ↓
行为 / 行动
   ↓
反馈
   ↓
学习
   ↓
需要统一 Framework
   ↓
SAI Framework
   ↓
Individual

第2章完成。

Leave a Reply

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